Skip to main content
Glama
README.md
# 微信公众号文章解析 MCP Server

基于 FastMCP 框架实现的微信公众号文章内容解析 MCP(Model Context Protocol)服务器。

## 功能特性

- ✅ 解析微信公众号文章 URL
- ✅ 提取文章标题、作者、发布时间
- ✅ 提取文章正文(纯文本格式)
- ✅ 提取文章摘要/描述
- ✅ **LLM 深度分析**:使用大语言模型进行语义分析、观点提取、结构分析
- ✅ 专注于文字内容解析,不处理图片
- ✅ 基于 FastMCP 框架,使用 stdio 传输
- ✅ 遵循 MCP 规范,与所有 MCP 客户端兼容

## 环境准备

### 1. 创建虚拟环境

```bash
# 创建虚拟环境
python -m venv venv

# 激活虚拟环境
# macOS/Linux:
source venv/bin/activate
# Windows:
venv\Scripts\activate
```

### 2. 安装依赖

```bash
pip install -r requirements.txt
```

如果网络较慢,可以使用国内镜像源:

```bash
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```

## 运行服务

```bash
python server.py
```

## 在 Cursor 中配置 MCP

编辑 `~/.cursor/mcp.json`,添加以下配置:

```json
{
  "mcpServers": {
    "wechat-article-parser": {
      "command": "python3",
      "args": ["/绝对路径/wechat-article-parser-mcp/server.py"]
    }
  }
}
```

重启 Cursor,即可使用微信公众号文章解析功能!

### 配置 LLM API(可选,用于深度分析)

如果需要使用 `analyze_with_llm` 工具,需要配置智谱 AI API Key。

**配置方式:环境变量(在 MCP 配置中)**

在 `~/.cursor/mcp.json` 中配置 API Key(已在安装步骤中配置):

```json
{
  "wechat-article-parser": {
    "command": "python3",
    "args": ["/path/to/server.py"],
    "env": {
      "ZHIPU_API_KEY": "your-zhipu-api-key-here"
    }
  }
}
```

**获取 API Key:**
访问 https://open.bigmodel.cn/ 注册并获取 API Key

## 可用工具

### parse_article

解析微信公众号文章,生成详细摘要(使用 LLM 生成至少十句话的摘要,总结全文和分段要点)。

**参数:**
- `url` (必填): 微信公众号文章 URL,例如:`https://mp.weixin.qq.com/s/...`

**返回示例:**
```json
{
  "success": true,
  "url": "https://mp.weixin.qq.com/s/...",
  "title": "文章标题",
  "author": "作者名称",
  "publish_time": "2024-01-01 12:00:00",
  "summary": "使用 LLM 生成的详细摘要(至少十句话,总结全文和分段要点)...",
  "metadata": {
    "charset": "utf-8",
    "content_type": "text/html"
  }
}
```

**使用示例:**
```
parse_article(
    url="https://mp.weixin.qq.com/s/xxxxx"
)
```

### analyze_with_llm

使用大语言模型进行深度语义分析和观点提取(推荐)。

**参数:**
- `url` (可选): 微信公众号文章 URL,如果提供则自动解析文章内容
- `title` (可选): 文章标题,如果不提供 URL 则必须提供
- `author` (可选): 作者名称
- `content` (可选): 文章正文内容,如果不提供 URL 则必须提供
- `save_path` (可选): 保存分析结果的 Markdown 文件路径,如果不提供则自动生成文件名
- `model` (可选): LLM 模型名称,默认 "glm-4",可选 "glm-4-flash", "glm-3-turbo" 等(智谱 AI)
- `analysis_type` (可选): 分析类型,默认 "comprehensive"(综合分析),可选 "viewpoint"(观点提取)、"structure"(结构分析)

**分析类型说明:**
- **comprehensive**(综合分析):完整分析,包括观点、结构、论证方式、语言风格、价值评估
- **viewpoint**(观点提取):专注于观点提取和分析,包括核心观点、分论点链条、论证方式、观点价值
- **structure**(结构分析):专注于文章结构分析,包括整体结构、段落组织、过渡衔接、层次划分、可读性

**返回示例:**
```json
{
  "success": true,
  "message": "LLM analysis completed successfully",
  "file_path": "文章标题-LLM综合分析.md",
  "file_size": 12345,
  "article_info": {
    "title": "文章标题",
    "author": "作者名称",
    "content_length": 1234
  },
    "analysis_info": {
      "type": "comprehensive",
      "model": "glm-4",
      "provider": "zhipu",
      "method": "LLM semantic analysis"
    }
}
```

**使用示例:**

方式 1:综合分析(默认)
```
analyze_with_llm(
    url="https://mp.weixin.qq.com/s/xxxxx"
)
```

方式 2:只提取观点
```
analyze_with_llm(
    url="https://mp.weixin.qq.com/s/xxxxx",
    analysis_type="viewpoint"
)
```

方式 3:只分析结构
```
analyze_with_llm(
    url="https://mp.weixin.qq.com/s/xxxxx",
    analysis_type="structure"
)
```

方式 4:指定分析类型和模型
```
analyze_with_llm(
    url="https://mp.weixin.qq.com/s/xxxxx",
    model="glm-4",
    analysis_type="viewpoint"
)
```

方式 5:使用不同的模型
```
analyze_with_llm(
    url="https://mp.weixin.qq.com/s/xxxxx",
    model="glm-4-flash"
)
```

**注意**:此工具需要智谱 AI API Key,会产生 API 调用费用。推荐使用 `glm-4` 模型,国内服务稳定且成本较低。

## 使用场景

### 场景 1:快速获取文章摘要

使用 `parse_article` 工具,快速获取文章标题、作者、发布时间,以及使用 LLM 生成的详细摘要(至少十句话,总结全文和分段要点)。

### 场景 2:LLM 深度分析(推荐)

使用 `analyze_with_llm` 工具进行深度语义分析:
- **观点提取**:自动识别核心观点和分论点链条
- **结构分析**:分析文章结构、段落组织、逻辑关系
- **论证方式**:识别使用的论证方式并评估效果
- **语言风格**:分析语言特点、表达技巧、可读性
- **价值评估**:评估观点价值、传播潜力、目标读者

## 技术实现

### 核心技术栈

- **FastMCP**: MCP 服务器框架
- **requests**: HTTP 请求库
- **BeautifulSoup4**: HTML 解析库
- **lxml**: XML/HTML 解析器(BeautifulSoup 后端)

### 解析流程

1. **URL 验证**:验证是否为有效的微信公众号文章 URL
2. **HTTP 请求**:使用 requests 发送 GET 请求,模拟浏览器访问
3. **HTML 解析**:使用 BeautifulSoup 解析 HTML 内容
4. **信息提取**:
   - 标题:从 `<h1>` 标签提取
   - 作者:从作者相关的 CSS 类提取
   - 发布时间:从时间相关的标签提取
   - 正文:从 `rich_media_content` 或 `js_content` 提取纯文本
   - 摘要:从 meta 标签提取
5. **内容清理**:移除 HTML 标签、脚本、样式,提取纯文本
6. **LLM 摘要生成**(parse_article):使用 LLM 生成详细摘要(至少十句话,总结全文和分段要点)
7. **结果返回**:返回 JSON 格式的结构化数据

## 注意事项

1. **反爬虫机制**:微信公众号可能有反爬虫机制,建议:
   - 控制请求频率
   - 使用合适的 User-Agent
   - 避免频繁请求同一公众号

2. **内容合法性**:确保解析和使用微信公众号文章内容符合相关法律法规和平台规定。

3. **URL 格式**:确保提供的是完整的微信公众号文章 URL,格式通常为:
   - `https://mp.weixin.qq.com/s/xxxxx`
   - `https://weixin.qq.com/s/xxxxx`

4. **内容更新**:微信公众号文章内容可能会更新,解析结果可能因时间而异。

## 开发

### 运行测试

```bash
# 运行所有测试
pytest

# 运行测试并生成覆盖率报告
pytest --cov=server --cov-report=html

# 运行类型检查
mypy server.py
```

### 项目结构

```
.
├── server.py              # MCP 服务器主程序
├── requirements.txt       # Python 依赖包
├── README.md              # 项目文档(本文件)
├── .gitignore             # Git 忽略文件
└── tests/                 # 测试目录(可选)
    └── test_server.py      # 服务器单元测试
```

## 许可证

MIT License

## 贡献

欢迎提交 Issue 和 Pull Request!

Maintenance

ActivityInactive
ResponsivenessNo issues