wexin-push-mcp-server

jasonlat-dot/wexin-push-mcp-server

3.2

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 服务器

License: MIT Java 17+ Spring Boot 3.0+ MCP Compatible

📖 项目简介

微信模板推送 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:应用ID
  • appsecret:应用密钥
  • original_id:原始ID

2. 模板消息配置

访问模板消息配置页面:

https://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl

配置模板消息后,您将获得:

  • template_id:模板ID
  • touser:接收用户的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微信公众号原始IDgh_19674398cb20
wechat.api.appid微信应用IDwxae5eccc3b6930993
wechat.api.appsecret微信应用密钥8fdec049feb30865cc9bb0e1c0b7dad3
wechat.api.template_id模板消息IDPhVVqJwyMustdEa2RKMRgl4mU4ZJgdm5hPtsDIns8ms
wechat.api.touser接收用户OpenIDoxd-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


如果这个项目对您有帮助,请给它一个 ⭐️!