关于 Web Page Fetcher
Web Page Fetcher 是一个 Go 编写的 MCP 服务,可抓取网页并转换为易读的结构化 Markdown,供需要网页内容的 AI 客户端使用,并提供 SSRF 防护和可选的 JavaScript 渲染。
主要功能
- 01提取易读的 Markdown
- 02保留标题、列表、表格和代码
- 03七层 SSRF 防护
- 04按域名限流与缓存
- 05可选图像处理和 JavaScript 渲染
适用场景
- 01在 AI 客户端中阅读文章和文档
- 02从新闻网站或论坛提取结构化内容
- 03启用渲染后抓取 JavaScript 密集型网页
MCP 相关
该 MCP 服务向兼容 MCP 的客户端提供 URL 抓取和 Markdown 内容。客户端可通过其命令在本地运行服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
paimon-mcp-fetch
让你的 AI 助手能够读取任意网页。
一个轻量级 MCP 服务,可获取 URL 并返回整洁、易读的 Markdown。使用 Go 构建——5 毫秒即可启动,占用约 10 MB 内存,无运行时依赖。
功能
提供一个 URL → 返回整洁的 Markdown。
适用于:
- 阅读文章、博客文章和文档
- 从新闻网站、论坛和日程表中提取数据
- 为 AI 助手总结网页内容
- 获取结构化输出(保留标题、列表、表格和代码块)
不适用于:
- 抓取需要登录才能访问的页面
- 绕过付费墙
- 替代完整的浏览器自动化工具
快速开始
1. 安装
选择一种方式:
# 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. 配置 AI 助手
将以下内容添加到 MCP 客户端配置中:
{
"mcp": {
"paimon-mcp-fetch": {
"type": "local",
"command": ["paimon-mcp-fetch"],
"enabled": true
}
}
}
3. 完成
现在,你的 AI 可以读取你提供的任意 URL。
为什么选择它,而不是其他获取工具?
| paimon-mcp-fetch | 基础文本获取工具 | |
|---|---|---|
| 输出 | 结构化 Markdown | 纯文本 |
| 文章提取 | Readability 算法(移除广告、导航栏和侧边栏) | 原始 HTML 正文 |
| 图片 | 可选提取和处理 | 无 |
| JS 渲染 | 可选(无头 Chrome) | 仅静态内容 |
| 缓存 | 内置 LRU 缓存 | 无 |
| 速率限制 | 按域名限制,可配置 | 无 |
| SSRF 防护 | 7 层防御 | 无 |
| 启动时间 | 约 5 毫秒 | 不定 |
| 内存占用 | 约 10 MB | 不定 |
配置
所有设置都通过环境变量控制。通常无需更改任何设置——默认值适用于大多数使用场景。
| 变量 | 默认值 | 功能 |
|---|---|---|
PAIMON_MCP_FETCH_TIMEOUT_MS | 12000 | 请求超时时间(毫秒) |
PAIMON_MCP_FETCH_MAX_HTML_BYTES | 10485760 | 页面大小上限(10 MB) |
PAIMON_MCP_FETCH_CACHE_TTL_SECS | 300 | 缓存时长(5 分钟) |
PAIMON_MCP_FETCH_RATE_LIMIT_PER_SECOND | 5.0 | 每个域名每秒的请求数 |
PAIMON_MCP_FETCH_RATE_LIMIT_BURST | 10 | 最大突发请求数 |
PAIMON_MCP_FETCH_RETRY_MAX_ATTEMPTS | 3 | 遇到暂时性错误时的重试次数 |
PAIMON_MCP_FETCH_JS_RENDER_ENABLED | false | 启用无头 Chrome |
可选功能
图片处理
从网页中提取并处理图片:
go build -tags image -o paimon-mcp-fetch ./cmd/paimon-mcp-fetch/
JS 渲染
适用于 JavaScript 密集型网站(SPA、动态内容):
go build -tags jsrender -o paimon-mcp-fetch ./cmd/paimon-mcp-fetch/
PAIMON_MCP_FETCH_JS_RENDER_ENABLED=true ./paimon-mcp-fetch
注意: 需要安装 Chrome 或 Chromium。速度较慢(每页约 3–5 秒),但可以处理静态获取无法处理的网站。
支持的 AI 助手
适用于任何兼容 MCP 的客户端。将以下配置添加到客户端的配置文件中。
OpenCode
配置文件: ~/.config/opencode/opencode.json
{
"mcp": {
"paimon-mcp-fetch": {
"type": "local",
"command": ["paimon-mcp-fetch"],
"enabled": true
}
}
}
Claude Desktop
配置文件: claude_desktop_config.json
{
"mcpServers": {
"paimon-mcp-fetch": {
"command": "paimon-mcp-fetch"
}
}
}
Cursor
配置文件: .cursor/mcp.json(项目级)或 ~/.cursor/mcp.json(全局)
{
"mcpServers": {
"paimon-mcp-fetch": {
"command": "paimon-mcp-fetch",
"env": {}
}
}
}
VS Code(GitHub Copilot)
配置文件: .vscode/mcp.json(工作区)或用户设置
{
"servers": {
"paimon-mcp-fetch": {
"type": "stdio",
"command": "paimon-mcp-fetch"
}
}
}
Cline
配置文件: .cline/mcp.json
{
"mcpServers": {
"paimon-mcp-fetch": {
"command": "paimon-mcp-fetch"
}
}
}
Windsurf
配置文件: .windsurf/mcp.json
{
"mcpServers": {
"paimon-mcp-fetch": {
"command": "paimon-mcp-fetch"
}
}
}
使用自定义配置
所有客户端都支持环境变量。以下示例自定义了超时时间和缓存:
{
"mcpServers": {
"paimon-mcp-fetch": {
"command": "paimon-mcp-fetch",
"env": {
"PAIMON_MCP_FETCH_TIMEOUT_MS": "30000",
"PAIMON_MCP_FETCH_CACHE_TTL_SECS": "600"
}
}
}
}
安全性
从一开始就将安全性纳入设计:
- SSRF 防护 — 通过 7 层防御抵御服务端请求伪造
- 私有 IP 屏蔽 — 无法访问 localhost 或内部网络
- 重定向验证 — 每次重定向跳转都会重新检查安全性
- 大小限制 — 基于流式读取,避免内存耗尽
- 超时 — 所有请求均设有截止时间
- 日志中不记录机密信息 — 永不记录 API 密钥和令牌
Windows 防病毒软件
某些防病毒软件可能会将未签名的 Go 二进制文件误报为威胁。这是业内已知问题。解决方案:
- 使用
go install— 防病毒软件会识别已签名的 Go 编译器 - 使用 Docker — 无需本地二进制文件
- 从源代码构建 — 自行验证代码
架构
基于整洁架构原则构建:
MCP Server → UseCase → Domain (entities, ports)
↑
Adapters implement interfaces
- Domain — 业务规则,不依赖任何外部组件
- UseCase — 编排逻辑
- Adapters — HTTP 客户端、内容提取器、缓存、速率限制器、图像处理器、JS 渲染器
详情请参阅项目计划。
许可证
MIT — 随你使用。
使用 Go 构建。零运行时依赖。单个二进制文件。约 10MB 内存。5ms 启动。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。