About Mercury Parser
Mercury Parser is an MCP server that extracts web articles as Markdown. It renders JavaScript with headless Chromium before parsing, follows pagination links, and can fall back to direct fetching when browser navigation fails.
Key features
- 01Extract article metadata and content as Markdown
- 02Render JavaScript pages with Playwright
- 03Follow pagination links
- 04Configure a proxy per request
- 05Fall back to direct fetching
Use cases
- 01Convert web articles into Markdown
- 02Extract content from JavaScript-rendered pages
- 03Retrieve paginated article content
MCP support
It exposes an `extract` tool that accepts a page URL and an optional proxy, returning article details and content as Markdown. It supports stdio and Streamable HTTP transports.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEmercury-parser
An MCP wrapper around jocmp/mercury-parser (a maintained fork of Postlight Parser). Fetches a web page with a headless Chromium (Playwright) so JavaScript-rendered content is captured, then runs Mercury Parser to extract the article and returns it as Markdown. Follows pagination links automatically.
Tool
The server exposes a single tool:
extract
| Argument | Type | Required | Description |
|---|---|---|---|
url | string | yes | URL of the page to extract |
proxy | string | no | Proxy URL for the headless browser, e.g. http://host:port, socks5://host:port, http://user:pass@host:port. Overrides the MERCURY_PROXY env var for this call. |
Returns the article as Markdown (title, author, date, summary, content). On Playwright failure (HTTP/2 protocol errors, navigation timeouts, etc.) falls back to a direct fetch via Mercury Parser so partial content is still returned.
Environment variables
| Variable | Default | Description |
|---|---|---|
MCP_TRANSPORT | stdio | stdio or http. Use http for remote/Streamable HTTP transport. |
MCP_HOST | 127.0.0.1 | Bind address when MCP_TRANSPORT=http. |
MCP_PORT | 3000 | Bind port when MCP_TRANSPORT=http. |
MCP_PATH | /mcp | URL path when MCP_TRANSPORT=http. |
MERCURY_PROXY | — | Default proxy for the headless browser. Overridden per-call by the proxy tool argument. |
Usage
Claude Desktop (local stdio)
Add to claude_desktop_config.json:
{
"mcpServers": {
"mercury-parser": {
"command": "npx",
"args": [
"@koichikawamura/mercury-parser",
"mercury-parser-mcp"
]
}
}
}
To route the headless browser through a proxy on every call:
{
"mcpServers": {
"mercury-parser": {
"command": "npx",
"args": [
"@koichikawamura/mercury-parser",
"mercury-parser-mcp"
],
"env": {
"MERCURY_PROXY": "socks5://localhost:1080"
}
}
}
}
Remote MCP (Streamable HTTP)
Run the server over HTTP — useful behind a reverse proxy / Cloudflare Tunnel:
MCP_TRANSPORT=http \
MCP_HOST=127.0.0.1 \
MCP_PORT=3030 \
MERCURY_PROXY=http://your-proxy:3128 \
npx @koichikawamura/mercury-parser mercury-parser-mcp
Clients reach it at http://<host>:<port>/mcp. Pair with mcp-remote on the client side, or register directly as a connector in Claude.ai / ChatGPT if the endpoint is gated by an OAuth-aware proxy (e.g. Cloudflare Access).
CLI (ad-hoc testing)
node extractContent.js <url> [proxy]
Requirements
- Node.js 18+
- Playwright Chromium (auto-installed on first launch if missing)
License
MIT — see LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.