wexin-read-mcp 微信公众号文章阅读 MCP 服务器技术分析
一、概述
1. 项目简介
wexin-read-mcp 是一个极简的 MCP(Model Context Protocol)服务器,旨在让大模型能够阅读微信公众号文章。该项目使用浏览器模拟技术绕过微信平台的反爬虫机制,实现了自动化内容提取功能。
2. 核心问题
微信公众号文章内容无法被大模型直接访问,主要面临以下挑战:
- 微信平台严格的反爬虫机制
- 动态加载的内容需要完整的浏览器环境
- 需要模拟真实用户行为才能获取完整内容
3. 解决方案
通过 MCP 协议标准,创建一个中间服务层,使用 Playwright 浏览器自动化工具模拟真实用户访问,提取文章内容后返回给大模型。
二、技术架构
1. 系统组成
graph LR
A[用户/Claude] -->|1. 发送URL| B[MCP Server]
B -->|2. 启动浏览器| C[Playwright]
C -->|3. 访问URL| D[微信服务器]
D -->|4. 返回HTML| C
C -->|5. 提取内容| B
B -->|6. 返回JSON| A2. 核心组件
A. MCP Server
- 职责:实现 MCP 协议,提供工具接口
- 框架:基于 fastmcp 构建
- 接口:read_weixin_article(url)
B. Playwright 浏览器自动化
- 职责:模拟真实浏览器访问
- 功能:处理 JavaScript 渲染、Cookie、Headers 等
C. 内容提取器
- 职责:从 HTML 中提取结构化数据
- 工具:BeautifulSoup4
- 提取内容:标题、作者、发布时间、正文
3. 工作流程
sequenceDiagram
participant U as 用户
participant M as MCP Server
participant P as Playwright
participant W as 微信服务器
U->>M: 1. 发送文章URL和需求
M->>P: 2. 启动浏览器
P->>W: 3. 访问文章URL
W-->>P: 4. 返回完整HTML
P->>M: 5. 提取结构化内容
M->>U: 6. 返回JSON数据
U->>U: 7. 大模型分析内容三、技术实现
1. 技术栈
- Python 3.10+
- fastmcp:MCP 协议框架
- Playwright:浏览器自动化
- BeautifulSoup4:HTML 解析
2. 核心功能
read_weixin_article 工具
参数:
- url:微信公众号文章 URL,格式为 https://mp.weixin.qq.com/s/xxx
返回结构:
{
"success": true,
"title": "文章标题",
"author": "作者名",
"publish_time": "2025-11-05",
"content": "文章正文内容...",
"error": null
}3. 安装配置
依赖安装
pip install -r requirements.txtClaude 配置
在 Claude 配置文件中添加 MCP 服务器:
{
"mcpServers": {
"weixin-reader": {
"command": "python",
"args": ["C:/Users/你的用户名/Desktop/wx-mcp/wx-mcp-server/src/server.py"]
}
}
}4. 使用示例
在 Claude 中直接使用自然语言:
请帮我总结这篇文章:https://mp.weixin.qq.com/s/nEJhdxGea-KLZA_IGw9R5AClaude 会自动调用 read_weixin_article 工具获取文章内容并进行分析。
四、技术亮点
1. 浏览器模拟
使用 Playwright 完整模拟浏览器环境,包括:
- JavaScript 执行
- Cookie 管理
- Headers 设置
- 用户代理伪装
2. 极简实现
以最少的代码实现核心功能,代码结构清晰易懂。
3. MCP 标准协议
遵循 MCP 协议标准,可与其他 MCP 工具和服务无缝集成。
五、注意事项
1. 使用限制
- 仅用于个人学习和研究
- 遵守微信公众平台服务协议
- 不建议高频爬取(建议间隔大于 2 秒)
- 不用于商业用途
2. 技术风险
- 微信反爬虫策略可能随时更新
- IP 地址可能被限制访问
- 需要定期维护更新
六、项目信息
- 仓库地址:https://github.com/Bwkyd/wexin-read-mcp
- 开源协议:MIT License
- Stars:143
- Forks:21
- 主要语言:Python 100%