web2md-mcp-server
MCP Server for Web2MD — let Claude Code, Cursor, Codex, or
Claude Desktop convert webpages to clean Markdown, including the sites that block
server-side crawlers.
Quick start
npm i -g web2md-mcp-server && web2md-mcp-setup
That one command detects which MCP clients you have installed and configures each
one, then registers the local bridge to your Chrome. It signs itself in through
the browser if you have no credentials yet — there is nothing to paste.
Then fully quit and reopen Chrome (Cmd+Q on macOS, system tray on Windows).
Chrome only reads native-messaging manifests on a cold start, so closing the
window is not enough. This is the most common reason setup looks like it worked
and the tools are not there.
Why route through your browser
Server-side fetchers — including Firecrawl, Jina Reader, and the built-in fetch
in Claude Code and Cursor — request from datacenter IPs. Reddit, X, LinkedIn and
others block exactly that, and many render content client-side, so even a
successful request returns an empty shell.
Your browser has neither problem: valid cookies, a real TLS fingerprint, the
anti-bot challenge already passed. Measured on this setup:
| Reddit threads and listings | complete, 4,000–6,000 chars |
| Hacker News front page | complete, 42,264 chars |
| Lobsters, Product Hunt | complete |
| X — trending | works (trend titles with post counts) |
| X — profile and search | partial: page frame, not the timeline |
| Stack Overflow question index | failed |
| GitHub trending | failed (tab timeout) |
Coverage varies by site — test the ones you care about rather than assuming
blanket support. A batch of 5 subreddit pages took 31 seconds (~6s per URL,
processed sequentially because it is a real browser opening real tabs).
Manual configuration
The setup command above handles this for you. Use these only if you need to
configure a client by hand.
Claude Desktop
Add to your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"web2md": {
"command": "npx",
"args": ["web2md-mcp-server"],
"env": {
"WEB2MD_API_KEY": "w2m_your_api_key"
}
}
}
}
3. Configure Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"web2md": {
"command": "npx",
"args": ["web2md-mcp-server"],
"env": {
"WEB2MD_API_KEY": "w2m_your_api_key"
}
}
}
}
Windows Notes
npx not working?
If npx web2md-mcp-server fails on Windows with "not recognized", use node directly:
- Install globally:
npm install -g web2md-mcp-server
- Find the install path:
npm root -g
- Use this config instead:
{
"mcpServers": {
"web2md": {
"command": "node",
"args": ["C:\\Users\\<user>\\AppData\\Roaming\\npm\\node_modules\\web2md-mcp-server\\dist\\index.js"],
"env": {
"WEB2MD_API_KEY": "w2m_your_api_key"
}
}
}
}
Replace <user> with your Windows username, or run npm root -g to find the exact path.
Claude Desktop: use the standard installer
The Microsoft Store version of Claude Desktop cannot launch local MCP servers due to UWP sandboxing. Install Claude Desktop from claude.ai/download instead.
MCP Tools
convert_url
Convert a single webpage URL to Markdown.
Input: { url: "https://example.com/article" }
Output: { markdown: "# Article Title\n...", metadata: { title, wordCount, readingTime } }
batch_convert
Convert multiple URLs at once (up to 50).
Input: { urls: ["https://...", "https://..."] }
Output: [{ url, markdown, metadata }, ...]
agent_convert / agent_batch_convert
Convert URLs through the Chrome extension's real browser session (requires Agent Bridge setup). Works on Reddit, login-protected sites, and JS-rendered pages.
Agent Bridge
For full browser-based conversion (bypasses anti-bot), see Agent Bridge docs.
Links