使用说明
web获取mcp
web-fetch-mcp 是一个独立的HTTP模型上下文协议服务器,它获取网页并将清理后的markdown和结构化元数据返回给MCP兼容的客户端。
它的作用
- 显示一个MCP工具:
web_fetch - 获取
http://和https://基于流式HTTP的URL - 将HTML/XHTML转换为干净的markdown
- 传递纯文本并将JSON/XML封装在围栏代码块中
- 自动分块超大的降价响应和报告分页元数据
- 支持基于选择器的提取和链接/图像输出控制
- 添加SSRF保护、重定向验证、超时限制、大小限制、可选的API-key身份验证和持续速率限制
需求
- Node.js
24.x或更高版本 - npm
11.x或更高版本
快速入门
安装依赖项并复制示例环境文件:
npm install
cp .env.example .env
在本地启动服务器:
npm run dev
验证运行状况终结点:
curl http://localhost:3000/health
呼叫 web_fetch 直接:
curl -X POST http://localhost:3000/mcp \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "web_fetch",
"arguments": {
"url": "https://example.com"
}
},
"id": 1
}'
仅打印markdown块:
curl -sS -X POST http://localhost:3000/mcp \
-H "Accept: application/json, text/event-stream" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "web_fetch",
"arguments": {
"url": "https://example.com"
}
},
"id": 2
}' | jq -r '.result.content[0].text'
工具合同
web_fetch
- 输入:
{
"url": "https://...",
"chunk": 0,
"chunkSize": 15000,
"selector": "#main-content",
"extractMain": true,
"includeLinks": true,
"includeImages": false,
"timeoutMs": 5000
}
- 输出:
content[0].text:已清除请求块的markdownstructuredContent.metadata:最终URL、内容类型、HTTP状态、字节数、标记大小和估计令牌structuredContent.pagination:当转换后的markdown跨越多个块时显示
- 当前行为:仅返回原始提取的内容;它没有总结
配置
运行时配置存在 .env支持的变量记录在 .env.example.
脚本
npm run dev
npm run build
npm start
npm test
文档
- docs/how-it-works.md:请求流、支持的内容类型和安全模型
- docs/remote-access.md:连接其他机器、VM、Claude Code或Codex
- docs/sample-requests.md:复制粘贴MCP请求和降价检查示例
- docs/roadmap.md:未来可能的改进
备注
- 服务器仅支持HTTP。如果需要HTTPS,请使用反向代理。
- MCP POST端点预期
Accept: application/json, text/event-stream. - 集成测试打开本地HTTP侦听器。在受限沙盒中,它们可能需要提升权限。