原因:
整理 GitHub 那些 forked 仓库,点到 Model Context Protocol/Server 在删除前,才想起来这是干什么。 看看有什么新功能?Fetch 功能有点儿用
官网链接:servers/src/fetch/README.md at main · modelcontextprotocol/servers · GitHub
Fetch MCP Server
Fetch MCP 服务器
1. 介绍:
一个提供网页内容获取功能的模型上下文协议(Model Context Protocol)服务器。该服务器使大语言模型能够获取和处理网页内容,并将 HTML 转换为更易于处理的 markdown 格式。
主要功能:
- 网页内容获取
- 格式转换
- 分块读取
2. Windows 11 上的配置
1) 在 Claude Desktop App 的配置
配置文件:C:\Users\(你的用户名)\AppData\Roaming\Claude\claude_desktop_config.json
刚发现,可以在 app 里进入了:左上角,点 “三” 横线 -> File -> Settings
当前我在用的:filesystem brave-search fetch
如果只用 fetch:
{
"mcpServers": {
"fetch": {
"command": "python",
"args": ["-m", "mcp_server_fetch"]
}
}
}
2)我使用的是 Python 方法
a. 必须要安装 Python 3.11
为了方便,改文件名:python.exe -> python311.exe
b. 创建一个 python 3.11 虚拟环境
Virtual Environment with Python 3.11
工作目录:Z:\2024-MyProgramFiles\6.Fetch_MCP_Server\
c. 安装依赖包
pip install mcp-server-fetch
d. 创建目录、并复制文件到目录中
- ./src/mcp_server_fetch/ 目录里 3 个文件
- .pyproject.toml
- .uv.lock
以上一共 5 个文件,一个 2 层的子目录
就是这样,如下图:
3)在 Python 环境中运行
python -m mcp_server_fetch
使用之前的 批处理 文件启动,鼠标点一下运行。
@echo off
@chcp 65001 > NUL
rem 支持中文,使用 UTF-8 代码,并抑制屏幕输出
rem set /p venv_name=请输入虚拟环境名称(直接回车默认为venv):
if "%venv_name%"=="" set venv_name=venv
rem 让用户输入虚拟环境名称,如果没有输入则使用默认值 venv
cd /d %~dp0
rem 鼠标点击后,在批处理文件,当前目录执行以下。
IF EXIST %venv_name%\Scripts\activate.bat (
rem 检查虚拟环境是否存在
echo 虚拟环境已存在,直接激活...
call .\%venv_name%\Scripts\activate.bat
rem 运行虚拟机
) ELSE (
echo 创建虚拟环境...
python -m venv --upgrade-deps %venv_name%
rem 创建虚拟机
rem Python 3.9 以上, --upgrade-deps 可以自动将 pip 和 setuptools 升级到最新版本
rem 如果使用 requirements.txt 管理依赖项,建议指定pip版本号
call .\%venv_name%\Scripts\activate.bat
rem 运行虚拟机
echo 从 requirements.txt 安装依赖项
pip install -r requirements.txt > NUL
rem 安装依赖项
)
rem 以下,依据需要保留:
echo 启动 app.py 主程序
rem 用于启动 fetch mcp server
python -m mcp_server_fetch
pause
rem 暂停批处理执行,以便看到结果
cmd /k
rem cmd 窗口在执行完成后保持打开状态,用于没有 主程序 状态。
4)验证:在 Claude Desktop App
如上图,点这三个地点,就出现下图:
粘贴 url 到输入框: https://modelcontextprotocol.io/tutorials/building-mcp-with-llms
点提交后,会多出一个附件,如下图:
点开附件 fetch txt 后是:
在 Prompt 中随便输入提示词,比如 “翻译成国文” (中文去了魂,比日文认识的多些、也靠猜、但顺眼,不会写,49年以前的中化文明就剩 中药)
3. 自定义配置选项
- robots.txt 哪些页面可以访问、哪些不能访问的规则文件,示例如下:
User-agent: *
Disallow: /admin/ # 禁止访问管理目录
Disallow: /private/ # 禁止访问私有目录
Disallow: /*.php$ # 禁止访问所有 PHP 文件
Allow: /public/ # 允许访问公共目录
Crawl-delay: 5 # 访问间隔 5 秒
Crawl-delay: 10 # 设置抓取延迟
- User-Agent 设置:在 config json 中 "args": ["-m", "mcp_server_fetch", "--ignore-robots-txt", "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"] 忽略 robots.txt 并使用 User-Agent 自定义为浏览器样式
结束语:
这个功能很好,抓取内容扔给 AI,只要 URL 就行:直接让 Claude Fetch MCP Server 抓取,不用粘贴,也不用写程序。但内容不能太长,因为在 server.py 代码写着: max_length(默认是 5000 字符),应该能改大些 5万试试。
Modified 错字 on 12feb.2025