Skip to content

Commit 5894894

Browse files
authored
Merge pull request #60 from TencentCloudBase/claude/issue-53-20250710_120853
feat: implement miniprogram MCP plugin with latest miniprogram-ci v2.1.14
2 parents e0036d6 + b3eb8bb commit 5894894

7 files changed

Lines changed: 658 additions & 6 deletions

File tree

doc/mcp-tools.md

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# MCP 工具
22

3-
CloudBase AI ToolKit 提供了完整的 MCP 工具集,支持云开发的各种操作。目前共有 **36 个工具**,涵盖环境管理、数据库操作、云函数管理、静态托管等核心功能
3+
CloudBase AI ToolKit 提供了完整的 MCP 工具集,支持云开发的各种操作。目前共有 **40 个工具**,涵盖环境管理、数据库操作、云函数管理、静态托管、小程序发布等核心功能
44

55
📋 **完整工具规格**: [查看 tools.json](https://cnb.cool/tencent/cloud/cloudbase/CloudBase-AI-ToolKit/-/git/raw/main/scripts/tools.json)
66

@@ -13,6 +13,7 @@ CloudBase AI ToolKit 提供了完整的 MCP 工具集,支持云开发的各种
1313
|[云函数管理](#云函数管理) | 9 个 | 函数创建、更新、调用、日志 |
1414
| 🌐 [静态托管](#静态托管) | 6 个 | 文件上传、管理、域名配置 |
1515
| 📁 [文件操作](#文件操作) | 2 个 | 文件下载、云存储上传 |
16+
| 📱 [小程序发布](#小程序发布) | 4 个 | 小程序上传、预览、构建、配置 |
1617
| 🛠️ [工具支持](#工具支持) | 4 个 | 模板下载、知识库搜索、联网搜索、交互对话 |
1718

1819
---
@@ -249,6 +250,54 @@ CloudBase AI ToolKit 提供了完整的 MCP 工具集,支持云开发的各种
249250

250251
---
251252

253+
## 📱 小程序发布
254+
255+
### 📤 代码管理
256+
257+
#### `uploadMiniprogramCode`
258+
**功能**: 上传小程序代码到微信平台
259+
**参数**:
260+
- `appId` (string): 小程序 appId
261+
- `projectPath` (string): 项目路径
262+
- `version` (string): 版本号
263+
- `desc` (string): 版本描述
264+
- `setting` (object): 编译设置
265+
- `robot` (number): 机器人编号 1-30
266+
- `type` (string): 项目类型 miniProgram/miniGame
267+
268+
#### `previewMiniprogramCode`
269+
**功能**: 预览小程序代码并生成二维码
270+
**参数**:
271+
- `appId` (string): 小程序 appId
272+
- `projectPath` (string): 项目路径
273+
- `desc` (string): 预览描述
274+
- `setting` (object): 编译设置
275+
- `robot` (number): 机器人编号 1-30
276+
- `type` (string): 项目类型 miniProgram/miniGame
277+
- `qrcodeFormat` (string): 二维码格式 image/base64/terminal
278+
- `qrcodeOutputDest` (string): 二维码输出路径
279+
- `pagePath` (string): 预览页面路径
280+
- `searchQuery` (string): 预览页面参数
281+
282+
### 🔧 项目管理
283+
284+
#### `buildMiniprogramNpm`
285+
**功能**: 构建小程序 npm 包
286+
**参数**:
287+
- `appId` (string): 小程序 appId
288+
- `projectPath` (string): 项目路径
289+
- `type` (string): 项目类型 miniProgram/miniGame
290+
- `robot` (number): 机器人编号 1-30
291+
292+
#### `getMiniprogramProjectConfig`
293+
**功能**: 获取小程序项目配置
294+
**参数**:
295+
- `appId` (string): 小程序 appId
296+
- `projectPath` (string): 项目路径
297+
- `type` (string): 项目类型 miniProgram/miniGame
298+
299+
---
300+
252301
## 🛠️ 工具支持
253302

254303
### 📚 辅助工具
@@ -285,6 +334,7 @@ CloudBase AI ToolKit 提供了完整的 MCP 工具集,支持云开发的各种
285334
- 🔍 **"查询环境信息"** → AI 调用 `envQuery` 工具
286335
- 🚀 **"部署应用"** → AI 调用相关的部署工具
287336
- 📊 **"查询数据库"** → AI 调用 `queryDocuments` 工具
337+
- 📱 **"上传小程序"** → AI 调用 `uploadMiniprogramCode` 工具
288338

289339
## ⚙️ 配置说明
290340

@@ -329,10 +379,11 @@ MCP 工具通过以下配置添加到你的 AI IDE 中:
329379

330380
## 🔄 工具优化
331381

332-
为了提供更好的使用体验,我们将原来 40 个工具优化为 36 个
382+
为了提供更好的使用体验,我们将原来的工具优化并新增了小程序发布功能,现在共有 40 个工具
333383

334384
-**envQuery**: 合并了 `listEnvs` + `getEnvInfo` + `getEnvAuthDomains`
335385
-**envDomainManagement**: 合并了 `createEnvDomain` + `deleteEnvDomain`
336386
-**collectionQuery**: 合并了 `checkCollectionExists` + `describeCollection` + `listCollections`
387+
-**小程序发布**: 新增了 `uploadMiniprogramCode` + `previewMiniprogramCode` + `buildMiniprogramNpm` + `getMiniprogramProjectConfig`
337388

338-
通过合并相关功能,减少了工具数量的同时保持了完整的功能覆盖
389+
通过合并相关功能和新增小程序发布工具,提供了更完整的云开发体验

doc/plugins.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ CloudBase MCP 采用插件化架构,支持按需启用工具模块,解决 MC
2323
| `rag` | 知识库搜索 (AI 增强问答) |
2424
| `download` | 远程文件下载 |
2525
| `gateway` | API 网关管理 |
26+
| `miniprogram` | 小程序发布 (上传、预览、构建) |
2627

2728
## ⚙️ 插件配置
2829

@@ -63,9 +64,9 @@ CloudBase MCP 采用插件化架构,支持按需启用工具模块,解决 MC
6364
| 场景 | 推荐插件 |
6465
|------|----------|
6566
| **基础开发** | `env,database,functions,hosting` |
66-
| **完整功能** | `env,database,functions,hosting,storage,setup,interactive,rag,download,gateway` |
67+
| **完整功能** | `env,database,functions,hosting,storage,setup,interactive,rag,download,gateway,miniprogram` |
6768
| **纯后端** | `env,database,functions` |
68-
| **小程序** | `env,database,functions,storage,setup` |
69+
| **小程序** | `env,database,functions,storage,setup,miniprogram` |
6970
| **AI 应用** | `env,database,functions,hosting,rag,interactive` |
7071

7172
## 📚 相关文档

doc/plugins/miniprogram.md

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
# 小程序插件
2+
3+
小程序插件提供了微信小程序开发和部署的完整工具链支持,包括代码上传、预览、构建等功能。
4+
5+
## 配置
6+
7+
### 环境变量
8+
9+
```bash
10+
# 设置小程序代码上传密钥(二选一)
11+
export MINIPROGRAM_PRIVATE_KEY="私钥内容"
12+
# 或者
13+
export MINIPROGRAM_PRIVATE_KEY_PATH="/path/to/private.key"
14+
15+
# 启用小程序插件
16+
export CLOUDBASE_MCP_PLUGINS_ENABLED="env,database,functions,hosting,storage,setup,interactive,rag,gateway,download,miniprogram"
17+
```
18+
19+
### MCP 配置
20+
21+
```json
22+
{
23+
"mcpServers": {
24+
"cloudbase": {
25+
"command": "npx",
26+
"args": ["-y", "@cloudbase/cloudbase-mcp@latest"],
27+
"env": {
28+
"MINIPROGRAM_PRIVATE_KEY": "你的小程序私钥",
29+
"CLOUDBASE_MCP_PLUGINS_ENABLED": "env,database,functions,hosting,storage,setup,interactive,rag,gateway,download,miniprogram"
30+
}
31+
}
32+
}
33+
}
34+
```
35+
36+
## 工具
37+
38+
### uploadMiniprogramCode
39+
40+
上传小程序代码到微信平台
41+
42+
**参数:**
43+
- `appId`: 小程序 appId
44+
- `projectPath`: 项目路径
45+
- `version`: 版本号
46+
- `desc`: 版本描述(可选)
47+
- `setting`: 编译设置(可选)
48+
- `robot`: 机器人编号 1-30(可选)
49+
- `type`: 项目类型 miniProgram/miniGame(可选)
50+
51+
### previewMiniprogramCode
52+
53+
预览小程序代码并生成二维码
54+
55+
**参数:**
56+
- `appId`: 小程序 appId
57+
- `projectPath`: 项目路径
58+
- `desc`: 预览描述(可选)
59+
- `setting`: 编译设置(可选)
60+
- `robot`: 机器人编号 1-30(可选)
61+
- `type`: 项目类型 miniProgram/miniGame(可选)
62+
- `qrcodeFormat`: 二维码格式 image/base64/terminal(可选)
63+
- `qrcodeOutputDest`: 二维码输出路径(可选)
64+
- `pagePath`: 预览页面路径(可选)
65+
- `searchQuery`: 预览页面参数(可选)
66+
67+
### buildMiniprogramNpm
68+
69+
构建小程序 npm 包
70+
71+
**参数:**
72+
- `appId`: 小程序 appId
73+
- `projectPath`: 项目路径
74+
- `type`: 项目类型 miniProgram/miniGame(可选)
75+
- `robot`: 机器人编号 1-30(可选)
76+
77+
### getMiniprogramProjectConfig
78+
79+
获取小程序项目配置
80+
81+
**参数:**
82+
- `appId`: 小程序 appId
83+
- `projectPath`: 项目路径
84+
- `type`: 项目类型 miniProgram/miniGame(可选)
85+
86+
## 使用场景
87+
88+
### 开发流程
89+
90+
1. **构建依赖**
91+
```
92+
调用 buildMiniprogramNpm 构建 npm 包
93+
```
94+
95+
2. **预览测试**
96+
```
97+
调用 previewMiniprogramCode 生成预览二维码
98+
```
99+
100+
3. **发布上线**
101+
```
102+
调用 uploadMiniprogramCode 上传代码到微信平台
103+
```
104+
105+
### 密钥配置
106+
107+
使用此插件前,需要在微信公众平台配置:
108+
109+
1. 访问 [微信公众平台](https://mp.weixin.qq.com/)
110+
2. 进入"管理-开发管理-开发设置-小程序代码上传"
111+
3. 生成「代码上传密钥」
112+
4. 配置 IP 白名单(推荐开启)
113+
114+
## 注意事项
115+
116+
- 代码上传密钥拥有预览、上传代码的权限
117+
- 密钥不会明文存储在微信公众平台上
118+
- 密钥一旦遗失必须重置,请妥善保管
119+
- 建议开启 IP 白名单以降低安全风险
120+
121+
## 常见问题
122+
123+
### Q: 如何获取小程序 appId?
124+
A: 在微信公众平台的小程序管理页面可以查看到 appId。
125+
126+
### Q: 机器人编号有什么作用?
127+
A: 机器人编号用于区分不同的上传任务,可以设置 1-30 之间的数字。
128+
129+
### Q: 支持哪些编译设置?
130+
A: 支持 ES6/ES7 转换、代码压缩、WXSS 压缩等常见编译选项。

mcp/manifest.json

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"name": "@cloudbase/cloudbase-mcp",
44
"displayName": "CloudBase AI ToolKit",
55
"version": "1.8.8",
6-
"description": "One-stop backend services for WeChat Mini-Programs and full-stack apps. Provides 34 specialized MCP tools for cloud development.",
6+
"description": "One-stop backend services for WeChat Mini-Programs and full-stack apps. Provides 38 specialized MCP tools for cloud development.",
77
"longDescription": "CloudBase AI ToolKit is a comprehensive MCP server that enables AI-powered development and deployment of full-stack applications to Tencent CloudBase. It provides seamless integration with WeChat Mini-Programs, serverless cloud functions, databases, and static hosting. Perfect for developers building applications targeting the Chinese market with WeChat ecosystem integration.",
88
"author": {
99
"name": "TencentCloudBase",
@@ -130,6 +130,22 @@
130130
{
131131
"name": "interactiveDialog",
132132
"description": "Interactive dialog for user confirmations and requirement clarification"
133+
},
134+
{
135+
"name": "uploadMiniprogramCode",
136+
"description": "Upload WeChat Mini-Program code to WeChat platform for deployment"
137+
},
138+
{
139+
"name": "previewMiniprogramCode",
140+
"description": "Preview WeChat Mini-Program code and generate QR code for testing"
141+
},
142+
{
143+
"name": "buildMiniprogramNpm",
144+
"description": "Build npm packages for WeChat Mini-Program projects"
145+
},
146+
{
147+
"name": "getMiniprogramProjectConfig",
148+
"description": "Get WeChat Mini-Program project configuration and settings"
133149
}
134150
],
135151
"requirements": {

mcp/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
"adm-zip": "^0.5.16",
6262
"cors": "^2.8.5",
6363
"express": "^5.1.0",
64+
"miniprogram-ci": "^2.1.14",
6465
"open": "^10.1.2",
6566
"punycode": "^2.3.1",
6667
"ws": "^8.18.2",

mcp/src/server.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { registerStorageTools } from "./tools/storage.js";
88
import { registerRagTools } from './tools/rag.js';
99
import { registerSetupTools } from "./tools/setup.js";
1010
import { registerInteractiveTools } from "./tools/interactive.js";
11+
import { registerMiniprogramTools } from "./tools/miniprogram.js";
1112
import { wrapServerWithTelemetry } from "./utils/tool-wrapper.js";
1213
import { registerGatewayTools } from "./tools/gateway.js";
1314
import { CloudBaseOptions } from "./types.js";
@@ -33,6 +34,7 @@ const AVAILABLE_PLUGINS: Record<string, PluginDefinition> = {
3334
rag: { name: 'rag', register: registerRagTools },
3435
download: { name: 'download', register: registerDownloadTools },
3536
gateway: { name: 'gateway', register: registerGatewayTools },
37+
miniprogram: { name: 'miniprogram', register: registerMiniprogramTools },
3638
};
3739

3840
/**

0 commit comments

Comments
 (0)