cleanfetch
by belzorash
README.md
# 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
```bash
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:
```bash
npm run inspect
```
## Connect it to a client
**Claude Desktop / Claude Code / Cursor** — add to the MCP config:
```json
{
"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
TDQS
A4.2/5.0
Scored across 3 tools
Disambiguation5/5
Each tool targets a distinct aspect of web page analysis: links, metadata, and clean content. There is no functional overlap between extract_links, extract_metadata, and fetch_clean.
Naming Consistency4/5
Tools follow a verb_noun pattern, but fetch_clean uses 'fetch' while the other two use 'extract'. This is a minor inconsistency but still clear and predictable.
Tool Count5/5
Three tools is a well-scoped set for a clean fetching utility, covering the essential operations without unnecessary complexity.
Completeness5/5
The tools cover all key aspects of web page extraction: links, metadata, and clean content. No obvious gaps for the stated purpose of agent navigation and analysis.
Maintenance
ActivityStale
ResponsivenessNo issues