关于 FetchV2
FetchV2 是一个 MCP 服务,可将网页提取为整洁的 Markdown,供需要阅读或研究网络内容的 Agent 和客户端使用。它还支持批量抓取、链接发现和 llms.txt 索引读取。
主要功能
- 01将网页正文提取为 Markdown
- 02单次请求抓取最多 10 个页面
- 03发现并筛选页面链接
- 04读取 llms.txt 索引及其链接页面
- 05返回原始 HTML、表格和链接
- 06分页返回较长内容
适用场景
- 01一次收集多个文档页面
- 02查找文档站点中的指南链接
- 03读取 llms.txt 并获取相关文档
MCP 相关
FetchV2 向 MCP 客户端提供网页抓取和链接发现工具,也提供用于抓取 URL 或研究主题的提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 要抓取的网页 URL(必须以 http:// 或 https:// 开头) |
| max_length | integer | 否 | 要返回的最大字符数。摘要使用 1000–2000;完整内容使用 5000(默认值)。 |
| start_index | integer | 否 | 用于分页的字符偏移量。截断响应中出现 'start_index=N' 时,请使用其中的值。 |
| get_raw_html | boolean | 否 | 跳过内容提取并返回原始 HTML。需要原始标记或提取失败时使用。 |
| include_links | boolean | 否 | 在 Markdown 中保留超链接。启用后可跟进引用链接。 |
| include_tables | boolean | 否 | 在 Markdown 中保留表格。仅处理纯文本文章时可禁用。 |
| include_metadata | boolean | 否 | 在顶部包含标题、作者和日期。禁用可节省令牌。 |
| bypass_robots_txt | boolean | 否 | 跳过 robots.txt 检查。仅用于用户发起的请求。 |
详细介绍
FetchV2 MCP 服务
FetchV2 是一个 Model Context Protocol(MCP)服务,可检索网页并返回整洁的 Markdown。 它使用 Trafilatura 移除导航栏、广告、页脚和其他页面元素。
功能
| 工具 | 用途 |
|---|---|
fetch | 获取一个网页并提取其主要内容 |
fetch_batch | 在一次请求中获取最多 10 个网页 |
discover_links | 查找并筛选网页上的链接 |
fetch_llms_txt | 读取 llms.txt 索引,并可选择获取其链接的页面 |
FetchV2 可以返回原始 HTML、保留链接和表格,并对较长内容进行分页。
fetch 工具默认会检查 robots.txt。
快速开始
要求
- 安装
uv。 - 安装 Python 3.11 或更高版本:
uv python install 3.11
安装到 Cursor 或 VS Code
| Cursor | VS Code |
|---|---|
| 安装 MCP 服务 | 在 VS Code 上安装 |
配置其他 MCP 客户端
将此服务定义添加到 MCP 客户端配置中:
{
"mcpServers": {
"fetchv2": {
"command": "uvx",
"args": ["fetchv2-mcp-server@latest"]
}
}
}
常见配置文件位置:
- macOS 上的 Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows 上的 Claude Desktop:
%APPDATA%\Claude\claude_desktop_config.json - Windsurf:
~/.codeium/windsurf/mcp_config.json - Kiro:项目中的
.kiro/settings/mcp.json
安装到 Python 环境
如果要直接安装此软件包,请使用以下命令之一:
uv add fetchv2-mcp-server
pip install fetchv2-mcp-server
试用
让 MCP 客户端执行以下任务:
- “获取
<URL>中的文档。” - “查找
<docs URL>中包含tutorial的链接。” - “阅读这些页面并总结它们的差异:
[url1, url2, url3]。”
典型文档工作流
首先,查找相关页面:
discover_links(url="https://docs.example.com/", filter_pattern="/guide/")
然后,在一次请求中获取选定的页面:
fetch_batch(
urls=[
"https://docs.example.com/guide/intro",
"https://docs.example.com/guide/setup",
]
)
工具参考
fetch
获取一个网页,并将其主要内容提取为 Markdown。
fetch(
url: str,
max_length: int = 5000,
start_index: int = 0,
get_raw_html: bool = False,
include_metadata: bool = True,
include_tables: bool = True,
include_links: bool = False,
bypass_robots_txt: bool = False,
) -> str
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
url | str | 必填 | 网页 URL |
max_length | int | 5000 | 返回的最大字符数 |
start_index | int | 0 | 分页的字符偏移量 |
get_raw_html | bool | False | 返回未经提取的原始 HTML |
include_metadata | bool | True | 包含标题、作者和日期 |
include_tables | bool | True | 在 Markdown 中保留表格 |
include_links | bool | False | 在 Markdown 中保留链接 |
bypass_robots_txt | bool | False | 跳过 robots.txt 检查,以执行用户请求的网页获取 |
如果响应内容被截断,请在下一次调用中使用返回的 start_index 值。
fetch_batch
抓取最多 10 个网页并合并结果。
fetch_batch(
urls: list[str],
max_length_per_url: int = 2000,
get_raw_html: bool = False,
) -> str
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
urls | list[str] | 必填 | 要抓取的网页 URL |
max_length_per_url | int | 2000 | 每个 URL 最多返回的字符数 |
get_raw_html | bool | False | 返回未经提取的原始 HTML |
此工具会在结果中报告抓取失败的 URL,并继续处理其他 URL。
它不会检查 robots.txt。
discover_links
查找网页上的链接,并可选择使用正则表达式筛选链接。
discover_links(url: str, filter_pattern: str = "") -> str
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
url | str | 必填 | 要扫描的网页 URL |
filter_pattern | str | "" | 用于筛选链接的正则表达式 |
此工具会解析相对链接,并最多返回 100 个 URL。
fetch_llms_txt
读取 llms.txt 文件并列出其中的文档链接。
fetch_llms_txt(
url: str,
include_content: bool = False,
max_length_per_url: int = 2000,
) -> str
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
url | str | 必填 | llms.txt 文件的 URL |
include_content | bool | False | 抓取所有链接页面的内容 |
max_length_per_url | int | 2000 | 每个链接页面最多返回的字符数 |
默认情况下,此工具只抓取 llms.txt 索引。
设置 include_content=True 可抓取所有链接页面。
此选项可能会返回较大的响应。
此工具会根据 llms.txt URL 解析相对 URL,例如 /docs/guide.md。
提示词
fetch_manual会创建抓取并总结一个 URL 的请求。research_topic会创建研究某个主题的请求,并可选提供 URL。
开发
克隆仓库并安装开发依赖项:
git clone https://github.com/praveenc/fetchv2-mcp-server.git
cd fetchv2-mcp-server
uv sync --dev
运行测试:
uv run pytest
使用 MCP Inspector 运行服务:
uv run mcp dev src/fetchv2_mcp_server/server.py
运行 lint 和类型检查:
uv run ruff check .
uv run pyright
贡献
提交更改前,请阅读 CONTRIBUTING.md。
支持
使用 GitHub 问题跟踪器报告问题或请求功能。
许可证
此项目采用 MIT 许可证。 详情请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。