微信公众号文章解析器MCP服务器
这是一个基于 Python FastMCP 框架实现的 MCP 服务器,用于解析微信公众号文章并将其内容导出为 Markdown 格式。
功能
- 从微信公众号文章 URL 中抓取文章内容。
- 提取文章标题、作者、发布时间、正文、图片和视频链接。
- 将文章内容转换为 Markdown 格式。
- 支持 JSON 和 Markdown 两种输出格式。
- 提供简洁和详细两种输出级别。
- 自动处理响应截断以遵守字符限制。
项目结构
mcp-server-wechat-article-parser/
├── src/
│ └── mcp_server_wechat_article_parser/
│ ├── server.py # MCP server 主文件
│ ├── tools/
│ │ ├── __init__.py
│ │ └── parse_wechat_article.py # 微信文章解析工具
│ └── utils/
│ ├── __init__.py
│ ├── api_client.py # API 请求辅助 (网页抓取)
│ ├── formatters.py # 响应格式化
│ └── errors.py # 错误处理
├── pyproject.toml
├── README.md
└── tests/安装
- 克隆仓库 (如果适用):
git clone
cd mcp-server-wechat-article-parser- 创建并激活虚拟环境:
python -m venv venv
.\venv\Scripts\activate # Windows
# source venv/bin/activate # macOS/Linux- 安装依赖:
pip install --upgrade pip
pip install -e .这将安装 pyproject.toml 中定义的所有依赖,包括 fastmcp, httpx, pydantic, beautifulsoup4, markdownify 和 lxml。
使用 fastmcp dev 进行调试
fastmcp dev 命令提供了一个交互式界面,用于测试和调试 MCP 服务器。
- 启动调试服务器:
fastmcp dev src/mcp_server_wechat_article_parser/server.py:mcp这会启动 MCP Inspector UI (通常在端口 5173) 和代理服务器。您可以在浏览器中打开 Inspector UI 来与您的工具进行交互。
- 在 Inspector UI 中测试工具:
- 在 Inspector UI 中,您应该能看到 parse_wechat_article 工具。 - 输入一个微信公众号文章 URL,选择输出格式和详细级别,然后执行工具。 - 查看工具的输出和任何潜在的错误。
已实现的工具
parse_wechat_article
- 描述: 解析微信公众号文章,提取其内容并以指定格式返回。
- 输入:
- article_url (HttpUrl): 要解析的微信公众号文章的 URL。 - format (Literal\["json", "markdown"\], default="markdown"): 响应的输出格式。 - detail (字面\[“简洁”,“详细”\],默认=“详细”):详细级别。
- 输出: 格式化后的文章内容字符串。
- 错误处理:
InvalidUrlError,ArticleNotFoundError,ParsingError,UnknownError。
传输协议配置
默认情况下,服务器使用 STDIO 传输协议,适用于本地调试和与 Claude Desktop 等客户端集成。
如果您需要远程访问或多客户端支持,可以配置为 HTTP 传输协议:
在 src/mcp_server_wechat_article_parser/server.py 中,取消注释并修改以下行:
# mcp.run(transport="http", host="127.0.0.1", port=8000)然后重新启动服务器。
部署
要将此 MCP 服务器部署到客户端,您可以使用 fastmcp install 命令:
fastmcp install src/mcp_server_wechat_article_parser/server.py:mcp这将生成一个配置文件,客户端可以使用该文件来连接和使用您的 MCP 服务器。
示例
以下是如何在 fastmcp dev 环境中调用 parse_wechat_article 工具的示例:
Markdown 详细输出:
{
"tool_code": "parse_wechat_article(article_url=\"https://mp.weixin.qq.com/s/example_article_id\", format=\"markdown\", detail=\"detailed\")"
}JSON 简洁输出:
{
"tool_code": "parse_wechat_article(article_url=\"https://mp.weixin.qq.com/s/another_article_id\", format=\"json\", detail=\"concise\")"
}