Fetchmux MCP server
io.github.krutftw/fetchmux·v0.1.0Self-hosted retrieval router for AI agents: budgets, provider routing, route receipts.
0 stars17 downloads/wk
Reviews
Write oneNobody has reviewed Fetchmux yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Fetchmux tools (2)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
preview_search_routeShow eligible retrieval providers, estimated cost, component scores, and reason codes without calling a provider.
search_webRoute a web retrieval request by evidence quality, cost, latency, freshness, and hard policy limits.
Public scan report
scanner v0.1.9 · 2026-09-25 · same rubric, same numbers if you re-run it
- Code scan7 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 53 days ago12/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Fetchmux compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 78/100
- higher than 57% of 48,255 servers
- Tools
- 2
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 17
- more than 5% of 12,191 servers with a package
What its tools let an agent do: 2 read
Install Fetchmux in Claude Code, Cursor or VS Code
Runs npx -y @fetchmux/mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add fetchmux -- npx -y @fetchmux/mcp
What the publisher says
From the Fetchmux repository's README, as published. We do not edit it. Read it on GitHub
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:
"route": {
"selectedProvider": "brave",
"attemptedProviders": ["brave"],
"reasonCodes": ["TASK_MATCH", "WITHIN_BUDGET", "RELIABILITY_WEIGHT"],
"attempts": [
{ "provider": "brave", "outcome": "success", "latencyMs": 640, "estimatedCostUsd": 0.005 }
],
"estimatedCostUsd": 0.005,
"latencyMs": 640,
"fallbackUsed": false,
"traceId": "rt_b400e7c8"
}How it routes
agent ──▶ { query · task · maxCostUsd · maxLatencyMs }
│
▼
┌──────────────┐ your keys
│ FetchMux │ ─────▶ Brave · Tavily · Exa
│ policy │ Firecrawl · Crossref
└──────────────┘ ◀───── (bring your own)
│
▼
agent ◀── evidence[] + route receiptA 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:
git clone https://github.com/krutftw/fetchmux
cd fetchmux
npm install
npm run build
export FETCHMUX_API_KEY="a-long-random-key"
export CROSSREF_ENABLED=true
export CROSSREF_CONTACT_EMAIL="you@example.com"
npm run dev:gatewayFrom another shell:
curl http://127.0.0.1:8787/v1/search \
-H "Authorization: Bearer a-long-random-key" \
-H "Content-Type: application/json" \
-d '{ "query": "retrieval augmented generation", "task": "scholarly", "maxLatencyMs": 8000 }'To route real web search, set a provider key and use a web task instead:
export FETCHMUX_API_KEY="a-long-random-key"
export BRAVE_API_KEY="your-brave-key"
export BRAVE_COST_PER_REQUEST_USD="0.005" # from your provider plan
npm run dev:gatewayNew 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:
{
"mcpServers": {
"fetchmux": {
"command": "npx",
"args": ["-y", "@fetchmux/mcp"],
"env": {
"FETCHMUX_BASE_URL": "http://127.0.0.1:8787/",
"FETCHMUX_API_KEY": "your-gateway-key"
}
}
}
}Two read-only tools: searchweb and previewsearch_route.
Or use the typed SDK, @fetchmux/sdk:
import { FetchMux } from "@fetchmux/sdk";
const client = new FetchMux({
baseUrl: "http://127.0.0.1:8787/",
apiKey: process.env.FETCHMUX_API_KEY,
fetch: globalThis.fetch.bind(globalThis),
});Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Fetchmux: common questions
- Is Fetchmux MCP server safe?
- Mostly: it is graded B (78/100). Read the Fetchmux safety report
- How do I install Fetchmux?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Fetchmux need an API key?
- Yes. The registry entry asks for
FETCHMUX_API_KEY. - Is Fetchmux maintained?
- The last commit was 93 days ago (2026-08-03). The latest release is v0.1.0.
- What can I use instead of Fetchmux?
- Servers from other publishers that do the same job: treg.to MCP server.
- How does Fetchmux compare with other MCP servers?
- safety score 78/100 (higher than 57% of 48,255 servers); tools 2 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Fetchmux
Same job from other publishers: the closest match first, then the best rated.
- treg.toOpenRouter for tools and data. Compare catalog providers and call them from one hosted MCP endpoint.not reviewedEstablishedA