mcpField
W
Web Page Fetcher

Web Page Fetcher

Local
github.comBrowser Automation3Updated 26w ago

About Web Page Fetcher

Web Page Fetcher is a Go MCP server that retrieves webpages and converts them into readable, structured Markdown. It is for AI clients that need page content, with SSRF defenses and optional JavaScript rendering.

Key features

  1. 01Readable Markdown extraction
  2. 02Heading, list, table, and code preservation
  3. 03Seven-layer SSRF protection
  4. 04Per-domain rate limiting and caching
  5. 05Optional image processing and JavaScript rendering

Use cases

  1. 01Read articles and documentation in an AI client
  2. 02Extract structured content from news sites or forums
  3. 03Fetch pages from JavaScript-heavy sites with rendering enabled

MCP support

The MCP server provides URL fetching and Markdown content to MCP-compatible clients. Clients can run it locally using its command.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository
Packages
mcpbpaimon-mcp-fetch-0.1.2-windows-amd64.zip

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

paimon-mcp-fetch

Give your AI assistant the ability to read any webpage.

A lightweight MCP server that fetches URLs and returns clean, readable markdown. Built with Go — starts in 5ms, uses ~10MB RAM, zero runtime dependencies.

Release Go Version License


What It Does

You give it a URL → it returns clean markdown.

Good for:

  • Reading articles, blog posts, documentation
  • Extracting data from news sites, forums, schedules
  • Summarizing web content for your AI assistant
  • Getting structured output (headings, lists, tables, code blocks preserved)

Not good for:

  • Scraping login-protected pages
  • Bypassing paywalls
  • Replacing a full browser automation tool

Quick Start

1. Install

Pick one method:

# Go (recommended)
go install github.com/paimonchan/paimon-mcp-fetch/cmd/paimon-mcp-fetch@latest

# Homebrew (macOS/Linux)
brew tap paimonchan/tap
brew install paimon-mcp-fetch

# Scoop (Windows)
scoop bucket add paimonchan https://github.com/paimonchan/scoop-bucket
scoop install paimon-mcp-fetch

# Winget (Windows)
winget install paimonchan.paimon-mcp-fetch

# Docker
docker run -i --rm ghcr.io/paimonchan/paimon-mcp-fetch:latest
2. Configure Your AI Assistant

Add this to your MCP client config:

{
  "mcp": {
    "paimon-mcp-fetch": {
      "type": "local",
      "command": ["paimon-mcp-fetch"],
      "enabled": true
    }
  }
}
3. Done

Your AI can now read any URL you give it.


Why This Over Other Fetch Tools?

paimon-mcp-fetchBasic text fetch
OutputStructured markdownPlain text
Article extractionReadability algorithm (strips ads, nav, sidebars)Raw HTML body
ImagesOptional extraction + processingNone
JS renderingOptional (headless Chrome)Static only
CachingBuilt-in LRU cacheNone
Rate limitingPer-domain, configurableNone
SSRF protection7-layer defenseNone
Startup time~5msVaries
Memory~10MBVaries

Configuration

Everything is controlled via environment variables. You probably don't need to change anything — defaults work well for most use cases.

VariableDefaultWhat it does
PAIMON_MCP_FETCH_TIMEOUT_MS12000Request timeout (ms)
PAIMON_MCP_FETCH_MAX_HTML_BYTES10485760Max page size (10MB)
PAIMON_MCP_FETCH_CACHE_TTL_SECS300Cache lifetime (5 min)
PAIMON_MCP_FETCH_RATE_LIMIT_PER_SECOND5.0Requests/sec per domain
PAIMON_MCP_FETCH_RATE_LIMIT_BURST10Max burst size
PAIMON_MCP_FETCH_RETRY_MAX_ATTEMPTS3Retry on transient errors
PAIMON_MCP_FETCH_JS_RENDER_ENABLEDfalseEnable headless Chrome

Optional Features

Image Processing

Extract and process images from webpages:

go build -tags image -o paimon-mcp-fetch ./cmd/paimon-mcp-fetch/
JS Rendering

For JavaScript-heavy sites (SPAs, dynamic content):

go build -tags jsrender -o paimon-mcp-fetch ./cmd/paimon-mcp-fetch/
PAIMON_MCP_FETCH_JS_RENDER_ENABLED=true ./paimon-mcp-fetch

Note: Requires Chrome or Chromium installed. Slower (~3-5s/page) but handles sites that static fetch can't.


Supported AI Assistants

Works with any MCP-compatible client. Add the configuration below to your client's config file.

OpenCode

Config file: ~/.config/opencode/opencode.json

{
  "mcp": {
    "paimon-mcp-fetch": {
      "type": "local",
      "command": ["paimon-mcp-fetch"],
      "enabled": true
    }
  }
}
Claude Desktop

Config file: claude_desktop_config.json

{
  "mcpServers": {
    "paimon-mcp-fetch": {
      "command": "paimon-mcp-fetch"
    }
  }
}
Cursor

Config file: .cursor/mcp.json (project) or ~/.cursor/mcp.json (global)

{
  "mcpServers": {
    "paimon-mcp-fetch": {
      "command": "paimon-mcp-fetch",
      "env": {}
    }
  }
}
VS Code (GitHub Copilot)

Config file: .vscode/mcp.json (workspace) or user settings

{
  "servers": {
    "paimon-mcp-fetch": {
      "type": "stdio",
      "command": "paimon-mcp-fetch"
    }
  }
}
Cline

Config file: .cline/mcp.json

{
  "mcpServers": {
    "paimon-mcp-fetch": {
      "command": "paimon-mcp-fetch"
    }
  }
}
Windsurf

Config file: .windsurf/mcp.json

{
  "mcpServers": {
    "paimon-mcp-fetch": {
      "command": "paimon-mcp-fetch"
    }
  }
}
With Custom Configuration

All clients support environment variables. Example with custom timeout and cache:

{
  "mcpServers": {
    "paimon-mcp-fetch": {
      "command": "paimon-mcp-fetch",
      "env": {
        "PAIMON_MCP_FETCH_TIMEOUT_MS": "30000",
        "PAIMON_MCP_FETCH_CACHE_TTL_SECS": "600"
      }
    }
  }
}

Security

Built with security in mind from day one:

  • SSRF Protection — 7-layer defense against server-side request forgery
  • Private IP blocking — Can't access localhost or internal networks
  • Redirect validation — Every redirect hop re-checked for safety
  • Size limits — Stream-based reading, no memory bombs
  • Timeouts — All requests have deadlines
  • No secrets in logs — API keys and tokens never logged
Windows Antivirus

Some antivirus may flag unsigned Go binaries as a false positive. This is a known industry issue. Solutions:

  1. Use go install — antivirus sees the signed Go compiler
  2. Use Docker — no local binary
  3. Build from source — verify the code yourself

Architecture

Built with Clean Architecture principles:

MCP Server → UseCase → Domain (entities, ports)
                        ↑
            Adapters implement interfaces
  • Domain — Business rules, zero external dependencies
  • UseCase — Orchestration logic
  • Adapters — HTTP client, content extractor, cache, rate limiter, image processor, JS renderer

Full details in the project plan.


License

MIT — do whatever you want with it.


Built with Go. Zero runtime dependencies. Single binary. ~10MB RAM. Starts in 5ms.

Comments

Markdown supported

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.