Mercury Parser

by koichikawamura

2 stars
462 downloads
Not rated
GitHub

About

Mercury Parser fetches web pages with a headless Chromium (via Playwright) to capture JavaScript-rendered content, then uses the Mercury Parser to extract the article and returns it as Markdown. It follows pagination links automatically. Designed for AI agents like Claude to…

Details

Author
koichikawamura
GitHub stars
2
Downloads
462
Categories
Other

- Automatically fetches web pages with headless Chromium for JS-rendered content
- Extracts articles as Markdown including title, author, date, summary, and content
- Follows pagination links automatically to capture full articles
- Falls back to direct fetch when Playwright fails, ensuring partial content
- Supports per-call proxy override and default proxy via environment variable
- Available over stdio or Streamable HTTP transport

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Mercury Parser
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

The server exposes a single tool called extract which takes a URL and optional proxy argument. It can be used via Claude Desktop (local stdio) by adding the configuration to claude_desktop_config.json, or run over Streamable HTTP for remote access. It can also be tested via CLI with node extractContent.js <url> [proxy].

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "mercury parser": {
            "mercury-parser": {
                "command": "npx",
                "args": [
                    "@koichikawamura/mercury-parser",
                    "mercury-parser-mcp"
                ]
            }
        }
    }
}

McpServers

{
    "mercury-parser": {
        "command": "npx",
        "args": [
            "@koichikawamura/mercury-parser",
            "mercury-parser-mcp"
        ]
    }
}

mercury-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.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.