@cloudbase/cloudbase-mcp 2.23.11 → 2.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2200,7 +2200,7 @@ ${envIdSection}
2200
2200
  ## 环境信息
2201
2201
  - 操作系统: ${os_1.default.type()} ${os_1.default.release()}
2202
2202
  - Node.js版本: ${process.version}
2203
- - MCP 版本:${process.env.npm_package_version || "2.23.11" || 0}
2203
+ - MCP 版本:${process.env.npm_package_version || "2.24.0" || 0}
2204
2204
  - 系统架构: ${os_1.default.arch()}
2205
2205
  - 时间: ${new Date().toISOString()}
2206
2206
  - 请求ID: ${requestId}
@@ -2281,7 +2281,7 @@ function createWrappedHandler(name, handler, server) {
2281
2281
  requestId: (typeof error === 'object' && error && 'requestId' in error) ? error.requestId : '',
2282
2282
  ide: server.ide || process.env.INTEGRATION_IDE || ''
2283
2283
  });
2284
- const mcpVersion = true ? "2.23.11" : 0;
2284
+ const mcpVersion = true ? "2.24.0" : 0;
2285
2285
  const requestIdSuffix = requestId ? `\n🆔 RequestId: ${requestId}` : '';
2286
2286
  const enhancedErrorMessage = `${errorMessage}${requestIdSuffix}\n\n📦 CloudBase MCP v${mcpVersion}\n🔗 遇到问题?请复制以下链接到浏览器打开\n即可自动携带错误详情快速创建 GitHub Issue:\n${issueLink}`;
2287
2287
  // 创建新的错误对象,保持原有的错误类型但更新消息
@@ -9937,7 +9937,7 @@ class TelemetryReporter {
9937
9937
  const nodeVersion = process.version; // Node.js版本
9938
9938
  const arch = os_1.default.arch(); // 系统架构
9939
9939
  // 从构建时注入的版本号获取MCP版本信息
9940
- const mcpVersion = process.env.npm_package_version || "2.23.11" || 0;
9940
+ const mcpVersion = process.env.npm_package_version || "2.24.0" || 0;
9941
9941
  return {
9942
9942
  userAgent: `${osType} ${osRelease} ${arch} ${nodeVersion} CloudBase-MCP/${mcpVersion}`,
9943
9943
  deviceId: this.deviceId,
@@ -11778,6 +11778,38 @@ function classifySqlRisk(sql) {
11778
11778
  requiresConfirm: true,
11779
11779
  };
11780
11780
  }
11781
+ /**
11782
+ * Schema DDL that must go through applyMigration by default.
11783
+ * Includes CREATE/ALTER/COMMENT (schema_change) and DROP/TRUNCATE / destructive ALTER.
11784
+ * Excludes DML DELETE and security_change (GRANT/POLICY), which may still use execute.
11785
+ */
11786
+ function isSchemaDdlRisk(risk, sql) {
11787
+ if (risk === "schema_change") {
11788
+ return true;
11789
+ }
11790
+ if (risk !== "destructive") {
11791
+ return false;
11792
+ }
11793
+ const verb = getSqlVerb(stripLeadingSqlComments(sql));
11794
+ return ["DROP", "TRUNCATE", "ALTER"].includes(verb);
11795
+ }
11796
+ function buildLocalMigrationFileHint(version, name) {
11797
+ return `migrations/${version}_${name}.sql`;
11798
+ }
11799
+ const MIGRATION_VERSION_REQUIRED_MESSAGE = "migrationVersion is required (14-digit UTC timestamp YYYYMMDDHHMMSS). " +
11800
+ "Decide the version first, write local file migrations/<version>_<migrationName>.sql, " +
11801
+ "then call planMigration/applyMigration with the same migrationVersion and migrationName.";
11802
+ function requireExplicitMigrationVersion(args, actionLabel) {
11803
+ const version = args.migrationVersion?.trim();
11804
+ if (!version) {
11805
+ return buildPgToolResult({
11806
+ success: false,
11807
+ errorCode: "MIGRATION_VERSION_REQUIRED",
11808
+ message: `Provide migrationVersion when action=${actionLabel}. ${MIGRATION_VERSION_REQUIRED_MESSAGE}`,
11809
+ });
11810
+ }
11811
+ return version;
11812
+ }
11781
11813
  function quoteIdentifier(identifier) {
11782
11814
  return `"${identifier.replace(/"/g, '""')}"`;
11783
11815
  }
@@ -12142,12 +12174,6 @@ async function executeManagerPGSql(context, sql, cloudBaseOptions) {
12142
12174
  }
12143
12175
  throw new Error("Current @cloudbase/manager-node runtime does not expose database.executePGSql or commonService fallback. Upgrade to @cloudbase/manager-node >= 5.4.0.");
12144
12176
  }
12145
- /** Generate a 14-digit migration version (YYYYMMDDHHMMSS) from current time */
12146
- function generateMigrationVersion() {
12147
- const d = new Date();
12148
- const p = (n) => String(n).padStart(2, "0");
12149
- return `${d.getFullYear()}${p(d.getMonth() + 1)}${p(d.getDate())}${p(d.getHours())}${p(d.getMinutes())}${p(d.getSeconds())}`;
12150
- }
12151
12177
  /** Call a CloudBase PG migration API via commonService fallback */
12152
12178
  async function callPgMigrationApi(context, action, params, cloudBaseOptions) {
12153
12179
  const manager = await (0, cloudbase_manager_js_1.getCloudBaseManager)({
@@ -12390,6 +12416,34 @@ async function handleExecuteSql(args, context, deps) {
12390
12416
  });
12391
12417
  }
12392
12418
  const classification = classifySqlRisk(args.sql);
12419
+ if (isSchemaDdlRisk(classification.risk, args.sql) && args.allowDdlViaExecute !== true) {
12420
+ return buildPgToolResult({
12421
+ success: false,
12422
+ errorCode: "DDL_USE_APPLY_MIGRATION",
12423
+ message: "Schema DDL (CREATE/ALTER/DROP/TRUNCATE/...) must use applyMigration with an explicit migrationVersion, " +
12424
+ "not execute. Write local migrations/<version>_<name>.sql first, then call applyMigration. " +
12425
+ "Set allowDdlViaExecute=true only for exceptional one-off ops that intentionally bypass migration history.",
12426
+ data: {
12427
+ classification,
12428
+ localFileHintPattern: "migrations/<migrationVersion>_<migrationName>.sql",
12429
+ },
12430
+ nextActions: [
12431
+ buildNextAction(MANAGE_PG_DATABASE, "planMigration", "Preview the schema change as a versioned migration (provide migrationVersion + migrationName).", {
12432
+ action: "planMigration",
12433
+ migrationName: "describe_your_change",
12434
+ migrationVersion: "YYYYMMDDHHMMSS",
12435
+ sql: args.sql,
12436
+ }),
12437
+ buildNextAction(MANAGE_PG_DATABASE, "applyMigration", "Apply the schema change via PushPGUserMigrations with the same explicit migrationVersion.", {
12438
+ action: "applyMigration",
12439
+ migrationName: "describe_your_change",
12440
+ migrationVersion: "YYYYMMDDHHMMSS",
12441
+ sql: args.sql,
12442
+ confirm: true,
12443
+ }),
12444
+ ],
12445
+ });
12446
+ }
12393
12447
  if (!classification.readOnly && !args.confirm) {
12394
12448
  return buildPgToolResult({
12395
12449
  success: false,
@@ -12399,7 +12453,12 @@ async function handleExecuteSql(args, context, deps) {
12399
12453
  classification,
12400
12454
  },
12401
12455
  nextActions: [
12402
- buildNextAction(MANAGE_PG_DATABASE, "execute", "Re-issue with confirm=true to actually run the SQL.", { action: "execute", sql: args.sql, confirm: true }),
12456
+ buildNextAction(MANAGE_PG_DATABASE, "execute", "Re-issue with confirm=true to actually run the SQL.", {
12457
+ action: "execute",
12458
+ sql: args.sql,
12459
+ confirm: true,
12460
+ ...(args.allowDdlViaExecute === true ? { allowDdlViaExecute: true } : {}),
12461
+ }),
12403
12462
  buildNextAction(QUERY_PG_DATABASE, "metadata", "Inspect table size and shape before destructive changes.", { action: "metadata", limit: 20 }),
12404
12463
  ],
12405
12464
  });
@@ -12416,8 +12475,15 @@ async function handleExecuteSql(args, context, deps) {
12416
12475
  .slice(0, 5)
12417
12476
  .map((row) => serializeValue(row)),
12418
12477
  targetTable: targetTable ?? null,
12478
+ ...(args.allowDdlViaExecute === true && isSchemaDdlRisk(classification.risk, args.sql)
12479
+ ? {
12480
+ warning: "DDL executed via allowDdlViaExecute bypasses migration history. Prefer applyMigration for reproducible schema changes.",
12481
+ }
12482
+ : {}),
12419
12483
  },
12420
- message: "Write SQL executed successfully.",
12484
+ message: args.allowDdlViaExecute === true && isSchemaDdlRisk(classification.risk, args.sql)
12485
+ ? "Write SQL executed successfully (DDL via allowDdlViaExecute; migration history was bypassed)."
12486
+ : "Write SQL executed successfully.",
12421
12487
  nextActions: classification.risk === "schema_change" && targetTable
12422
12488
  ? [
12423
12489
  buildNextAction(QUERY_PG_DATABASE, "schema", "Inspect the table schema, columns, indexes, and RLS policies after schema changes.", {
@@ -12445,6 +12511,43 @@ async function handleDryRun(args) {
12445
12511
  });
12446
12512
  }
12447
12513
  const classification = classifySqlRisk(args.sql);
12514
+ const schemaDdl = isSchemaDdlRisk(classification.risk, args.sql);
12515
+ if (classification.readOnly) {
12516
+ return buildPgToolResult({
12517
+ success: true,
12518
+ data: {
12519
+ classification,
12520
+ wouldExecute: false,
12521
+ sqlPreview: args.sql.trim().slice(0, 500),
12522
+ },
12523
+ message: "SQL dry run completed. This statement is read-only; use queryPgDatabase(action=sql) to execute it.",
12524
+ nextActions: [
12525
+ buildNextAction(QUERY_PG_DATABASE, "sql", "Execute the read-only SQL through queryPgDatabase.", { action: "sql", sql: args.sql, limit: 20 }),
12526
+ ],
12527
+ });
12528
+ }
12529
+ if (schemaDdl) {
12530
+ return buildPgToolResult({
12531
+ success: true,
12532
+ data: {
12533
+ classification,
12534
+ wouldExecute: false,
12535
+ sqlPreview: args.sql.trim().slice(0, 500),
12536
+ preferredAction: "applyMigration",
12537
+ localFileHintPattern: "migrations/<migrationVersion>_<migrationName>.sql",
12538
+ },
12539
+ message: "SQL dry run completed. Schema DDL should use applyMigration with an explicit migrationVersion, not execute.",
12540
+ nextActions: [
12541
+ buildNextAction(MANAGE_PG_DATABASE, "applyMigration", "Apply schema DDL via versioned migration (provide migrationVersion + migrationName + confirm=true).", {
12542
+ action: "applyMigration",
12543
+ migrationName: "describe_your_change",
12544
+ migrationVersion: "YYYYMMDDHHMMSS",
12545
+ sql: args.sql,
12546
+ confirm: true,
12547
+ }),
12548
+ ],
12549
+ });
12550
+ }
12448
12551
  return buildPgToolResult({
12449
12552
  success: true,
12450
12553
  data: {
@@ -12452,15 +12555,9 @@ async function handleDryRun(args) {
12452
12555
  wouldExecute: false,
12453
12556
  sqlPreview: args.sql.trim().slice(0, 500),
12454
12557
  },
12455
- message: classification.readOnly
12456
- ? "SQL dry run completed. This statement is read-only; use queryPgDatabase(action=sql) to execute it."
12457
- : "SQL dry run completed. Write SQL requires managePgDatabase(action=execute, confirm=true).",
12558
+ message: "SQL dry run completed. Write SQL requires managePgDatabase(action=execute, confirm=true).",
12458
12559
  nextActions: [
12459
- buildNextAction(classification.readOnly ? QUERY_PG_DATABASE : MANAGE_PG_DATABASE, classification.readOnly ? "sql" : "execute", classification.readOnly
12460
- ? "Execute the read-only SQL through queryPgDatabase."
12461
- : "Execute the write SQL only after explicit confirmation.", classification.readOnly
12462
- ? { action: "sql", sql: args.sql, limit: 20 }
12463
- : { action: "execute", sql: args.sql, confirm: true }),
12560
+ buildNextAction(MANAGE_PG_DATABASE, "execute", "Execute the write SQL only after explicit confirmation.", { action: "execute", sql: args.sql, confirm: true }),
12464
12561
  ],
12465
12562
  });
12466
12563
  }
@@ -12479,7 +12576,12 @@ async function handlePlanMigration(args, context, deps, cloudBaseOptions) {
12479
12576
  message: "Provide migrationName (lowercase letters, digits and underscores, starting with a letter) when action=planMigration.",
12480
12577
  });
12481
12578
  }
12482
- const version = args.migrationVersion?.trim() || generateMigrationVersion();
12579
+ const versionOrError = requireExplicitMigrationVersion(args, "planMigration");
12580
+ if (typeof versionOrError !== "string") {
12581
+ return versionOrError;
12582
+ }
12583
+ const version = versionOrError;
12584
+ const localFileHint = buildLocalMigrationFileHint(version, args.migrationName);
12483
12585
  const migration = {
12484
12586
  Version: version,
12485
12587
  Name: args.migrationName,
@@ -12494,10 +12596,22 @@ async function handlePlanMigration(args, context, deps, cloudBaseOptions) {
12494
12596
  }, cloudBaseOptions);
12495
12597
  return buildPgToolResult({
12496
12598
  success: true,
12497
- data: result,
12498
- message: "Migration plan generated via PreviewPGUserMigrations.",
12599
+ data: {
12600
+ migrationVersion: version,
12601
+ migrationName: args.migrationName,
12602
+ localFileHint,
12603
+ apiResult: result,
12604
+ },
12605
+ message: `Migration plan generated via PreviewPGUserMigrations. Reuse migrationVersion=${version} on applyMigration. Ensure local file ${localFileHint} exists and matches.`,
12499
12606
  nextActions: [
12500
- buildNextAction(MANAGE_PG_DATABASE, "applyMigration", "Review the plan above. If it looks correct, call applyMigration to execute.", { action: "applyMigration", migrationName: args.migrationName, sql: args.sql, confirm: true, ...(args.rollbackSql ? { rollbackSql: args.rollbackSql } : {}) }),
12607
+ buildNextAction(MANAGE_PG_DATABASE, "applyMigration", "Review the plan above. If it looks correct, call applyMigration with the same migrationVersion.", {
12608
+ action: "applyMigration",
12609
+ migrationName: args.migrationName,
12610
+ migrationVersion: version,
12611
+ sql: args.sql,
12612
+ confirm: true,
12613
+ ...(args.rollbackSql ? { rollbackSql: args.rollbackSql } : {}),
12614
+ }),
12501
12615
  ],
12502
12616
  });
12503
12617
  }
@@ -12531,7 +12645,12 @@ async function handleApplyMigration(args, context, deps, cloudBaseOptions) {
12531
12645
  message: "PushPGUserMigrations requires confirm=true. Run with confirm=true to proceed.",
12532
12646
  });
12533
12647
  }
12534
- const version = args.migrationVersion?.trim() || generateMigrationVersion();
12648
+ const versionOrError = requireExplicitMigrationVersion(args, "applyMigration");
12649
+ if (typeof versionOrError !== "string") {
12650
+ return versionOrError;
12651
+ }
12652
+ const version = versionOrError;
12653
+ const localFileHint = buildLocalMigrationFileHint(version, args.migrationName);
12535
12654
  const migration = {
12536
12655
  Version: version,
12537
12656
  Name: args.migrationName,
@@ -12551,8 +12670,16 @@ async function handleApplyMigration(args, context, deps, cloudBaseOptions) {
12551
12670
  const result = await callPgMigrationApi(context, "PushPGUserMigrations", params, cloudBaseOptions);
12552
12671
  return buildPgToolResult({
12553
12672
  success: true,
12554
- data: result,
12555
- message: "Migrations applied via PushPGUserMigrations.",
12673
+ data: {
12674
+ migrationVersion: version,
12675
+ migrationName: args.migrationName,
12676
+ localFileHint,
12677
+ apiResult: result,
12678
+ },
12679
+ message: `Migrations applied via PushPGUserMigrations. Ensure local file ${localFileHint} exists and matches.`,
12680
+ nextActions: [
12681
+ buildNextAction(MANAGE_PG_DATABASE, "listMigrations", "Verify the remote migration history records the same migrationVersion.", { action: "listMigrations", limit: 20 }),
12682
+ ],
12556
12683
  });
12557
12684
  }
12558
12685
  catch (error) {
@@ -12827,11 +12954,11 @@ function registerPGDatabaseTools(server, providedDeps) {
12827
12954
  });
12828
12955
  server.registerTool?.(MANAGE_PG_DATABASE, {
12829
12956
  title: "管理 PostgreSQL 上下文或执行写入 SQL",
12830
- description: "管理 CloudBase PostgreSQL:执行已确认的写入 SQL 或 DDL、SQL 风险预检、迁移管理。建表、改 schema、数据结构变更优先使用 applyMigration(带版本管理与回滚),而非 execute。",
12957
+ description: "管理 CloudBase PostgreSQL:执行已确认的写入 SQL、SQL 风险预检、迁移管理。建表/ALTER/DROP 等 schema 变更必须使用 applyMigration(显式 migrationVersion + 本地 migrations/ 留档),不要默认用 execute。execute 主要用于 DML 与 GRANT/RLS 等运维 SQL。",
12831
12958
  inputSchema: {
12832
12959
  action: zod_1.z
12833
12960
  .enum(MANAGE_ACTIONS)
12834
- .describe("操作类型:execute=执行已确认的写入 SQL 或 DDL;dryRun=只分析 SQL 风险不执行;planMigration=预览迁移计划(需 migrationName + sql);applyMigration=应用迁移,建表/改 schema 首选(需 migrationName + sql + confirm=true);listMigrations=查询已应用的 Migration 列表(可传 limit/offset 分页);migrationDetail=查看单条 Migration 详情(需 migrationVersion);rollbackMigration=回滚最近 N 条 Migration(需 lastN + confirm=true);repairMigration=修复 Migration 历史记录(需 migrationVersion + migrationName + repairStatus + repairReason)"),
12961
+ .describe("操作类型:execute=执行已确认的写入 SQL(DML/GRANT/RLS;schema DDL 默认拒绝,需 allowDdlViaExecute=true);dryRun=只分析 SQL 风险不执行;planMigration=预览迁移计划(需 migrationName + migrationVersion + sql);applyMigration=应用迁移,建表/改 schema 首选(需 migrationName + migrationVersion + sql + confirm=true);listMigrations=查询已应用的 Migration 列表(可传 limit/offset 分页);migrationDetail=查看单条 Migration 详情(需 migrationVersion);rollbackMigration=回滚最近 N 条 Migration(需 lastN + confirm=true);repairMigration=修复 Migration 历史记录(需 migrationVersion + migrationName + repairStatus + repairReason)"),
12835
12962
  sql: zod_1.z
12836
12963
  .string()
12837
12964
  .optional()
@@ -12869,7 +12996,7 @@ function registerPGDatabaseTools(server, providedDeps) {
12869
12996
  .string()
12870
12997
  .regex(/^\d{14}$/)
12871
12998
  .optional()
12872
- .describe("14 位时间戳 YYYYMMDDHHMMSS。detail/repair 必填;plan/apply 不传时自动生成。"),
12999
+ .describe("14 位时间戳 YYYYMMDDHHMMSS。plan/apply/detail/repair 必填;禁止由服务端静默生成,避免与本地 migrations/<version>_<name>.sql 分叉。"),
12873
13000
  rollbackSql: zod_1.z
12874
13001
  .string()
12875
13002
  .optional()
@@ -12911,6 +13038,10 @@ function registerPGDatabaseTools(server, providedDeps) {
12911
13038
  .string()
12912
13039
  .optional()
12913
13040
  .describe("repair 必填:修复原因。"),
13041
+ allowDdlViaExecute: zod_1.z
13042
+ .boolean()
13043
+ .optional()
13044
+ .describe("可选,默认 false。仅当需要故意绕过 migration history 时设为 true,才允许 schema DDL 走 execute;正常建表/改 schema 必须用 applyMigration。"),
12914
13045
  },
12915
13046
  annotations: {
12916
13047
  readOnlyHint: false,
@@ -12924,6 +13055,14 @@ function registerPGDatabaseTools(server, providedDeps) {
12924
13055
  const cbOpts = server.cloudBaseOptions;
12925
13056
  switch (args.action) {
12926
13057
  case "execute": {
13058
+ // Soft-block schema DDL before readiness probe so agents get migration guidance immediately.
13059
+ if (args.sql?.trim()) {
13060
+ const classification = classifySqlRisk(args.sql);
13061
+ if (isSchemaDdlRisk(classification.risk, args.sql) &&
13062
+ args.allowDdlViaExecute !== true) {
13063
+ return handleExecuteSql(args, context, deps);
13064
+ }
13065
+ }
12927
13066
  try {
12928
13067
  await ensurePgReadyOnce(cbOpts, deps);
12929
13068
  }
@@ -14055,7 +14194,7 @@ function registerSetupTools(server) {
14055
14194
  server.registerTool("downloadTemplate", {
14056
14195
  title: "下载项目模板",
14057
14196
  description: `自动下载并部署CloudBase项目模板。
14058
- **Note**: Call this tool when the user requests to create a new project using a CloudBase template.\n\n支持的模板:\n- react: React + CloudBase 全栈应用模板\n- vue: Vue + CloudBase 全栈应用模板\n- miniprogram: 微信小程序 + 云开发模板 \n- uniapp: UniApp + CloudBase 跨端应用模板\n- rules: 只包含AI编辑器配置文件(包含Cursor、WindSurf、CodeBuddy等所有主流编辑器配置),适合在已有项目中补充AI编辑器配置\n\n支持的IDE类型:\n- all: 下载所有IDE配置\n- cursor: Cursor AI编辑器\n- 其他IDE类型见下方列表\n\n注意:如果未传入 ide 参数且无法从环境变量检测到 IDE,将提示错误并要求传入 ide 参数\n- windsurf: WindSurf AI编辑器\n- codebuddy: CodeBuddy AI编辑器\n- claude-code: Claude Code AI编辑器\n- cline: Cline AI编辑器\n- gemini-cli: Gemini CLI\n- opencode: OpenCode AI编辑器\n- qwen-code: 通义灵码\n- baidu-comate: 百度Comate\n- openai-codex-cli: OpenAI Codex CLI\n- augment-code: Augment Code\n- github-copilot: GitHub Copilot\n- roocode: RooCode AI编辑器\n- tongyi-lingma: 通义灵码\n- trae: Trae AI编辑器\n- qoder: Qoder AI编辑器\n- antigravity: Google Antigravity AI编辑器\n- vscode: Visual Studio Code\n- kiro: Kiro AI编辑器\n- aider: Aider AI编辑器\n\n特别说明:\n- rules 模板会自动包含当前 mcp 版本号信息(版本号:${ true ? "2.23.11" : 0}),便于后续维护和版本追踪\n- 下载 rules 模板时,如果项目中已存在 README.md 文件,系统会自动保护该文件不被覆盖(除非设置 overwrite=true)`,
14197
+ **Note**: Call this tool when the user requests to create a new project using a CloudBase template.\n\n支持的模板:\n- react: React + CloudBase 全栈应用模板\n- vue: Vue + CloudBase 全栈应用模板\n- miniprogram: 微信小程序 + 云开发模板 \n- uniapp: UniApp + CloudBase 跨端应用模板\n- rules: 只包含AI编辑器配置文件(包含Cursor、WindSurf、CodeBuddy等所有主流编辑器配置),适合在已有项目中补充AI编辑器配置\n\n支持的IDE类型:\n- all: 下载所有IDE配置\n- cursor: Cursor AI编辑器\n- 其他IDE类型见下方列表\n\n注意:如果未传入 ide 参数且无法从环境变量检测到 IDE,将提示错误并要求传入 ide 参数\n- windsurf: WindSurf AI编辑器\n- codebuddy: CodeBuddy AI编辑器\n- claude-code: Claude Code AI编辑器\n- cline: Cline AI编辑器\n- gemini-cli: Gemini CLI\n- opencode: OpenCode AI编辑器\n- qwen-code: 通义灵码\n- baidu-comate: 百度Comate\n- openai-codex-cli: OpenAI Codex CLI\n- augment-code: Augment Code\n- github-copilot: GitHub Copilot\n- roocode: RooCode AI编辑器\n- tongyi-lingma: 通义灵码\n- trae: Trae AI编辑器\n- qoder: Qoder AI编辑器\n- antigravity: Google Antigravity AI编辑器\n- vscode: Visual Studio Code\n- kiro: Kiro AI编辑器\n- aider: Aider AI编辑器\n\n特别说明:\n- rules 模板会自动包含当前 mcp 版本号信息(版本号:${ true ? "2.24.0" : 0}),便于后续维护和版本追踪\n- 下载 rules 模板时,如果项目中已存在 README.md 文件,系统会自动保护该文件不被覆盖(除非设置 overwrite=true)`,
14059
14198
  inputSchema: {
14060
14199
  template: zod_1.z
14061
14200
  .enum(["react", "vue", "miniprogram", "uniapp", "rules"])
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/cloudbase-mcp",
3
- "version": "2.23.11",
3
+ "version": "2.24.0",
4
4
  "packageManager": "pnpm@10.8.0",
5
5
  "description": "腾讯云开发 MCP Server,通过AI提示词和MCP协议+云开发,让开发更智能、更高效,当你在Cursor/ VSCode GitHub Copilot/WinSurf/CodeBuddy/Augment Code/Claude Code等AI编程工具里写代码时,它能自动帮你生成可直接部署的前后端应用+小程序,并一键发布到腾讯云开发 CloudBase。",
6
6
  "main": "./dist/index.cjs",