基于MCP的微信机器人应用案例
本文档介绍如何使用MCP协议构建一个功能丰富的微信机器人应用。
项目概述
这是一个基于Node.js和Wechaty框架构建的微信机器人,通过MCP协议实现以下功能:
- 自动回复消息
- 天气信息查询
- 新闻摘要获取
- 设置提醒和闹钟
- 图片生成
环境准备
技术栈
- Node.js (>= 14.0.0)
- Wechaty (微信机器人框架)
- MCP-Node (Node.js版MCP客户端和服务器)
- Express (Web服务器)
- Axios (HTTP请求)
- MongoDB (可选,用于数据持久化)
安装依赖
mkdir wechat-mcp-bot
cd wechat-mcp-bot
npm init -y
npm install wechaty @wechaty/puppet-wechat mcp-node express axios dotenv
项目结构
wechat-mcp-bot/
├── .env # 环境变量配置
├── index.js # 主入口文件
├── bot.js # 微信机器人核心逻辑
├── mcp/
│ ├── server.js # MCP服务器定义
│ └── tools/ # MCP工具集
│ ├── weather.js # 天气查询工具
│ ├── news.js # 新闻获取工具
│ ├── reminder.js # 提醒工具
│ └── imageGen.js # 图片生成工具
└── package.json
实现步骤
步骤1:配置环境变量
创建.env文件:
WEATHER_API_KEY=your_weather_api_key
NEWS_API_KEY=your_news_api_key
OPENAI_API_KEY=your_openai_api_key
步骤2:创建MCP服务器
创建mcp/server.js文件:
const { MCPServer } = require('mcp-node');
const { getWeather } = require('./tools/weather');
const { getNews } = require('./tools/news');
const { setReminder, listReminders } = require('./tools/reminder');
const { generateImage } = require('./tools/imageGen');
// 创建MCP服 务器实例
const server = new MCPServer({
id: "wechat-assistant",
description: "微信助手机器人",
version: "1.0.0"
});
// 注册工具
server.registerTool({
name: "getWeather",
description: "获取指定城市的天气信息",
parameters: {
type: "object",
properties: {
city: {
type: "string",
description: "城市名称"
}
},
required: ["city"]
},
handler: getWeather
});
server.registerTool({
name: "getNews",
description: "获取最新新闻摘要",
parameters: {
type: "object",
properties: {
category: {
type: "string",
description: "新闻类别",
enum: ["general", "business", "technology", "sports", "entertainment"]
},
count: {
type: "number",
description: "新闻条数",
default: 5
}
},
required: ["category"]
},
handler: getNews
});
server.registerTool({
name: "setReminder",
description: "设置提醒事项",
parameters: {
type: "object",
properties: {
userId: {
type: "string",
description: "