jasonlat-dot/wexin-push-mcp-server
If you are the rightful owner of wexin-push-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The WeChat Template Push MCP Server is a service that facilitates automated template message delivery via the WeChat public platform using the Model Context Protocol (MCP).
微信模板推送 MCP 服务器
📖 项目简介
微信模板推送 MCP 服务器是一个基于 Model Context Protocol (MCP) 的微信公众号模板消息推送服务。该服务允许 AI 应用通过标准化的 MCP 协议与微信公众号 API 进行交互,实现模板消息的自动化推送功能。
✨ 主要特性
- 🔌 MCP 协议兼容:完全兼容 Model Context Protocol 标准
- 📱 微信模板消息:支持微信公众号模板消息推送
- 🚀 Spring Boot 3.0+:基于最新的 Spring Boot 框架
- ☕ Java 17+:使用现代 Java 特性
- 🔧 灵活配置:支持多种配置方式
- 📊 完善日志:提供详细的操作日志和错误追踪
🛠️ 技术栈
- Java 17+
- Spring Boot 3.0+
- Spring AI MCP
- Jackson
- Retrofit2
- Lombok
- JUnit 5
📋 前置要求
1. 微信测试号申请
访问微信公众平台测试号申请页面:
https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index
申请测试号后,您将获得:
appID
:应用IDappsecret
:应用密钥original_id
:原始ID
2. 模板消息配置
访问模板消息配置页面:
https://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl
配置模板消息后,您将获得:
template_id
:模板IDtouser
:接收用户的OpenID
🚀 快速开始
1. 构建项目
mvn clean package
2. MCP 配置
本服务支持两种 MCP 连接模式:STDIO 模式和 SSE 模式。
方式一:STDIO 模式(推荐)
在您的 MCP 客户端配置文件中添加以下配置:
{
"mcpServers": {
"wexin-push-mcp-server": {
"command": "java",
"args": [
"-Dspring.ai.mcp.server.stdio=true",
"-Dfile.encoding=utf-8",
"-Dlogging.file.name=./data/mcp/${spring.application.name}.log",
"-jar",
"C:\\Users\\Administrator\\.m2\\repository\\com\\jasonlat\\wexin-push-mcp-server\\1.0\\wexin-push-mcp-server-1.0.jar",
"--wechat.api.original_id=gh_19674398cb20",
"--wechat.api.appid=wxae5eccc3b6930993",
"--wechat.api.appsecret=8fdec049feb30865cc9bb0e1c0b7dad3",
"--wechat.api.template_id=PhVVqJwyMustdEa2RKMRgl4mU4ZJgdm5hPtsDIns8ms",
"--wechat.api.touser=oxd-l6lb0KOF5KRwBy7GDHxeXaeE"
]
}
}
}
方式二:SSE 模式
对于需要通过 HTTP 连接的场景,可以使用 SSE(Server-Sent Events)模式:
1. 启动服务器
使用 Docker 部署(推荐):
# 构建 Docker 镜像
cd dev-ops/software
./build.sh
# 运行容器
docker run -d \
--name wechat-mcp-server \
-p 8102:8102 \
-e WECHAT_API_ORIGINAL_ID=gh_19674398cb20 \
-e WECHAT_API_APPID=wxae5eccc3b6930993 \
-e WECHAT_API_APPSECRET=8fdec049feb30865cc9bb0e1c0b7dad3 \
-e WECHAT_API_TEMPLATE_ID=PhVVqJwyMustdEa2RKMRgl4mU4ZJgdm5hPtsDIns8ms \
-e WECHAT_API_TOUSER=oxd-l6lb0KOF5KRwBy7GDHxeXaeE \
wechat-mcp-server:latest
或直接运行 JAR 文件:
java -jar wechat-push-mcp-server.jar \
--server.port=8102 \
--wechat.api.original_id=gh_19674398cb20 \
--wechat.api.appid=wxae5eccc3b6930993 \
--wechat.api.appsecret=8fdec049feb30865cc9bb0e1c0b7dad3 \
--wechat.api.template_id=PhVVqJwyMustdEa2RKMRgl4mU4ZJgdm5hPtsDIns8ms \
--wechat.api.touser=oxd-l6lb0KOF5KRwBy7GDHxeXaeE
2. 客户端配置
在您的 Spring AI 应用配置中添加:
spring:
ai:
mcp:
client:
request-timeout: 360s
sse:
connections:
mcp-server-wechat:
url: http://127.0.0.1:8102
或在 MCP 客户端配置文件中添加:
{
"mcpServers": {
"wexin-push-mcp-server": {
"url": "http://127.0.0.1:8102",
"type": "sse"
}
}
}
3. 配置参数说明
参数 | 说明 | 示例 |
---|---|---|
wechat.api.original_id | 微信公众号原始ID | gh_19674398cb20 |
wechat.api.appid | 微信应用ID | wxae5eccc3b6930993 |
wechat.api.appsecret | 微信应用密钥 | 8fdec049feb30865cc9bb0e1c0b7dad3 |
wechat.api.template_id | 模板消息ID | PhVVqJwyMustdEa2RKMRgl4mU4ZJgdm5hPtsDIns8ms |
wechat.api.touser | 接收用户OpenID | oxd-l6lb0KOF5KRwBy7GDHxeXaeE |
🔧 使用方法
MCP 工具调用
服务器提供 wechatNotice
工具,用于发送微信模板消息:
{
"platform": "微信公众号",
"subject": "消息主题",
"description": "消息内容描述"
}
响应格式
{
"success": true,
"messageId": 200228332,
"message": "模板消息发送成功"
}
📁 项目结构
src/
├── main/
│ ├── java/
│ │ └── com/jasonlat/
│ │ ├── McpServerApplication.java # 主启动类
│ │ ├── config/ # 配置类
│ │ │ └── WeiXinApiProperties.java
│ │ ├── domain/ # 领域层
│ │ │ ├── adapter/ # 适配器接口
│ │ │ ├── model/ # 领域模型
│ │ │ └── service/ # 领域服务
│ │ ├── infrastructure/ # 基础设施层
│ │ │ ├── adapter/ # 适配器实现
│ │ │ └── gateway/ # 网关
│ │ └── type/ # 类型定义
│ │ ├── utils/ # 工具类
│ │ └── valobj/ # 值对象
│ └── resources/
│ └── application.yml # 应用配置
└── test/ # 测试代码
🧪 测试
运行单元测试:
mvn test
运行特定测试类:
mvn test -Dtest=WeChatResponseTest
📝 日志
应用日志包含表情符号,便于快速识别操作状态:
- ✅ 成功操作
- ❌ 失败操作
- ⚠️ 警告信息
日志文件位置:./data/mcp/${spring.application.name}.log
🤝 贡献
欢迎提交 Issue 和 Pull Request 来改进这个项目。
📄 许可证
本项目采用 。
🔗 相关链接
👨💻 作者
jasonlat
如果这个项目对您有帮助,请给它一个 ⭐️!