Overview
The Web2MD MCP server exposes Web2MD as a set of tools that AI assistants can call directly, using the Model Context Protocol (MCP) — an open standard for connecting AI models to external tools and data sources. Once configured, you can ask Claude, Cursor, or Windsurf to convert pages, search and sync your Library, batch-convert with the Chrome extension, or pull in a saved Skill — without leaving the conversation.The MCP server requires a Web2MD API key (PRO plan). Generate one from the dashboard, or run
npx web2md-cli login to authenticate once and share the key with the CLI automatically (see Authentication below).Connect claude.ai — no install
Web2MD also runs as a remote MCP server, so you can use it on claude.ai without installing anything:- In claude.ai, open Settings → Connectors → Add custom connector
- Enter the URL:
https://web2md.org/api/mcp - Complete the sign-in when prompted (OAuth — Google or email magic link)
convert_url, search_library and get_conversion. Custom connectors require a paid claude.ai plan.
One-command setup for local Agents
One command detects and configures every Agent on your machine — Claude Code, Codex, Cursor and Claude Desktop:Available tools
The MCP server provides 11 tools, grouped by what they do:convert_url
Fetches a URL server-side and returns the page content as Markdown, with title, word count, and reading time. Supports the same conversion options as the REST API (includeImages, includeLinks).
Example prompt: “Convert this URL to markdown: https://docs.example.com/getting-started”
bridge_convert_url
Converts a URL by fetching its HTML through your running Chrome extension (over a local HTTP bridge), then converting that HTML to Markdown server-side. Use this for pages the server can’t reach directly — Reddit, sites gated behind login, or heavily JS-rendered pages. Requires Chrome open with the Web2MD extension installed; the extension ID is auto-discovered from your API key. Example prompt: “Use the bridge to convert this Reddit thread: https://reddit.com/r/…“agent_convert
Converts a URL the same waybridge_convert_url does — through your Chrome extension — but over the Agent Bridge native-messaging channel instead of HTTP. Accepts an optional skill parameter: pass a Skill id or name and its body is appended to the returned Markdown so the agent can act on it immediately. Requires Chrome running with the extension and native host installed.
Example prompt: “Convert this page with the summarize skill applied: https://…“
agent_batch_convert
Same transport asagent_convert, but takes an array of up to 50 URLs and converts them sequentially in one call. Best for pulling many Reddit threads or JS-rendered pages in one go.
Example prompt: “Batch-convert these 12 URLs to Markdown: […]“
search_library
Searches your Web2MD Library — every page you’ve saved — by keyword (matches title and full page content) and/or tag, newest first. Returns compact metadata (id, title, url, date, tags), not the full Markdown. Free-plan accounts only see the most recent items in results; the tool tells you when results were truncated. Example prompt: “Search my library for anything about authentication”get_library_items
Fetches full Markdown content for Library items by id (up to 20 per call — usesearch_library first to find the ids). Responses can be large; for long pages, batch 5 or fewer ids per call.
Example prompt: “Get the full content of library items abc123 and def456”
sync_library
Syncs your entire Library to a local directory as Markdown files, organized by tag with frontmatter. Incremental by default (tracks a cursor in<dir>/.web2md-sync.json); pass full: true to re-scan everything. This is the same sync that web2md sync runs from the CLI — use whichever surface fits your workflow.
Example prompt: “Sync my library to ~/notes/web2md, tag ‘research’ only”
list_skills
Lists the Skills saved in your Web2MD cloud account as a compact array (id, name, description). Useget_skill to fetch one in full.
Example prompt: “What skills do I have saved?“
get_skill
Fetches the full SKILL.md-style body of one Skill by id or name — its instructions, description, and content in full. Uselist_skills first if you don’t know the id.
Example prompt: “Get my ‘summarize’ skill”
semantic_search / get_conversion (deprecated)
These two tools predate the Library. They still work but only see conversions saved through the old history API, not the full Library — new integrations should usesearch_library and get_library_items instead.
Authentication
The server resolves the API key in this order:WEB2MD_API_KEYenvironment variable, if set.- Otherwise,
~/.web2md/config.json— the same file written bynpx web2md-cli login(the CLI’s device-login flow). Runloginonce and both the CLI and MCP server pick up the key automatically, noenvblock needed.
login.
Setup
- Claude Desktop
- Cursor
- Windsurf
Open your Claude Desktop configuration file:If you’ve already run
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
web2md entry under mcpServers:npx web2md-cli login, you can drop the env block entirely — the server reads the key from ~/.web2md/config.json.Restart Claude Desktop. You should see the Web2MD tools appear in the tool picker.Usage examples
Once the MCP server is running, you can use natural language in your AI assistant:Convert a page to Markdown
Convert a page to Markdown
You: Convert this URL to markdown: https://react.dev/learn/thinking-in-reactAssistant: (calls
convert_url) Here is the converted Markdown for “Thinking in React”…Search and pull from your Library
Search and pull from your Library
You: Search my library for anything about authentication, then get the full content of the most recent oneAssistant: (calls
search_library, then get_library_items) I found 3 items related to authentication. Here’s the full content of the most recent one, “OAuth 2.0 Guide”…Sync your Library locally
Sync your Library locally
You: Sync my library to ~/notes/web2mdAssistant: (calls
sync_library) Synced 42 new items, 118 already up to date, 0 failed.Batch-convert with the extension
Batch-convert with the extension
You: Batch-convert these 8 Reddit threads: […]Assistant: (calls
agent_batch_convert) Converted 8/8 URLs successfully.Apply a saved Skill
Apply a saved Skill
You: What skills do I have, and can you apply “summarize” to this page: https://…Assistant: (calls
list_skills, then agent_convert with skill: "summarize") Here’s the page converted to Markdown, with the summarize skill applied below it…Troubleshooting
Tools don't appear after setup
Tools don't appear after setup
Make sure you have restarted the application after editing the configuration file. Verify that
npx -y web2md-mcp-server runs successfully in your terminal.Authentication errors
Authentication errors
Double-check that
WEB2MD_API_KEY is a valid w2m_ key, or that ~/.web2md/config.json has one (re-run npx web2md-cli login if unsure). You can verify your key on the API keys page.agent_convert / agent_batch_convert / bridge_convert_url fail
agent_convert / agent_batch_convert / bridge_convert_url fail
These tools require Chrome open with the Web2MD extension installed, and — for the
agent_* tools — the native host installed too. See Agent Bridge for setup.npx fails to resolve the package
npx fails to resolve the package
Try installing the package globally first:
npm install -g web2md-mcp-server, then change command to web2md-mcp-server and remove the args field.