
Fetchmux
io.github.krutftwPublished by GitHub account krutftwv0.1.0Updated Oct 27, 2026
Self-hosted retrieval router for AI agents: budgets, provider routing, route receipts.
Overview
MCP client for a self-hosted FetchMux gateway that routes AI agent searches across multiple providers under cost and latency budgets, returning route receipts.
- What you can do
- Run web searches through the self-hosted gateway, which picks an eligible provider under your policy and returns normalized results plus a route receipt.
- Preview the routing decision: ranked candidate providers and reason codes without calling any provider.
- Apply per-request cost ceilings and deadlines, with safe retries and fallback only on retryable failures.
- Both exposed tools are read-only.
- When to use it
- Use it when your agents need web or scholarly search but you want provider choice, spend limits and latency limits enforced by a gateway you host, and you want a trace of which provider ran and what it cost. It suits teams already running or willing to run the FetchMux gateway locally or in Docker.
- Requirements
- A running FetchMux gateway reachable at FETCHMUX_BASE_URL (default local port 8787) and a bearer key in FETCHMUX_API_KEY. The MCP server itself runs locally via npx. Provider keys such as BRAVE_API_KEY, TAVILY_API_KEY, EXA_API_KEY or FIRECRAWL_API_KEY are set on the gateway; the credential-free Crossref route needs CROSSREF_ENABLED and CROSSREF_CONTACT_EMAIL. Node.js is needed for the gateway and the npx package.
Installation
In SourceWeft
- Open Fetchmux in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
FetchMux
One search endpoint for AI agents. Put a router in front of Brave, Tavily, Exa, Firecrawl, and Crossref. Every request carries a hard cost ceiling and deadline; every response comes back with a receipt that says which provider ran, why, and what it cost.
Your agents stop hard-coding a provider into prompts and app code. They send one request shape; the gateway picks an eligible provider under a policy you control, enforces the budget and deadline before the call, retries safely on failure, and returns normalized results plus a full trace. You keep your provider keys — they never leave your gateway.
The receipt
Nothing is a black box. Every /v1/search response carries the routing decision:
How it routes
A provider is eligible only when its credentials, task fit, circuit state, spend, and deadline all pass. Budgets and deadlines are eligibility rules, not best-effort hints. Fallback happens only on retryable failures.
Quick start
No provider account needed — the public Crossref route runs out of the box:
From another shell:
To route real web search, set a provider key and use a web task instead:
New to Firecrawl? New accounts get 10% off the first month through this link (referral — FetchMux earns a small commission, no extra cost to you).
Use it from an agent
Point any MCP client (Claude, Cursor, and friends) at the published server:
Two read-only tools: search_web and preview_search_route.
Or use the typed SDK, @fetchmux/sdk:
Providers
Bring your own key for each. Set the matching *_API_KEY, plus an optional
*_COST_PER_REQUEST_USD if you want dollar budgets enforced.
REST endpoints
Full contract: docs/openapi.yaml.
All configuration variables
The process does not auto-load .env in local Node development; set variables in the shell or a
process manager. Docker Compose reads the ignored .env file.
See provider configuration before enabling maxCostUsd.
Run in Docker
Non-root Distroless image: Linux capabilities dropped, read-only root filesystem, provider credentials passed only at container start.
Benchmark
Validate every case and provider pairing with no network calls or credits:
Live mode needs provider keys and an explicit --confirm-live. Check each provider's terms before
publishing results — see the benchmark methodology.
What it is (and isn't)
Open source, self-hosted, single-tenant, BYOK. Route events go to stdout as JSON and exclude your query text, keys, and result content by default. No database, no telemetry.
It is not a hosted service, a pooled-credit reseller, or a claim that these providers are interchangeable. Provider names are the adapters it ships with, not partnerships. A hosted version is on the roadmap — star the repo to follow.
Development
More docs: product design · local development · deployment · provider configuration · data handling · incident response
Security issues: [email protected].
License
Apache-2.0. Free to self-host, modify, and redistribute.
Source: README.md at commit 18f8b31
Tools
0Version history
1- v0.1.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts