ArticleMcp - 微信公众号文章管理服务
ArticleMcp 是一个基于 Go 语言开发的微信公众号文章管理服务,提供了草稿箱管理和文章发布功能,并通过 Model Context Protocol (MCP) 提供了工具接口。
功能未完全测试,只搭好了框架,后续优化。
功能特性
-
草稿管理
- 发送文章到草稿箱
- 获取草稿箱列表
- 删除草稿
-
文章发布
- 发布最新草稿
- 根据标题发布特定草稿
- 获取已发布文章列表
-
MCP 工具接口
- 通过 MCP 协议提供工具接口,可以与支持 MCP 的 AI 助手集成
项目结构
ArticleMcp/
├── cmd/
│ └── server/
│ └── main.go # 服务器主程序
├── pkg/
│ └── wechat/
│ ├── service.go # 微信公众号核心服务
│ ├── service_test.go # 微信公众号服务测试用例
│ ├── server.go # 应用服务器
│ ├── mcp_handlers.go # MCP 工具处理函数
│ └── mcp_server.go # MCP 服务器初始化
├── wechat_example_main.go # 微信公众号功能使用示例
├── TEST_CASES.md # 详细测试用例说明
├── MCP_TOOLS.md # MCP 工具详细说明
├── README.md # 项目说明文档
├── go.mod # Go 模块定义
└── go.sum # Go 模块校验和
安装和配置
- 确保已安装 Go 1.23.6 或更高版本
- 克隆项目到本地
- 运行
go mod tidy下载依赖
配置说明
在使用服务之前,需要配置微信公众号的以下信息:
AppID: 微信公众号的 AppIDAppSecret: 微信公众号的 AppSecretToken: 微信公众号的 Token
使用方法
1. 直接使用微信公众号服务
go run wechat_example_main.go
2. 启动 MCP 服务器
go run cmd/server/main.go
服务器将在 http://localhost:8080 上运行,并提供以下端点:
标准端点
/health: 健康检查端点/mcp: MCP 工具端点
调试端点
POST /debug/publish_message: 发布文章到草稿箱GET /debug/draft_list: 获取草稿列表POST /debug/publish_latest_draft: 发布最新草稿POST /debug/publish_draft_by_title: 根据标题发布草稿POST /debug/delete_draft: 删除草稿GET /debug/published_articles: 获取已发布文章列表
3. MCP 工具使用
详细说明请查看 MCP_TOOLS.md 文件。
测试
运行单元测试
cd pkg/wechat
go test -v
测试用例详情
详细测试用例请查看 TEST_CASES.md 文件,其中包括:
- 函数调用测试用例
- HTTP 调试路由测试用例
- MCP 工具测试用例
- 错误处理测试用例
- 性能测试用例
API 参考
微信公众号服务方法
PublishMessage: 发送草稿到草稿箱PublishDraft: 发布指定草稿PublishLatestDraft: 发布最新草稿PublishDraftByTitle: 根据标题发布草稿GetDraftList: 获取草稿列表DeleteDraft: 删除草稿GetPublishedArticles: 获取已发布文章列表
调试端点说明
POST /debug/publish_message
发布文章到草稿箱。
请求体示例:
{
"title": "文章标题",
"content": "文章内容",
"author": "作者名",
"digest": "文章摘要",
"image_info": {
"image_list": {
"image_media_id": "图片media_id"
}
}
}
GET /debug/draft_list
获取草稿箱中的所有草稿,无需请求体。
POST /debug/publish_latest_draft
发布最新的草稿,无需请求体。
POST /debug/publish_draft_by_title
根据标题发布指定草稿。
请求体示例:
{
"title": "要发布的文章标题"
}
POST /debug/delete_draft
删除指定的草稿。
请求体示例:
{
"media_id": "要删除的草稿media_id"
}
GET /debug/published_articles
获取已发布的文章列表,无需请求体。
注意事项
- 请确保微信公众号已获得相应的接口权限
- 注意微信API调用频率限制
- 妥善保管 AppID 和 AppSecret 等敏感信息
- 该项目仅供学习和参考,实际使用时请遵守微信公众平台的相关规定