Custom Fetch MCP
by lyshrines
README.md
# Claude Custom Fetch MCP
为使用第三方 API 的 Claude Code 用户提供网页抓取能力的 MCP 服务器。
## 解决什么问题
Claude Code 内置的 `WebFetch` 工具依赖 Anthropic 官方 API 的服务端能力。当你使用第三方 API 提供商(SiliconFlow、自建网关等)时,`WebFetch` 无法正常工作。
本 MCP 服务器在本地发起 HTTP 请求抓取网页,不依赖任何 API 提供商,只要你的电脑能上网就能工作。
## 功能
- **网页抓取**:抓取网页并提取正文内容(去除广告、导航等干扰元素)
- **智能缓存**:基于 SQLite 的本地缓存,避免重复请求(默认 1 小时过期)
- **API 检测**:自动检测当前 Claude Code 的 API 配置
- **网络测试**:测试到各网站的连通性
### 限制
- 无法抓取需要 JavaScript 渲染的页面(如 SPA 应用、聊天界面等)
- 无法抓取需要登录的页面
## 安装
### 1. 克隆仓库并安装依赖
```bash
git clone https://github.com/lyshrines/claude-custom-fetch-mcp
cd claude-custom-fetch-mcp
pip install -r requirements.txt
pip install truststore
```
### 2. 配置 Claude Code
在你的项目根目录(或 home 目录)创建 `.mcp.json`:
```json
{
"mcpServers": {
"custom-fetch": {
"command": "python",
"args": ["-m", "mcp_fetch.server"],
"env": {
"PYTHONPATH": "/path/to/claude-custom-fetch-mcp",
"USERPROFILE": "C:\\Users\\YourName",
"CACHE_TTL": "3600",
"MAX_CACHE_SIZE_MB": "100",
"LOG_LEVEL": "INFO"
}
}
}
}
```
> **Windows 用户注意**:`env` 中需要显式设置 `USERPROFILE`,否则日志路径解析可能失败。
### 3. 启用 MCP 服务器
在 `~/.claude/settings.json` 中添加:
```json
{
"enabledMcpjsonServers": ["custom-fetch"]
}
```
重启 Claude Code,在 `/mcp` 中应能看到 `custom-fetch` 已启用。
### 4. 推荐:在 CLAUDE.md 中添加指令
```
# 联网抓取
当需要抓取网页内容时,优先使用 custom-fetch MCP 的 `fetch_url` 工具,而非内置 WebFetch(内置 WebFetch 在非官方 API 下不可用)。
```
## 提供的工具
### `fetch_url`
抓取网页并提取内容。
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|------|------|------|--------|------|
| `url` | string | 是 | - | 要抓取的 URL |
| `use_cache` | boolean | 否 | true | 是否使用缓存 |
| `extract_main` | boolean | 否 | true | 是否只提取正文 |
| `timeout` | number | 否 | 15 | 超时时间(秒) |
### `detect_api_provider`
检测当前 Claude Code 的 API 配置,判断是否使用官方 API。
### `cache_stats`
查看缓存统计信息。
### `clear_cache`
清理缓存。`older_than` 参数指定清理多少秒前的条目,0 表示全部清理。
### `network_test`
测试到指定网站的连通性。`sites` 参数传入 URL 列表。
## 依赖
- Python 3.10+
- `mcp` - MCP SDK
- `requests` - HTTP 客户端
- `truststore` - 使用系统 SSL 证书
- `readability-lxml` - 正文提取
- `beautifulsoup4` - HTML 解析
- `lxml` - XML/HTML 处理
## 许可证
MIT License
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues