Skip to main content
Glama

WeChat Publisher MCP

by BobGod
MIT License
8
  • Apple
  • Linux
README.md20.7 kB
# 📱 微信公众号自动发布 MCP 服务 [![npm version](https://badge.fury.io/js/wechat-publisher-mcp.svg)](https://badge.fury.io/js/wechat-publisher-mcp) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Node.js CI](https://github.com/your-username/wechat-publisher-mcp/workflows/Node.js%20CI/badge.svg)](https://github.com/your-username/wechat-publisher-mcp/actions) ## 📖 目录 - [🎯 项目概述](#-项目概述) - [✨ 核心特性](#-核心特性) - [📦 安装](#-安装) - [🔧 配置](#-配置) - [🚀 新手快速开始](#-新手快速开始) - [🚀 使用方法](#-使用方法) - [🛠️ API 工具](#️-api-工具) - [📋 示例](#-示例) - [🔧 高级配置](#-高级配置) - [🐛 故障排除](#-故障排除) - [🧪 测试](#-测试) - [🤝 贡献](#-贡献) - [📄 许可证](#-许可证) - [🔗 相关链接](#-相关链接) - [🙏 致谢](#-致谢) ## 🎯 项目概述 这是一个独立的MCP(Model Context Protocol)服务,专门用于微信公众号文章的自动发布。支持任何兼容MCP协议的AI工具调用,包括Claude Desktop、Cursor、Continue等。 > **🎉 最新更新**:已修复MCP SDK兼容性问题,支持最新版本的Claude Desktop和Cursor! ### ✨ 核心特性 - 🚀 **即插即用**:标准MCP协议,一键集成到任何AI工具 - 📝 **智能转换**:自动将Markdown转换为微信公众号优化HTML - 🖼️ **封面处理**:自动上传和处理封面图片 - 👀 **预览模式**:支持预览和正式发布两种模式 - 📊 **状态查询**:实时查询文章发布状态和数据统计 - 🔧 **错误处理**:完善的错误提示和解决建议 - 📱 **移动优化**:针对微信公众号移动端阅读体验优化 ## 📦 安装 > **注意**:目前该包尚未发布到npm registry,请使用源码安装方式。 ### 方式一:源码安装(推荐) ```bash # 1. 克隆仓库 git clone https://github.com/your-username/wechat-publisher-mcp.git cd wechat-publisher-mcp # 2. 安装依赖 npm install # 3. 配置微信公众号密钥 # ⚠️ 重要安全提示:请勿将真实的AppID和AppSecret提交到代码仓库! cp examples/wechat-config.example.js examples/wechat-config.js # 编辑 examples/wechat-config.js,填入您的真实密钥 # 4. 创建全局链接 npm link # 5. 验证安装 wechat-publisher-mcp --help ``` ### 安全配置说明 **⚠️ 重要:为了保护您的微信公众号安全,请务必正确配置密钥!** 1. **复制配置示例文件**: ```bash cp examples/wechat-config.example.js examples/wechat-config.js ``` 2. **编辑配置文件**,填入您的真实密钥: ```javascript // examples/wechat-config.js export const wechatConfig = { appId: 'your_real_appid_here', // 替换为您的真实AppID appSecret: 'your_real_appsecret_here' // 替换为您的真实AppSecret }; ``` 3. **在代码中引用配置**: ```javascript import { wechatConfig } from './examples/wechat-config.js'; const { appId, appSecret } = wechatConfig; ``` 4. **确保配置文件不被提交**: - `examples/wechat-config.js` 已添加到 `.gitignore` - 只有示例文件 `examples/wechat-config.example.js` 会被提交到仓库 ### 方式二:直接运行 如果不想全局安装,可以直接运行: ```bash # 克隆并安装依赖 git clone https://github.com/your-username/wechat-publisher-mcp.git cd wechat-publisher-mcp npm install # 直接运行 node src/server.js ``` ### 系统要求 - **Node.js**: v18.0.0 或更高版本 - **npm**: v8.0.0 或更高版本 - **操作系统**: macOS, Linux, Windows ### 验证安装 安装完成后,运行以下命令验证: ```bash # 检查命令是否可用 which wechat-publisher-mcp # 查看版本信息 wechat-publisher-mcp --version # 查看帮助信息 wechat-publisher-mcp --help ``` ## 🔧 配置 ### 1. 微信公众号配置 在微信公众平台完成以下配置: 1. **获取AppID和AppSecret**: - 登录 [微信公众平台](https://mp.weixin.qq.com) - 进入 "开发" → "基本配置" - 记录AppID和AppSecret 2. **配置IP白名单**: - 在 "开发" → "基本配置" → "IP白名单" - 添加服务器IP地址 3. **开通发布权限**: - 确保公众号已认证 - 确保具有群发消息权限 ### 2. MCP 客户端配置 #### Claude Desktop 配置 **macOS 配置路径:** ```bash ~/Library/Application Support/Claude/claude_desktop_config.json ``` **Windows 配置路径:** ```bash %APPDATA%\Claude\claude_desktop_config.json ``` **Linux 配置路径:** ```bash ~/.config/Claude/claude_desktop_config.json ``` **配置内容:** ```json { "mcpServers": { "wechat-publisher": { "command": "wechat-publisher-mcp", "args": [], "env": { "LOG_LEVEL": "INFO" } } } } ``` **如果使用绝对路径(推荐):** ```json { "mcpServers": { "wechat-publisher": { "command": "/path/to/your/node", "args": ["/path/to/wechat-publisher-mcp/src/server.js"] } } } ``` #### Cursor 配置 1. 打开Cursor设置(`Cmd+,` 或 `Ctrl+,`) 2. 搜索"MCP"找到配置选项 3. 添加以下配置: **方式一:使用全局命令** ```json { "mcpServers": { "wechat-publisher": { "command": "wechat-publisher-mcp", "args": [] } } } ``` **方式二:使用绝对路径(推荐)** ```json { "mcpServers": { "wechat-publisher": { "command": "/Users/your-username/.nvm/versions/node/v18.20.8/bin/wechat-publisher-mcp", "args": [] } } } ``` **方式三:使用Node.js直接启动(最稳定)** ```json { "mcpServers": { "wechat-publisher": { "command": "/Users/your-username/.nvm/versions/node/v18.20.8/bin/node", "args": ["/path/to/wechat-publisher-mcp/src/server.js"] } } } ``` #### Continue 配置 在Continue的配置文件中添加: ```json { "mcpServers": { "wechat-publisher": { "command": "wechat-publisher-mcp", "args": [] } } } ``` #### 配置验证 配置完成后: 1. **重启AI工具**(Claude Desktop/Cursor等) 2. **等待服务初始化**(通常需要几秒钟) 3. **验证连接**:在AI对话中输入"请列出可用的工具" 4. **查看状态**:MCP服务图标应显示为绿色 #### 故障排除 **如果MCP服务图标显示黄色或红色:** 1. **检查命令路径**: ```bash which wechat-publisher-mcp ``` 2. **使用绝对路径**:将上述命令返回的完整路径用于配置 3. **检查Node.js版本**: ```bash node --version # 应该 >= v18.0.0 ``` 4. **查看错误日志**:打开AI工具的开发者工具查看Console错误 5. **手动测试**:在终端中直接运行命令验证 ```bash wechat-publisher-mcp ``` ## 🚀 新手快速开始 ### 第一步:环境准备 1. **检查Node.js版本** ```bash node --version # 需要 >= v18.0.0 ``` 如果版本过低,请访问 [Node.js官网](https://nodejs.org/) 下载最新版本。 2. **检查npm版本** ```bash npm --version # 需要 >= v8.0.0 ``` ### 第二步:安装项目 ```bash # 1. 克隆项目到本地 git clone https://github.com/your-username/wechat-publisher-mcp.git cd wechat-publisher-mcp # 2. 安装依赖 npm install # 3. 创建全局链接 npm link # 4. 验证安装 wechat-publisher-mcp --help ``` ### 第三步:获取微信公众号配置 1. **登录微信公众平台** - 访问 [https://mp.weixin.qq.com](https://mp.weixin.qq.com) - 使用管理员账号登录 2. **获取AppID和AppSecret** - 进入"开发" → "基本配置" - 复制保存AppID和AppSecret 3. **配置IP白名单** - 在"基本配置"页面找到"IP白名单" - 添加你的服务器IP地址(可以先添加 `0.0.0.0/0` 用于测试) ### 第四步:配置AI工具 #### 如果你使用Claude Desktop: 1. **找到配置文件** ```bash # macOS open "~/Library/Application Support/Claude/" # Windows # 打开 %APPDATA%\Claude\ # Linux # 打开 ~/.config/Claude/ ``` 2. **编辑claude_desktop_config.json** ```json { "mcpServers": { "wechat-publisher": { "command": "wechat-publisher-mcp", "args": [] } } } ``` 3. **重启Claude Desktop** #### 如果你使用Cursor: 1. **打开Cursor设置** - 按 `Cmd+,` (Mac) 或 `Ctrl+,` (Windows/Linux) 2. **搜索MCP配置** - 在设置中搜索"MCP" 3. **添加服务配置** ```bash # 首先获取你的命令路径 which wechat-publisher-mcp ``` 然后使用返回的完整路径配置: ```json { "mcpServers": { "wechat-publisher": { "command": "/your/full/path/to/wechat-publisher-mcp", "args": [] } } } ``` 4. **重启Cursor** ### 第五步:测试连接 1. **验证MCP服务状态** - 在AI工具中,MCP服务图标应显示为绿色 - 如果显示黄色或红色,请查看故障排除部分 2. **测试工具可用性** 在AI对话中输入: ``` 请列出可用的工具 ``` 你应该能看到以下工具: - `wechat_publish_article` - 发布文章 - `wechat_query_status` - 查询状态 ### 第六步:发布第一篇文章 在AI工具中输入以下内容(替换为你的实际信息): ``` 请帮我发布一篇测试文章到微信公众号: 标题:我的第一篇AI发布文章 作者:你的名字 AppID:你的微信公众号AppID AppSecret:你的微信公众号AppSecret 预览模式:true 预览用户OpenID:你的OpenID(可选,用于预览) 内容: # 欢迎使用微信公众号自动发布工具 这是一篇测试文章,用于验证MCP服务是否正常工作。 ## 功能特点 - ✅ 支持Markdown格式 - ✅ 自动转换为微信HTML - ✅ 支持预览和正式发布 - ✅ 实时状态查询 **测试成功!** 🎉 ``` ### 常见问题解决 **Q: MCP服务图标显示黄色怎么办?** A: 这通常表示路径问题,请使用 `which wechat-publisher-mcp` 获取完整路径,然后在配置中使用绝对路径。 **Q: 提示"access_token invalid"怎么办?** A: 检查AppID和AppSecret是否正确,确保在微信公众平台的"基本配置"中获取。 **Q: 提示IP不在白名单怎么办?** A: 在微信公众平台的"基本配置" → "IP白名单"中添加你的服务器IP。 **Q: 如何获取预览用户的OpenID?** A: 可以通过微信公众号的用户管理功能获取,或者先不使用预览模式直接发布。 ## 🚀 使用方法 ### 基础发布 ```javascript // 在AI工具中直接描述需求 "请帮我发布一篇文章到微信公众号,标题是'AI赋能内容创作',作者是'张三',内容是以下Markdown..." ``` ### 预览模式 ```javascript "请先预览这篇文章,预览用户OpenID是 'xxx',然后再决定是否正式发布" ``` ### 状态查询 ```javascript "查询刚才发布的文章状态,消息ID是 '12345'" ``` ## 🛠️ API 工具 ### 1. wechat_publish_article 发布或预览文章到微信公众号。 **参数:** | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | title | string | ✅ | 文章标题(最大64字符) | | content | string | ✅ | 文章内容(Markdown格式) | | appId | string | ✅ | 微信公众号AppID | | appSecret | string | ✅ | 微信公众号AppSecret | | author | string | ❌ | 作者名称(最大8字符) | | coverImagePath | string | ❌ | 封面图片路径 | | previewMode | boolean | ❌ | 是否预览模式(默认false) | | previewOpenId | string | ❌ | 预览用户OpenID(预览模式必需) | **返回值:** ```json { "success": true, "publishId": "2247483647", "msgId": "1000000001", "articleUrl": "https://mp.weixin.qq.com/s?__biz=...", "mediaId": "media_id_here" } ``` ### 2. wechat_query_status 查询文章发布状态和统计数据。 **参数:** | 参数名 | 类型 | 必需 | 说明 | |--------|------|------|------| | msgId | string | ✅ | 消息ID | | appId | string | ✅ | 微信公众号AppID | | appSecret | string | ✅ | 微信公众号AppSecret | **返回值:** ```json { "article_id": "123456", "publish_status": 1, "article_detail": { "title": "文章标题", "author": "作者", "publish_time": 1634567890, "url": "https://mp.weixin.qq.com/s?...", "stat_info": { "read_num": 1000, "like_num": 50, "comment_num": 10, "share_num": 20 } } } ``` ## 📋 示例 ### 完整发布流程 ```markdown # 示例:发布技术文章 ## 步骤1:准备内容 将文章写成Markdown格式,包含代码块、图片等。 ## 步骤2:准备封面图 准备一张封面图片,支持PNG、JPG、JPEG格式,建议尺寸900x500px。 ## 步骤3:发布文章 在AI工具中说:"请发布这篇文章到微信公众号",并提供: - 标题:🔥 AI赋能Chrome扩展开发:从PromptX到功能实现的全流程实战教程 - 作者:郑伟 | PromptX技术 - AppID:your_wechat_appid_here(请替换为您的真实AppID) - AppSecret:your_wechat_appsecret_here(请替换为您的真实AppSecret) - 封面图:./cover.png - 内容:[Markdown内容] ## 步骤4:查询状态 发布后使用返回的msgId查询文章状态和数据。 ``` ### 自然语言示例 ```text 用户:"帮我把这篇关于Chrome扩展开发的教程发布到微信公众号,标题叫'AI赋能Chrome扩展开发实战教程',作者署名'郑伟',先预览给我看看效果" AI会自动: 1. 解析用户需求 2. 转换Markdown为微信HTML 3. 上传封面图(如果提供) 4. 发送预览消息 5. 返回预览结果和链接 ``` ## 🔧 高级配置 ### 环境变量 | 变量名 | 默认值 | 说明 | |--------|--------|------| | LOG_LEVEL | INFO | 日志级别(ERROR/WARN/INFO/DEBUG) | | NO_COLOR | 0 | 禁用彩色输出(设为1禁用) | | NODE_ENV | development | 运行环境 | ### 启动参数 ```bash # 调试模式启动 LOG_LEVEL=DEBUG wechat-publisher-mcp # 生产模式启动 NODE_ENV=production wechat-publisher-mcp ``` ## 🐛 故障排除 ### MCP连接问题 #### 1. MCP服务图标显示黄色或红色 **症状**:AI工具中MCP服务状态异常 **解决方案**: 1. **检查命令路径** ```bash which wechat-publisher-mcp ``` 2. **使用绝对路径配置** ```json { "mcpServers": { "wechat-publisher": { "command": "/Users/username/.nvm/versions/node/v18.20.8/bin/wechat-publisher-mcp", "args": [] } } } ``` 3. **使用Node.js直接启动** ```json { "mcpServers": { "wechat-publisher": { "command": "/Users/username/.nvm/versions/node/v18.20.8/bin/node", "args": ["/path/to/wechat-publisher-mcp/src/server.js"] } } } ``` #### 2. ERR_PACKAGE_PATH_NOT_EXPORTED 错误 **症状**:启动时报模块导入错误 **解决方案**: ```bash # 重新安装依赖 cd wechat-publisher-mcp npm install # 检查Node.js版本 node --version # 确保 >= v18.0.0 ``` #### 3. 命令未找到错误 **症状**:`command not found: wechat-publisher-mcp` **解决方案**: ```bash # 重新创建全局链接 npm unlink -g wechat-publisher-mcp npm link # 或者检查PATH环境变量 echo $PATH ``` ### 微信API错误 #### 1. IP白名单错误 ``` 错误:invalid ip xxx, not in whitelist 解决:在微信公众平台添加服务器IP到白名单 ``` **详细步骤**: 1. 登录微信公众平台 2. 进入"开发" → "基本配置" 3. 找到"IP白名单"设置 4. 添加你的公网IP地址 5. 如果不确定IP,可以临时添加 `0.0.0.0/0`(仅用于测试) #### 2. access_token错误 ``` 错误:access_token invalid 解决:检查AppID和AppSecret是否正确 ``` **检查清单**: - [ ] AppID格式正确(以wx开头) - [ ] AppSecret长度为32位 - [ ] 没有多余的空格或换行符 - [ ] 公众号类型支持API调用 #### 3. 封面图上传失败 ``` 错误:图片上传失败 解决:检查图片格式(PNG/JPG)和大小(<1MB) ``` **图片要求**: - 格式:PNG、JPG、JPEG - 大小:< 1MB - 尺寸:建议 900x500px - 路径:使用绝对路径或相对于项目根目录的路径 #### 4. 预览失败 ``` 错误:预览用户不存在 解决:确认previewOpenId是否正确,用户是否关注公众号 ``` **获取OpenID方法**: 1. 在微信公众平台的"用户管理"中查看 2. 通过微信网页授权获取 3. 使用微信开发者工具测试 ### 权限和认证问题 #### 1. 公众号权限不足 ``` 错误:no privilege to write this kind of message 解决:确保公众号已认证且具有群发权限 ``` #### 2. 接口调用次数限制 ``` 错误:api minute-quota reach limit 解决:等待一分钟后重试,或优化调用频率 ``` ### 环境和依赖问题 #### 1. Node.js版本过低 ``` 错误:SyntaxError: Unexpected token 解决:升级Node.js到v18.0.0或更高版本 ``` #### 2. 依赖安装失败 ``` 错误:npm install失败 解决:清理缓存后重新安装 ``` ```bash npm cache clean --force rm -rf node_modules package-lock.json npm install ``` ### 调试模式 启用调试模式查看详细日志: ```bash # 方式一:环境变量 LOG_LEVEL=DEBUG wechat-publisher-mcp # 方式二:在配置中添加 { "mcpServers": { "wechat-publisher": { "command": "wechat-publisher-mcp", "args": [], "env": { "LOG_LEVEL": "DEBUG", "DEBUG": "true" } } } } ``` ### 获取帮助 如果以上方法都无法解决问题: 1. **查看详细日志**:启用DEBUG模式 2. **检查网络连接**:确保能访问微信API 3. **提交Issue**:在GitHub仓库提交详细的错误信息 4. **社区求助**:在相关技术社区寻求帮助 **提交Issue时请包含**: - 操作系统和版本 - Node.js版本 - 错误的完整日志 - 复现步骤 - 配置文件(隐藏敏感信息) ## 🧪 测试 ```bash # 运行单元测试 npm test # 运行集成测试 npm run test:integration # 运行代码覆盖率测试 npm run test:coverage ``` ## 🤝 贡献 欢迎提交Issue和Pull Request! 1. Fork本仓库 2. 创建特性分支:`git checkout -b feature/amazing-feature` 3. 提交更改:`git commit -m 'Add amazing feature'` 4. 推送分支:`git push origin feature/amazing-feature` 5. 提交Pull Request ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🔗 相关链接 ### 官方文档 - [微信公众平台开发文档](https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html) - [微信公众号API参考](https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Batch_Sends_and_Originality_Checks.html) - [MCP协议规范](https://modelcontextprotocol.io/) - [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk) ### AI工具配置 - [Claude Desktop配置指南](https://claude.ai/docs) - [Cursor MCP配置](https://docs.cursor.com/) - [Continue.dev配置](https://continue.dev/docs) ### 开发资源 - [Node.js官网](https://nodejs.org/) - [npm包管理器](https://www.npmjs.com/) - [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html) ### 社区和支持 - [GitHub Issues](https://github.com/your-username/wechat-publisher-mcp/issues) - [微信开发者社区](https://developers.weixin.qq.com/community/) - [MCP开发者社区](https://github.com/modelcontextprotocol) ## 🙏 致谢 感谢以下项目和社区的支持: ### 核心技术 - [Model Context Protocol](https://modelcontextprotocol.io/) - 提供了强大的AI工具协议支持 - [微信公众平台](https://mp.weixin.qq.com/) - 提供了完善的API接口 - [Node.js社区](https://nodejs.org/) - 提供了优秀的运行时环境 ### 灵感来源 - [PromptX项目](https://github.com/Deepractice/PromptX) - 原始灵感和技术架构参考 - [Claude Desktop](https://claude.ai/) - MCP协议的先驱实现 - [Cursor](https://cursor.com/) - 优秀的AI编程工具 ### 开源社区 - 所有提交Issue和PR的贡献者 - 微信开发者社区的技术分享 - MCP协议的早期采用者和反馈者 ### 特别感谢 - **郑伟** - 项目发起人和主要维护者 - **PromptX团队** - 技术指导和架构设计 - **所有测试用户** - 提供了宝贵的使用反馈 --- 📢 **如果这个项目对您有帮助,请给我们一个⭐!**

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BobGod/wechat-publisher-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server