Web Reader
by zacfire
README.md
# MCP Web Reader
一个强大的 MCP (Model Context Protocol) 服务器,让 Claude 和其他大语言模型能够读取和解析网页内容。支持突破访问限制,轻松获取微信文章、时代杂志等受保护内容。
## 功能特点
- 🚀 **三引擎支持**:集成 Jina Reader API、本地解析器和 Playwright 浏览器
- 🔄 **智能降级**:Jina Reader → 本地解析 → Playwright 浏览器三层自动切换
- 🌐 **突破限制**:使用 Playwright 处理 Cloudflare、验证码等访问限制
- 📦 **批量处理**:支持同时获取多个 URL
- 🎯 **灵活控制**:可选择强制使用特定解析方式
- 📝 **Markdown 输出**:自动转换为清晰的 Markdown 格式
## 安装
### 方法 1:从源码安装
```bash
# 克隆仓库
git clone https://github.com/zacfire/mcp-web-reader.git
cd mcp-web-reader
# 安装依赖
npm install
# 构建项目
npm run build
# 安装 Playwright 浏览器(必需)
npx playwright install chromium
```
### 方法 2:使用 npm 安装(如果已发布)
```bash
npm install -g mcp-web-reader
```
## 配置
在 Claude Desktop 的配置文件中添加:
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"web-reader": {
"command": "node",
"args": ["/absolute/path/to/mcp-web-reader/dist/index.js"]
}
}
}
```
## 使用方法
配置完成后,在 Claude 中可以使用以下命令:
1. **智能获取(推荐)**
* "请获取 [https://example.com](https://example.com) 的内容"
* 自动三层降级:Jina Reader → 本地解析 → Playwright 浏览器
2. **批量获取**
* "请获取这些网页:[url1, url2, url3]"
* 每个URL都享受智能降级策略
3. **强制使用 Jina Reader**
* "使用 Jina Reader 获取 [https://example.com](https://example.com)"
4. **强制使用本地解析**
* "使用本地解析器获取 [https://example.com](https://example.com)"
5. **强制使用浏览器模式**
* "使用浏览器获取 [https://example.com](https://example.com)"
* 直接跳过其他方式,适用于确定有访问限制的网站
## 支持的受限网站类型
✅ **微信公众号文章** - 自动绕过访问限制
✅ **时代杂志、纽约时报** - 突破付费墙和地区限制
✅ **Cloudflare 保护网站** - 通过真实浏览器绕过检测
✅ **需要 JavaScript 渲染的页面** - 完整执行页面脚本
✅ **有验证码/人机验证的网站** - 模拟真实用户行为
## 工具列表
- `fetch_url` - 智能获取(三层降级:Jina → 本地 → Playwright)
- `fetch_url_with_jina` - 强制使用 Jina Reader
- `fetch_url_local` - 强制使用本地解析器
- `fetch_url_with_browser` - 强制使用 Playwright 浏览器(突破访问限制)
- `fetch_multiple_urls` - 批量获取多个 URL
## 技术架构
### 智能降级策略
```
用户请求 URL
↓
1. Jina Reader API (最快,成功率高)
↓ 失败
2. 本地解析器 (Node.js + JSDOM)
↓ 检测到访问限制
3. Playwright 浏览器 (真实浏览器,突破限制)
```
### 访问限制检测
自动识别以下情况并启用浏览器模式:
- HTTP 状态码:403, 429, 503, 520-524
- 错误关键词:Cloudflare, CAPTCHA, Access Denied, Rate Limit
- 内容关键词:Security Check, Human Verification
## 开发
```bash
# 开发模式(自动重新编译)
npm run dev
# 构建
npm run build
# 测试运行
npm start
# 安装浏览器二进制文件(首次使用必需)
npx playwright install chromium
```
## 性能优化
- ⚡ **浏览器实例复用** - 避免重复启动开销
- 🚫 **资源过滤** - 阻止图片、样式表等不必要加载
- 🎯 **智能选择** - 优先使用快速方法,必要时才用浏览器
- 💾 **优雅关闭** - 正确清理浏览器资源
## 贡献
欢迎提交 Pull Request!
## 许可证
MIT License
TDQS
A3.8/5.0
Scored across 5 tools
Disambiguation5/5
Each tool has a distinct purpose: batch fetching, default with fallback, local parsing, browser rendering, and Jina-only. Descriptions clearly differentiate when to use each, minimizing confusion.
Naming Consistency5/5
All tools follow a consistent 'fetch_url' prefix with modifiers for specific strategies (local, browser, jina, multiple). Naming pattern is predictable and uniform.
Tool Count5/5
Five tools cover the core functionality of a web reader without redundancy. The count is well-scoped for the domain.
Completeness5/5
The tool surface covers all common fetching scenarios: single URL with fallback, forced local, forced browser (for restricted sites), forced Jina (for complex pages), and batch fetching. No obvious gaps for the stated purpose.
Maintenance
ActivityInactive
ResponsivenessNo issues