cleanfetch
An MCP server that gives AI agents clean, reliable web reading. One job, done well.
| Tool | Input | Output | | --- | --- | --- | | fetch_clean | a URL | the page's main content as clean Markdown + title/byline (nav/ads/scripts stripped) | | extract_links | a URL | all hyperlinks with anchor text, classified internal/external | | extract_metadata | a URL | title, description, canonical, robots, Open Graph, JSON-LD, headings outline |
Why this exists
Agent builders constantly need to read web pages — but the generic fetchers choke on real-world HTML, return nav/ad noise, or get blocked. Reliability is the moat: a server that consistently returns clean, structured content is worth paying for. There are 14,000+ MCP servers listed and almost none are production-hardened or monetized — that's the opening.
Run it locally
npm install
npm run build
npm start # runs on stdio
# or, no build step:
npm run dev
Sanity-check the tools with the MCP Inspector:
npm run inspect
Connect it to a client
Claude Desktop / Claude Code / Cursor — add to the MCP config:
{
"mcpServers": {
"cleanfetch": {
"command": "node",
"args": ["/Users/alexandre/projects/mcp-cleanfetch/dist/index.js"]
}
}
}
Then ask the agent: "Use fetch_clean to read https://example.com and summarize it."
Config (env vars)
CLEANFETCH_UA— override the User-Agent.CLEANFETCH_TIMEOUT_MS— request timeout (default 15000).
---
Go-to-market (the actual point)
1. List it everywhere (free distribution). Submit to the MCP directories — this is the "App Store moment", and free-tier listings rank highest:
- PulseMCP — https://www.pulsemcp.com/
- Glama — https://glama.ai/mcp/servers
- Smithery — https://smithery.ai/
- Awesome MCP Servers (GitHub PR) — https://github.com/punkpeye/awesome-mcp-servers
- The official MCP registry.
Publish to npm so npx mcp-cleanfetch works, and add a 30-second demo GIF to the README.
2. Harden the moat (what makes it paid-worthy). Roadmap, in order of value:
- JS rendering fallback (Playwright) for client-side-rendered pages.
- Rotating proxies + retry/anti-bot handling for sites that block plain fetch.
- Caching + rate limiting.
batch_fetch(many URLs in one call),search(query → top results → clean content).
3. Monetize. Free tier = local stdio (what's here). Paid tier = a hosted HTTP MCP endpoint with an API key + usage billing:
- Host the server over the Streamable HTTP transport (the SDK supports it).
- Meter calls per key; bill with Stripe (Stripe shipped MCP/usage billing rails in 2026)
or a usage-billing layer. Typical pricing in this category: a free tier + ~$20–40/mo, or per-call credits. Realistic target: $0.5–3K MRR per server — cheap enough to run several.
4. Validate before hardening. Ship the free version, list it, and watch installs/usage. If a tool gets real pull, that's the signal to build the paid hosted tier. Don't build billing for a server nobody installs.
License
MIT











