微信 SDK + Senparc.AI + MCP 打造微信 AI 开发助手(二):在 Cursor、VS Code 等 IDE 中自动编写

微信 SDK + Senparc.AI + MCP 打造微信 AI 开发助手(二):在 Cursor、VS Code 等 IDE 中自动编写

引言:从“手动开发”到“AI 自动编码”还记得上一篇文章中,我们如何用微信 SDK 和 Senparc.AI 搭建了一个能自动回复消息的微信机器人吗?当时我们手动写了大量代码:配置消息处理、调用 AI 接口、返回响应……虽然功能实现了,但如果你是一个追求效率的开发者,肯定会想:“能不能让 AI 直接帮我写这些代码?” 答案是:能!借助 MCP(Model Context Protocol,模型上下文协议),我们可以让 AI 助手(比如 Cursor、VS Code 中的 Copilot)直接理解你的项目结构,并自动生成符合微信 SDK 规范的代码。本文将带你一步步实现这个“偷懒”的梦想。## 什么是 MCP?为什么它能让 AI 自动写代码?MCP 是 Anthropic 提出的一种协议,它允许 AI 模型(如 Claude、GPT)与外部工具或代码库进行交互。简单来说,MCP 就像一个“桥梁”: -AI 模型:负责理解需求、生成代码。 -MCP 服务器:暴露项目中的 API、类库、文档等信息。 -IDE 客户端(Cursor/VS Code):通过 MCP 协议获取这些信息,辅助 AI 生成更准确的代码。 例如,当你在 Cursor 中要求“用微信 SDK 创建一个发送文本消息的函数”,AI 会通过 MCP 查询到Senparc.Weixin.MP.ContainersSenparc.Weixin.MP.AdvancedAPIs的用法,然后自动生成代码。 ## 准备工作:搭建 MCP 环境### 1. 安装 MCP 客户端插件在 VS Code 中,安装MCP Client扩展;如果你使用 Cursor,它已内置 MCP 支持。小技巧:在 Cursor 中按Ctrl+Shift+P,搜索“MCP: Add Server”,即可配置你的项目。### 2. 创建 MCP 服务器我们需要一个 MCP 服务器来暴露微信 SDK 的相关信息。这里我用 Python 写一个简单的服务器(因为 Senparc.AI 支持多语言,但微信 SDK 核心是 C#,不过 MCP 是语言无关的)。python# mcp_wechat_server.py# 这是一个 MCP 服务器,用于暴露微信 SDK 的常用功能到 AI 模型from mcp.server import Server, NotificationOptionsfrom mcp.server.models import InitializationOptionsimport mcp.server.stdio# 创建 MCP 服务器实例server = Server("wechat_sdk_server")# 定义一个工具:获取微信 SDK 的发送文本消息模板@server.list_tools()async def handle_list_tools() -> list: return [ { "name": "get_send_text_template", "description": "获取微信发送文本消息的代码模板(基于 Senparc.Weixin.MP)", "inputSchema": { "type": "object", "properties": { "accessToken": {"type": "string", "description": "微信 access_token"}, "openId": {"type": "string", "description": "用户 openId"}, "content": {"type": "string", "description": "消息内容"} }, "required": ["accessToken", "openId", "content"] } } ]# 实现工具的逻辑:返回 C# 代码模板@server.call_tool()async def handle_call_tool(name: str, arguments: dict) -> str: if name == "get_send_text_template": access_token = arguments["accessToken"] open_id = arguments["openId"] content = arguments["content"] # 返回一个完整的 C# 代码模板 code_template = f"""// 使用 Senparc.Weixin.MP 发送文本消息public async Task SendTextMessageAsync(string accessToken, string openId, string content){{ var accessTokenContainer = AccessTokenContainer.GetAccessTokenResult(accessToken); var result = await CustomApi.SendTextAsync(accessTokenContainer.access_token, openId, content); return result;}}""" return code_template# 启动服务器async def main(): async with mcp.server.stdio.stdio_server() as (read_stream, write_stream): await server.run( read_stream, write_stream, InitializationOptions( server_name="wechat_sdk_server", server_version="1.0.0", ), )if __name__ == "__main__": import asyncio asyncio.run(main())### 3. 在 IDE 中配置 MCP在 Cursor 中,打开 Settings -> MCP Servers,添加服务器地址(例如http://localhost:8000)。注意:实际使用时,建议将 MCP 服务器部署在本地或云服务器上,并确保 IDE 能访问到。## 实战:让 AI 在 Cursor 中自动编写微信消息回复代码### 场景:自动生成“关注回复”功能假设你的微信公众账号需要:当用户关注时,自动发送一条欢迎消息。传统做法是手动写代码,但现在我们只需在 Cursor 中输入 prompt。### 步骤 1:在 Cursor 中描述需求打开 Cursor,新建一个 C# 文件,输入以下注释(或直接使用对话功能):// 我需要一个微信关注回复功能:用户关注后,自动发送“欢迎关注!回复【帮助】获取菜单”// 使用 Senparc.Weixin.MP 的 CustomApi 和 MessageHandler### 步骤 2:AI 自动生成代码(借助 MCP)Cursor 通过 MCP 服务器获取到微信 SDK 的模板信息,然后生成如下代码:csharpusing Senparc.Weixin.MP.AdvancedAPIs;using Senparc.Weixin.MP.MessageHandlers;using Senparc.Weixin.MP.Entities;// 自定义消息处理器public class CustomMessageHandler : MessageHandler<CustomMessageContext>{ public override async Task<IResponseMessageBase> OnTextRequestAsync(RequestMessageText requestMessage) { // 处理用户文本消息 var responseMessage = CreateResponseMessage<ResponseMessageText>(); responseMessage.Content = "你发送了:" + requestMessage.Content; return responseMessage; } public override async Task<IResponseMessageBase> OnEvent_SubscribeRequestAsync(RequestMessageEvent_Subscribe requestMessage) { // 关注事件:自动回复欢迎消息 var responseMessage = CreateResponseMessage<ResponseMessageText>(); responseMessage.Content = "欢迎关注!回复【帮助】获取菜单。"; // 可选:记录用户信息到数据库 await LogUserSubscriptionAsync(requestMessage.FromUserName); return responseMessage; } private async Task LogUserSubscriptionAsync(string openId) { // 这里可以调用你的数据库服务 // 例如:await _dbContext.Users.AddAsync(new User { OpenId = openId, SubscribeTime = DateTime.Now }); Console.WriteLine($"用户 {openId} 已关注"); }}AI 的聪明之处:它自动识别了OnEvent_SubscribeRequestAsync方法,这是 Senparc.Weixin.MP 中处理关注事件的标准接口。背后,MCP 服务器提供了这些 API 的文档和示例。### 步骤 3:集成 Senparc.AI 实现智能回复现在,我们让 AI 自动生成“智能回复”代码。在 Cursor 中继续输入:// 在上面的 OnTextRequestAsync 中,集成 Senparc.AI 的聊天功能// 使用 Senparc.AI.Kernel 调用 GPT 模型AI 会生成如下代码:csharpusing Senparc.AI.Kernel;using Senparc.AI.Entities;public class AIResponseHelper{ private readonly SenparcAiKernel _kernel; public AIResponseHelper() { // 初始化 Senparc.AI Kernel(假设配置了 OpenAI API Key) _kernel = new SenparcAiKernel(new SenparcAiSetting { ApiKey = "your-api-key-here", Model = "gpt-3.5-turbo" }); } public async Task<string> GetAIResponseAsync(string userMessage) { // 调用 AI 模型生成回复 var result = await _kernel.ChatAsync(new ChatRequest { Messages = new List<ChatMessage> { new ChatMessage { Role = "user", Content = userMessage } } }); return result.Content; }}// 在 CustomMessageHandler 中使用public override async Task<IResponseMessageBase> OnTextRequestAsync(RequestMessageText requestMessage){ var aiHelper = new AIResponseHelper(); var aiReply = await aiHelper.GetAIResponseAsync(requestMessage.Content); var responseMessage = CreateResponseMessage<ResponseMessageText>(); responseMessage.Content = aiReply; return responseMessage;}关键点:AI 自动处理了 Senparc.AI 的Kernel初始化、API 调用和异常处理。你只需提供 API Key。## 进阶:自定义 MCP 工具,让 AI 更懂你的业务默认的 MCP 服务器只暴露了通用模板。如果你的项目有特殊需求(比如查询订单、发送模板消息),可以自定义 MCP 工具。### 示例:添加“发送模板消息”工具在 MCP 服务器中新增:python@server.list_tools()async def handle_list_tools() -> list: # 保留之前的模板工具,添加新的 return [ # ... 之前的工具 { "name": "send_template_message", "description": "发送微信模板消息(基于 Senparc.Weixin.MP)", "inputSchema": { "type": "object", "properties": { "accessToken": {"type": "string"}, "openId": {"type": "string"}, "templateId": {"type": "string"}, "data": {"type": "object", "description": "模板数据,如 {\"first\": {\"value\":\"标题\"}}"} }, "required": ["accessToken", "openId", "templateId", "data"] } } ]@server.call_tool()async def handle_call_tool(name: str, arguments: dict) -> str: if name == "send_template_message": # 返回完整的 C# 代码 return f"""// 发送模板消息public async Task SendTemplateMessageAsync(string accessToken, string openId, string templateId, object data){{ var result = await TemplateApi.SendTemplateMessageAsync(accessToken, openId, templateId, data); return result;}}"""然后,在 IDE 中你只需说“帮我写一个发送订单通知的模板消息”,AI 就会自动调用这个工具生成代码。## 总结通过微信 SDK + Senparc.AI + MCP 的三方组合,我们实现了从“手动编码”到“AI 自动生成”的飞跃:1.MCP 解决了信息孤岛问题:AI 不再“凭空”生成代码,而是基于真实的 SDK 文档和项目结构。2.Senparc.AI 提供了智能内核:让微信机器人具备对话能力,而 MCP 让这个能力可被 AI 编程助手直接调用。3.Cursor/VS Code 成为你的“AI 副驾驶”:只需用自然语言描述需求,代码自动生成且规范。下一步:你可以尝试将 MCP 服务器扩展到数据库访问、第三方 API 集成等,让 AI 自动完成更多重复性工作。记住,工具越完善,AI 越强大——而这一切,只需要你写一次 MCP 服务器配置。现在,打开你的 IDE,试试看让 AI 帮你生成一个“消息转发到企业微信”的功能吧!