我用 MCP 给小程序开发做了个 AI 副驾驶,开源了
小程序开发有几个反复出现的痛点:
- 审核被拒不知道原因,改了 5 次还不过
- 包体积超了 2MB,不知道哪个文件占大头
- 编译报错一堆,AI 看不懂错误日志
- 发版流程繁琐,每次都要手动操作 5 步
我花了几个月做了一个 MCP Server,让 Cursor / Claude Desktop / Kiro 里的 AI 直接操作微信开发者工具、分析项目、自动修复问题。
28 个工具,零配置,不需要密钥,开源免费。先看效果 👇
30 秒看效果
先不讲原理,直接看三个场景的实际效果。
场景 1:一句话审核预检
对 AI 说:"帮我检查这个项目能不能过审"
AI 调用 wechat_compliance_check,返回:
{
"status": "HAS_ISSUES",
"summary": "⚠️ 发现 3 个高危问题、2 个建议优化项(共检查 32 条规则)",
"issues": [
{
"ruleId": "CP001",
"severity": "error",
"file": "app.json",
"message": "未检测到隐私协议弹窗配置。2023年10月起必须配置 usePrivacyCheck。",
"suggestedPatch": "在 app.json 中添加 \"usePrivacyCheck\": true"
},
{
"ruleId": "CP002",
"severity": "error",
"file": "pages/index/index.js",
"line": 8,
"message": "在 onLoad 中直接调用 wx.authorize,属于'进入即弹窗'违规。",
"suggestedPatch": "将 wx.authorize 调用移至按钮的 bindtap 事件处理函数中"
},
{
"ruleId": "CP014",
"severity": "error",
"file": "utils/api.js",
"line": 3,
"message": "检测到 HTTP 明文请求 'http://api.example.com',正式版强制 HTTPS。",
"suggestedPatch": "将 http:// 替换为 https://"
}
],
"passedRules": 29,
"totalRules": 32,
"_meta": { "actionTaken": "compliance_scan", "durationMs": 18 }
}
关键点:AI 拿到这个结果后会自动帮你修复(改代码 → 再跑一遍验证 → 直到全绿)。
场景 2:包体积超了怎么办
对 AI 说:"分析一下包体积,帮我优化"
AI 先调用 wechat_package_size:
{
"status": "WARNING",
"totalSize": "2.3MB",
"mainPackage": "1.8MB",
"limit": "2MB",
"overLimit": true,
"topFiles": [
{ "path": "miniprogram_npm/vant-weapp", "size": "420KB", "percent": "18.2%" },
{ "path": "miniprogram_npm/lodash", "size": "310KB", "percent": "13.5%" },
{ "path": "images/banner.png", "size": "280KB", "percent": "12.2%" }
],
"bombs": ["lodash(建议用 lodash-es 按需引入)", "vant-weapp(建议开启按需引入)"],
"suggestedActions": [
{ "tool": "wechat_subpackage_suggest", "reason": "主包超限,建议分包" }
]
}
AI 发现主包超了,自动调用 wechat_subpackage_suggest:
{
"status": "OK",
"strategy": "按目录分包",
"suggestedConfig": {
"subpackages": [
{ "root": "pages/shop", "pages": ["list/list", "detail/detail", "cart/cart"] },
{ "root": "pages/user", "pages": ["profile/profile", "settings/settings"] }
],
"preloadRule": {
"pages/index/index": { "network": "all", "packages": ["pages/shop"] }
}
},
"estimatedMainSize": "1.2MB",
"savedSize": "600KB"
}
从发现问题到给出完整分包方案 + 预加载配置,全程 AI 自动完成。
场景 3:编译报错自动修复
对 AI 说:"编译报错了,帮我修"
AI 调用 wechat_diagnose,触发编译并捕获错误:
{
"status": "COMPILATION_FAILED",
"errors": [
{
"file": "pages/shop/list/list.js",
"line": 12,
"message": "Cannot find module '../utils/format'",
"type": "MODULE_NOT_FOUND",
"agentActionHint": "READ_FILE_AND_PATCH"
},
{
"file": "app.json",
"line": 5,
"message": "Page 'pages/old/old' not found",
"type": "CONFIG_ERROR",
"agentActionHint": "FIX_CONFIG"
}
],
"retryCount": 0,
"maxRetry": 5
}
AI 看到 agentActionHint,自动执行:
- 读取
list.js第 12 行 → 发现引用路径错了 → 修复 - 打开
app.json→ 删除不存在的页面路径 - 再次调用
wechat_diagnose验证
{
"status": "COMPILATION_OK",
"summary": "✅ 编译通过,0 个错误。",
"retryCount": 1
}
报错 → 修复 → 重编译 → 验证,闭环自动化。 如果修了 5 次还没好,熔断机制会强制停止,把错误展示给你人工处理。
为什么是 MCP 而不是 CLI 脚本
你可能会问:这些事情写个 shell 脚本不也能做?
| 对比 | 传统 CLI 脚本 | MCP Server |
|---|---|---|
| AI 能调用吗 | ❌ 需要人工复制粘贴 | ✅ AI 直接调用,无需人工介入 |
| 返回格式 | 纯文本日志 | 结构化 JSON,AI 能理解并行动 |
| 错误处理 | 人看日志找问题 | AI 自动解析 + 定位 + 修复 |
| 闭环能力 | 无 | 报错→修复→重试→验证,全自动 |
| 跨 IDE | 每个 IDE 写一遍插件 | 一次开发,Cursor/Claude/Kiro 通用 |
| 配置成本 | 写脚本 + 调试 | npx 一行命令,零配置 |
核心设计理念:
1. 契约型 JSON — 工具返回不只是数据,是驱动 AI 行为的指令。agentActionHint: "READ_FILE_AND_PATCH" 告诉 AI "你应该去读这个文件并修复"。
2. 自动恢复链路 — 微信 CLI 经常因为"项目未打开""端口未启动"等原因失败。工具内置了 open → reset → retry 的恢复链路,大部分情况下用户无感知。
3. 熔断机制 — AI 修复代码可能越修越错。当重试次数达到上限(默认 5 次),强制停止并把完整错误历史展示给用户,避免无限循环。
28 个工具一览
| 层级 | 定位 | 工具 |
|---|---|---|
| L1 基础操作 | 微信 CLI 的 AI 接口 | login / preview / upload / build_npm / open / close / reset |
| L2 项目分析 | 纯本地推理,不需要网络 | project_info / package_size / page_list / config_validate / dependency_check / subpackage_suggest / audit / compliance_check |
| L3 智能流程 | 闭环自动化,AI 全程驱动 | diagnose / publish / init_project / self_test / ready_check |
| 鸿蒙设备 | HDC 设备操作(附赠) | list_devices / install / uninstall / start / log / file_push / file_pull / ready_check |
其中 L2 层的 8 个工具是纯本地分析,不调用任何外部 API,不需要网络,不需要密钥。这是和竞品最大的差异 — 别人只是 CLI 的代理,我们能理解项目。
30 秒配置
Cursor
编辑 .cursor/mcp.json:
{
"mcpServers": {
"harmony-mcp": {
"command": "npx",
"args": ["-y", "@yujiamei/harmony-mcp"]
}
}
}
Claude Desktop
编辑 claude_desktop_config.json(Mac: ~/Library/Application Support/Claude/,Win: %APPDATA%\Claude\):
{
"mcpServers": {
"harmony-mcp": {
"command": "npx",
"args": ["-y", "@yujiamei/harmony-mcp"]
}
}
}
Kiro
编辑 .kiro/settings/mcp.json:
{
"mcpServers": {
"harmony-mcp": {
"command": "npx",
"args": ["-y", "@yujiamei/harmony-mcp"]
}
}
}
就这么多。 不需要密钥,不需要 AppSecret,不需要登录任何平台。保存配置后重启 IDE,对 AI 说"帮我检查小程序项目"就能用了。
⚠️ Windows 用户如果 npx 有问题,可以先全局安装:
npm install -g @yujiamei/harmony-mcp,然后 command 改为"harmony-mcp",args 改为[]。
技术架构(给好奇的同学)
┌─────────────────────────────────────────┐
│ AI IDE (Cursor/Claude/Kiro) │
└────────────────────┬────────────────────┘
│ stdio (JSON-RPC)
┌────────────────────▼────────────────────┐
│ harmony-mcp (MCP Server) │
├──────────────────────────────────────────┤
│ Layer 3: 智能流程 │
│ diagnose(编译闭环)/ publish(一键发版) │
│ ↕ 编排 L1+L2,契约 JSON 驱动 AI 行为 │
├──────────────────────────────────────────┤
│ Layer 2: 项目分析 │
│ 合规预检(32规则) / 体积分析 / 分包引擎 │
│ Linter(14规则) / 归因引擎 / 框架探测 │
│ ↕ 纯本地推理,不需要网络 │
├──────────────────────────────────────────┤
│ Layer 1: 基础操作 │
│ login / preview / upload / build_npm │
│ ↕ 调用微信 CLI + 自动恢复链路 │
├──────────────────────────────────────────┤
│ 鸿蒙模块: 8 个 HDC 设备操作工具 │
└────────────────────┬────────────────────┘
│
┌────────────▼────────────┐
│ 微信开发者工具 CLI │
│ 鸿蒙 HDC 命令行 │
└─────────────────────────┘
技术栈:TypeScript + @modelcontextprotocol/sdk + Zod 参数校验 + stdio 传输。
和竞品的区别
| harmony-mcp(本项目) | wechat-mcp-server | miniprogram-ci | |
|---|---|---|---|
| 需要密钥 | ❌ 不需要 | ✅ 需要 | ✅ 需要 |
| 项目分析能力 | ✅ 32 合规规则 + 14 Linter + 归因引擎 | ❌ 只做 CLI 转发 | ❌ 只做上传 |
| AI 行为驱动 | ✅ 契约型 JSON | ❌ 纯文本返回 | ❌ 不是 MCP |
| 编译闭环 | ✅ 报错→修复→重编译 | ❌ | ❌ |
| 零配置 | ✅ npx 一行 | ⚠️ 需要配置密钥 | ⚠️ 需要下载密钥文件 |
| 鸿蒙支持 | ✅ 8 个工具 | ❌ | ❌ |
一些数字
| 指标 | 数据 |
|---|---|
| 工具数 | 28(微信 20 + 鸿蒙 8) |
| 合规规则 | 32 条(覆盖 2026 年高频驳回场景) |
| Linter 规则 | 14 条(运行时性能 + 规范) |
| 合规扫描耗时 | ~20ms(纯本地,不需要网络) |
| 单测 | 121 个,vitest |
| 包体积 | 发布包 < 100KB(纯 TypeScript,零运行时依赖) |
接下来要做的
- MCP Tasks 异步化 — 大项目发版耗时 30s+,接入异步任务避免 IDE 断线
- UniApp / Taro 深度适配 — 跨端框架编译产物智能识别
- 社区共建 — 欢迎提交自定义合规规则 PR
链接
🔗 GitHub:github.com/xiaoxuzhu30…
📦 NPM:npx -y @yujiamei/harmony-mcp
📖 Prompt 指令库:github.com/xiaoxuzhu30…
如果觉得有用,给个 Star ⭐ 就是最大的支持。
💬 你在用 Cursor / Claude 开发小程序时遇到过什么痛点?评论区聊聊,说不定下个版本就能解决。