Reported issues for mcp-omnisearch
Pod holds 24 of 30 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to mcp-omnisearch.
Most discussed
Cross-provider failover and cooldown after 429/outage
Parent: #187
Current behavior
A 429, billing suspension, or timeout fails that one provider call. The tool does not automatically try the next configured search engine or cool the failing one down.
Request
For single-path / auto-routed calls:
- On transient errors (429, 503, timeout), retry with the existing backoff helper, then fail over to the next eligible provider.
- After repeated failures, cool that provider down for a stepped window (e.g. 1m / 5m / 25m / 1h) so the next calls s
Read the thread · 2026-08-16 · closed · external user · 1 comment
Query-intent auto-routing when provider is omitted
Parent: #187
Current behavior
The agent must pass provider on web_search / ai_search / web_extract. Omnisearch does not score the query and pick a backend.
Request
When provider is omitted (or set to auto):
- Score configured providers from query signals (freshness, semantic discovery, docs/code, news, etc.).
- Pick one winner. This is not fan-out.
- Break ties with a documented priority list.
- If no provider is eligible, fail visibly (do not invent results).
Keep ex
Read the thread · 2026-08-16 · closed · external user · 1 comment
RRF merge, URL/title dedupe, and per-result provenance
Parent: #187
Current behavior
Each search response is a single vendor list. There is no cross-provider merge, URL/title identity, or per-hit provenance from multiple engines.
Request
When more than one provider returns results (see the fan-out issue):
- Canonicalize identity on URL and title.
- Fuse ranks with reciprocal rank fusion (RRF), e.g.
sum(1 / (k + rank))with a documentedk(hub default is 60). - Keep a
sourceslist on each fused hit: provider, original rank, optional
Read the thread · 2026-08-16 · closed · external user · 1 comment
Optional concurrent multi-provider fan-out on web_search
Parent: #187
Current behavior
web_search accepts one provider and performs one vendor call. Covering Exa + Tavily + Brave requires the agent to issue three tool calls, which most clients will not do.
Request
Add an optional multi-provider path that is off unless asked for:
- Keep
provider: "exa"(and the other current values) as a single-path call. - Allow something like
providers: ["exa", "tavily", "brave"]orprovider: "all"/mode: "parallel". - Start the selected c
Read the thread · 2026-08-16 · closed · external user · 1 comment
[RFC] Agent-native payment gating for MCP Omnisearch — pay-per-search query via x402
Hi — I've been working on Tomopay, a payment gateway for MCP servers that lets agents pay per tool call via x402 (USDC stablecoins) or Stripe.
I forked your repo and added withPayments() — here's the working fork: https://github.com/tomopay/mcp-omnisearch
With this, agents using MCP Omnisearch would pay $0.01 per search query automatically. No API key management needed on the agent side.
Each provider call (Tavily, Kagi, Perplexity, Brave) could be gate
Read the thread · 2026-04-01 · closed · external user · 1 comment
invalid type for parameter 'provider' in tool web_search
I'm getting the error in the subject in cursor. Remove the PATH env var doesn't help much, using it just to verify i'm on the latest node version.
"mcp-omnisearch": {
"command": "npx",
"args": ["-y", "mcp-omnisearch"],
"env": {
"TAVILY_API_KEY": "XXX",
"PATH": "/Users/oryba/.nvm/versions/node/v24.12.0/bin:${env:PATH}"
},
},
Read the thread · 2025-12-15 · closed · external user · 5 comments
[Feature Request] Serp/Serper Support
Requesting addition of serp/serper search APIs
Read the thread · 2025-08-26 · closed · external user · 5 comments
Question on firecawl...
Hey there, is it possible to specify a firecrawl URL as an environment variable? I self host firecrawl and would like to use a local instance.
Read the thread · 2025-08-06 · closed · external user · 3 comments
Most recent
Docker image crashes because MCPO and MCP dependencies are incompatible
Hello, I'm just getting started in self-hosted AI and appreciate your work on this versatile MCP. I'm attempting to set up a Docker Compose stack with Ollama, Open WebUI and this MCP. I support your decision not to publish a full Docker container, just a Dockerfile for us to build. However, it currently has a problem. I'm going to attempt a patch for this.
Summary
The Docker image currently builds successfully but fails to start at runtime. The container enters a restart loop because the `
Read the thread · 2026-08-18 · closed · external user · 1 comment
Cost gates so expensive providers stay explicit-only
Parent: #187
Current behavior
Any registered provider is equally callable. There is no way to keep an expensive or surprising engine (e.g. Parallel advanced, deep Exa) configured for explicit calls but out of auto / fan-out / failover.
Request
Per-provider auto_allow (default true for current cheap/known engines; false for new expensive ones):
- Explicit
provider: "parallel"still works when the key exists. autorouting, failover, and optionalallfan-out skip `auto_allow=
Read the thread · 2026-08-16 · closed · external user · 1 comment
HTTP bearer auth and per-token rate limits for remote deploys
Parent: #187
Current behavior
Omnisearch is typically stdio. Remote HTTP deploys (Docker, Kubernetes, ToolHive) need an auth story and a way to stop one client from blasting every vendor key.
Request
When serving HTTP / Streamable HTTP off loopback:
- Require static bearer tokens (
AUTH_TOKENS), unique and nonblank. - Per-token sliding-window rate limit (hub default 120 req / minute).
- Unauthenticated traffic shares one tight bucket or is rejected.
- Keep
/health(or equivalent) f
Read the thread · 2026-08-16 · closed · external user · 1 comment
get_provider_info tool for non-secret provider metadata
Parent: #187
Current behavior
Clients discover providers by reading tool schemas or guessing env keys. There is no tool that lists configured, non-secret provider metadata at runtime.
Request
Add get_provider_info (or a resource) that returns, for each registered provider:
- id, tools it serves (search / extract / ai / github)
- tags / weight if routing exists
- timeout, estimated cost
- enabled / cooldown / last error type
- no keys, no tokens, no raw secrets
Why
Agents and
Read the thread · 2026-08-16 · closed · external user · 1 comment
Optional downstream MCP backends for official remotes
Parent: #187
Current behavior
Omnisearch talks to vendor HTTP APIs directly. It cannot treat an official remote MCP (Exa, Tavily, Firecrawl, Parallel, …) as a backend and only own planning / timeout / merge.
Request
Optional provider type: downstream MCP (transport URL or command + env), with:
- mapped tool name
- query / limit argument names
result_pathand field aliases (title/url/snippet/score)- per-provider timeout and estimated cost
$ENVreferences for headers, no in
Read the thread · 2026-08-16 · closed · external user · 1 comment
Provider benchmark command
Parent: #187
Current behavior
There is no built-in way to race configured providers on a fixed query suite and get a recommended priority order.
Request
A CLI or MCP tool that:
- Runs a small fixed suite (docs, vendor release, community, non-English) against every configured search provider.
- Reports success rate, median latency, result volume, simple quality (unique URLs, snippet coverage).
- Prints a recommended
providerpriority and the exact config change to apply. - Does **not
Read the thread · 2026-08-16 · closed · external user · 1 comment
Spam/mirror filter and domain diversity
Parent: #187
Current behavior
Result lists are passed through as the vendor ranked them. SEO scrapers, content mirrors, and 10 hits from one domain all stay in place.
Request
Optional quality layer (default can be conservative):
- Drop known Stack Overflow / GitHub content mirrors and SEO scrapers (
blocked_domains, overridable). - Cap results per registrable domain (e.g. max 2 keep position; overflow moves behind).
- Exempt
site:/include_domainsqueries so constrained searches
Read the thread · 2026-08-16 · closed · external user · 1 comment
Adaptive routing from recent provider health
Parent: #187
Current behavior
Provider choice does not learn from recent latency, empty results, or errors. A provider that is currently failing keeps getting selected until the agent notices.
Request
If auto-routing ships:
- Record latency / error / empty-result outcomes in a small rolling window (e.g. last 50 calls / 7 days).
- Apply a bounded score adjustment (web-search-plus uses ±1.0) so currently healthy providers win close calls.
- Do not override strong explicit query-class si
Read the thread · 2026-08-16 · closed · external user · 1 comment
Locale defaults for country and language
Parent: #187
Current behavior
Locale/region is left to each provider's defaults (often US/EN) or to operators in the query string. There is no server-wide country/language default.
Request
- Config defaults:
country(ISO 3166-1 alpha-2) andlanguage(ISO 639-1 orauto). - Per-call overrides win.
- Apply only to providers that have region/lang parameters; others unchanged.
- Return resolved locale + source (
config|param|inferred) in metadata. - Query language should not
Read the thread · 2026-08-16 · closed · external user · 1 comment
News search vertical on web_search
Parent: #187
Current behavior
web_search is a general web search. There is no first-class news vertical that maps to providers that have one (and reports applied=false for those that do not).
Request
Add search_type: search (default) | news.
- Use a native news endpoint where it exists.
- Otherwise run normal search and set
search_type.applied=false. - Invalid values error clearly.
Why
“What happened today” queries should not depend on the agent stuffing news into t
Read the thread · 2026-08-16 · closed · external user · 1 comment
Unified freshness filter (day / week / month / year)
Parent: #187
Current behavior
Recency is provider-specific (Kagi before:/after:, Tavily date fields, etc.). There is no one freshness argument that the server translates per vendor.
Request
Add a unified freshness on web_search: day | week | month | year (case-insensitive).
- Map to each provider's native parameter (Brave
pw, Tavily dates, ExastartPublishedDate, …). - If a provider has no recency support, still run the search and set
freshness.applied=falsein
Read the thread · 2026-08-16 · closed · external user · 1 comment
Additional providers: You.com, Parallel, Querit, TinyFish, Keenable
Parent: #187
Current behavior
Search/extract lineup is Tavily, Brave, Kagi, Exa, Linkup, Firecrawl (+ GitHub as its own tool). That set is good. Several widely used agent-search APIs are missing.
Request
Add opt-in providers (key missing = not registered, same as today):
- You.com (
YOU_API_KEY) — fast LLM-ready web search + extract - Parallel (
PARALLEL_API_KEY) — search + long excerpts / extract; keep explicit-only if pricing is surprising - Querit (
QUERIT_API_KEY) — multilingua
Read the thread · 2026-08-16 · closed · external user · 1 comment
Opt-in routing and quality diagnostics on tool responses
Parent: #187
Current behavior
Tool results do not explain why a provider was chosen, skipped, or cooled down. There is no opt-in quality report.
Request
Add an opt-in flag (e.g. quality_report: true) that can include:
- selected provider and reason
- provider scores (if auto-routing exists)
- skipped / cooldown / auto-excluded providers
- result counts, duplicate-URL rate, extract-recommended hint
Default off so normal payloads stay small.
Why
Without this, routing and failo
Read the thread · 2026-08-16 · closed · external user · 1 comment
Partial-success metadata for selected, failed, and timed-out providers
Parent: #187
Current behavior
A provider error is typically the whole tool error. The caller does not get a structured split of which engines were selected, succeeded, failed, or timed out.
Request
On multi-provider (and optionally auto-routed) calls, return metadata:
selectedsuccessfulfailed(error type only, not raw exception text)timed_out- optional
preempted/ cooldown skips
Keep returning whatever results did succeed.
Why
Operators need to debug “why
Read the thread · 2026-08-16 · closed · external user · 1 comment
Request budgets: max providers, timeout, and estimated cost
Parent: #187
Current behavior
There is no request-level cap on how many providers may run, how long the whole search may take, or how much estimated USD a plan may spend. Timeouts exist per HTTP call, not as an orchestrator budget.
Request
Add optional request budgets:
max_providers(mcp-search-hub default is 3 — a max, not a min)timeout_secondsfor the whole fan-out (hub default 20s), cancel the rest- optional
budget_usdusing per-provider estimated cost; reject impossibl
Read the thread · 2026-08-16 · closed · external user · 1 comment
Search result cache with TTL
Parent: #187
Current behavior
Every web_search hits the vendor live. There is no query/provider/limit cache.
Request
- Cache search results locally (or in-process) keyed by normalized query, provider, limit, and relevant filters.
- Default TTL on the order of 1 hour, configurable.
- Bypass flag for fresh results (
no_cache/ env). - Cache write failures must be non-fatal.
- Do not cache a multi-provider response that is only a partial failure as if it were complete (mcp-search-hub r
Read the thread · 2026-08-16 · closed · external user · 1 comment
The remaining reports are on the project's issue tracker.