@cloudbase/cloudbase-mcp 1.8.40 → 1.8.42

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.
Files changed (4) hide show
  1. package/dist/cli.cjs +284 -117
  2. package/dist/index.cjs +284 -117
  3. package/dist/index.js +283 -115
  4. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1491,56 +1491,7 @@ function downloadFile(url) {
1491
1491
  });
1492
1492
  }
1493
1493
  function registerDownloadTools(server) {
1494
- // downloadRemoteFile - 下载远程文件到临时目录 (cloud-incompatible)
1495
1494
  server.registerTool("downloadRemoteFile", {
1496
- title: "下载远程文件到临时目录",
1497
- description: "下载远程文件到本地临时文件,返回一个系统的绝对路径。适用于需要临时处理文件的场景。",
1498
- inputSchema: {
1499
- url: zod_1.z.string().describe("远程文件的 URL 地址")
1500
- },
1501
- annotations: {
1502
- readOnlyHint: false,
1503
- destructiveHint: false,
1504
- idempotentHint: false,
1505
- openWorldHint: true,
1506
- category: "download"
1507
- }
1508
- }, async ({ url }) => {
1509
- try {
1510
- const result = await downloadFile(url);
1511
- return {
1512
- content: [
1513
- {
1514
- type: "text",
1515
- text: JSON.stringify({
1516
- success: true,
1517
- filePath: result.filePath,
1518
- contentType: result.contentType,
1519
- fileSize: result.fileSize,
1520
- message: "文件下载成功到临时目录",
1521
- note: "文件保存在临时目录中,请注意及时处理"
1522
- }, null, 2)
1523
- }
1524
- ]
1525
- };
1526
- }
1527
- catch (error) {
1528
- return {
1529
- content: [
1530
- {
1531
- type: "text",
1532
- text: JSON.stringify({
1533
- success: false,
1534
- error: error.message,
1535
- message: "文件下载失败"
1536
- }, null, 2)
1537
- }
1538
- ]
1539
- };
1540
- }
1541
- });
1542
- // downloadRemoteFileToPath - 下载远程文件到指定路径 (cloud-incompatible)
1543
- server.registerTool("downloadRemoteFileToPath", {
1544
1495
  title: "下载远程文件到指定路径",
1545
1496
  description: "下载远程文件到项目根目录下的指定相对路径。例如:小程序的 Tabbar 等素材图片,必须使用 **png** 格式,可以从 Unsplash、wikimedia【一般选用 500 大小即可、Pexels、Apple 官方 UI 等资源中选择来下载。",
1546
1497
  inputSchema: {
@@ -1921,28 +1872,6 @@ function registerHostingTools(server) {
1921
1872
  ]
1922
1873
  };
1923
1874
  });
1924
- // getWebsiteConfig - 获取静态网站托管配置
1925
- server.registerTool?.("getWebsiteConfig", {
1926
- title: "查询静态托管配置",
1927
- description: "获取静态网站托管配置",
1928
- inputSchema: {},
1929
- annotations: {
1930
- readOnlyHint: true,
1931
- openWorldHint: true,
1932
- category: "hosting"
1933
- }
1934
- }, async () => {
1935
- const cloudbase = await getManager();
1936
- const result = await cloudbase.hosting.getWebsiteConfig();
1937
- return {
1938
- content: [
1939
- {
1940
- type: "text",
1941
- text: JSON.stringify(result, null, 2)
1942
- }
1943
- ]
1944
- };
1945
- });
1946
1875
  // deleteFiles - 删除静态网站托管文件
1947
1876
  server.registerTool?.("deleteFiles", {
1948
1877
  title: "删除静态文件",
@@ -5079,7 +5008,7 @@ ${envIdSection}
5079
5008
  ## 环境信息
5080
5009
  - 操作系统: ${os_1.default.type()} ${os_1.default.release()}
5081
5010
  - Node.js版本: ${process.version}
5082
- - MCP 版本:${process.env.npm_package_version || "1.8.40" || 0}
5011
+ - MCP 版本:${process.env.npm_package_version || "1.8.42" || 0}
5083
5012
  - 系统架构: ${os_1.default.arch()}
5084
5013
  - 时间: ${new Date().toISOString()}
5085
5014
  - 请求ID: ${requestId}
@@ -6122,7 +6051,7 @@ function registerSetupTools(server) {
6122
6051
  // downloadTemplate - 下载项目模板 (cloud-incompatible)
6123
6052
  server.registerTool("downloadTemplate", {
6124
6053
  title: "下载项目模板",
6125
- description: `自动下载并部署CloudBase项目模板。\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- 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- vscode: Visual Studio Code\n\n特别说明:\n- rules 模板会自动包含当前 mcp 版本号信息(版本号:${ true ? "1.8.40" : 0}),便于后续维护和版本追踪\n- 下载 rules 模板时,如果项目中已存在 README.md 文件,系统会自动保护该文件不被覆盖(除非设置 overwrite=true)`,
6054
+ description: `自动下载并部署CloudBase项目模板。\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- 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- vscode: Visual Studio Code\n\n特别说明:\n- rules 模板会自动包含当前 mcp 版本号信息(版本号:${ true ? "1.8.42" : 0}),便于后续维护和版本追踪\n- 下载 rules 模板时,如果项目中已存在 README.md 文件,系统会自动保护该文件不被覆盖(除非设置 overwrite=true)`,
6126
6055
  inputSchema: {
6127
6056
  template: zod_1.z.enum(["react", "vue", "miniprogram", "uniapp", "rules"]).describe("要下载的模板类型"),
6128
6057
  ide: zod_1.z.enum(IDE_TYPES).optional().default("all").describe("指定要下载的IDE类型,默认为all(下载所有IDE配置)"),
@@ -6285,10 +6214,10 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__modelcontextprotocol_sdk_server_mcp_
6285
6214
  Object.defineProperty(exports, "__esModule", ({ value: true }));
6286
6215
  exports.registerEnvTools = registerEnvTools;
6287
6216
  const zod_1 = __webpack_require__(971);
6288
- const cloudbase_manager_js_1 = __webpack_require__(431);
6289
6217
  const auth_js_1 = __webpack_require__(291);
6290
- const interactive_js_1 = __webpack_require__(461);
6218
+ const cloudbase_manager_js_1 = __webpack_require__(431);
6291
6219
  const logger_js_1 = __webpack_require__(39);
6220
+ const interactive_js_1 = __webpack_require__(461);
6292
6221
  function registerEnvTools(server) {
6293
6222
  // 获取 cloudBaseOptions,如果没有则为 undefined
6294
6223
  const cloudBaseOptions = server.cloudBaseOptions;
@@ -6376,12 +6305,12 @@ function registerEnvTools(server) {
6376
6305
  };
6377
6306
  }
6378
6307
  });
6379
- // envQuery - 环境查询(合并 listEnvs + getEnvInfo + getEnvAuthDomains)
6308
+ // envQuery - 环境查询(合并 listEnvs + getEnvInfo + getEnvAuthDomains + getWebsiteConfig
6380
6309
  server.registerTool?.("envQuery", {
6381
6310
  title: "环境查询",
6382
- description: "查询云开发环境相关信息,支持查询环境列表、当前环境信息和安全域名。(原工具名:listEnvs/getEnvInfo/getEnvAuthDomains,为兼容旧AI规则可继续使用这些名称)",
6311
+ description: "查询云开发环境相关信息,支持查询环境列表、当前环境信息、安全域名和静态网站托管配置。(原工具名:listEnvs/getEnvInfo/getEnvAuthDomains/getWebsiteConfig,为兼容旧AI规则可继续使用这些名称)",
6383
6312
  inputSchema: {
6384
- action: zod_1.z.enum(["list", "info", "domains"]).describe("查询类型:list=环境列表,info=当前环境信息,domains=安全域名列表")
6313
+ action: zod_1.z.enum(["list", "info", "domains", "hosting"]).describe("查询类型:list=环境列表,info=当前环境信息,domains=安全域名列表,hosting=静态网站托管配置")
6385
6314
  },
6386
6315
  annotations: {
6387
6316
  readOnlyHint: true,
@@ -6411,6 +6340,10 @@ function registerEnvTools(server) {
6411
6340
  const cloudbaseDomains = await getManager();
6412
6341
  result = await cloudbaseDomains.env.getEnvAuthDomains();
6413
6342
  break;
6343
+ case "hosting":
6344
+ const cloudbaseHosting = await getManager();
6345
+ result = await cloudbaseHosting.hosting.getWebsiteConfig();
6346
+ break;
6414
6347
  default:
6415
6348
  throw new Error(`不支持的查询类型: ${action}`);
6416
6349
  }
@@ -8274,7 +8207,11 @@ function shouldRegisterTool(toolName) {
8274
8207
  'setupEnvironmentId',
8275
8208
  'clearUserEnvId',
8276
8209
  // Interactive tools - local server and file operations
8277
- 'interactiveDialog'
8210
+ 'interactiveDialog',
8211
+ // CloudRun tools - local file operations
8212
+ 'manageCloudRun',
8213
+ // Download tools - local file downloads
8214
+ 'manageStorage',
8278
8215
  ];
8279
8216
  const shouldRegister = !cloudIncompatibleTools.includes(toolName);
8280
8217
  if (!shouldRegister) {
@@ -8401,54 +8338,285 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
8401
8338
  exports.registerStorageTools = registerStorageTools;
8402
8339
  const zod_1 = __webpack_require__(971);
8403
8340
  const cloudbase_manager_js_1 = __webpack_require__(431);
8341
+ // Input schema for queryStorage tool
8342
+ const queryStorageInputSchema = {
8343
+ action: zod_1.z.enum(['list', 'info', 'url']).describe('查询操作类型:list=列出目录下的所有文件,info=获取指定文件的详细信息,url=获取文件的临时下载链接'),
8344
+ cloudPath: zod_1.z.string().describe('云端文件路径,例如 files/data.txt 或 files/(目录)'),
8345
+ maxAge: zod_1.z.number().min(1).max(86400).optional().default(3600).describe('临时链接有效期,单位为秒,取值范围:1-86400,默认值:3600(1小时)')
8346
+ };
8347
+ // Input schema for manageStorage tool
8348
+ const manageStorageInputSchema = {
8349
+ action: zod_1.z.enum(['upload', 'download', 'delete']).describe('管理操作类型:upload=上传文件或目录,download=下载文件或目录,delete=删除文件或目录'),
8350
+ localPath: zod_1.z.string().describe('本地文件路径,建议传入绝对路径,例如 /tmp/files/data.txt'),
8351
+ cloudPath: zod_1.z.string().describe('云端文件路径,例如 files/data.txt'),
8352
+ force: zod_1.z.boolean().optional().default(false).describe('强制操作开关,删除操作时建议设置为true以确认删除,默认false'),
8353
+ isDirectory: zod_1.z.boolean().optional().default(false).describe('是否为目录操作,true=目录操作,false=文件操作,默认false')
8354
+ };
8404
8355
  function registerStorageTools(server) {
8405
8356
  // 获取 cloudBaseOptions,如果没有则为 undefined
8406
8357
  const cloudBaseOptions = server.cloudBaseOptions;
8407
8358
  // 创建闭包函数来获取 CloudBase Manager
8408
8359
  const getManager = () => (0, cloudbase_manager_js_1.getCloudBaseManager)({ cloudBaseOptions });
8409
- // uploadFile - 上传文件到云存储 (cloud-incompatible)
8410
- server.registerTool("uploadFile", {
8411
- title: "上传文件到云存储",
8412
- description: "上传文件到云存储(区别于静态网站托管,云存储更适合存储业务数据文件)",
8413
- inputSchema: {
8414
- localPath: zod_1.z.string().describe("本地文件路径,建议传入绝对路径,例如 /tmp/files/data.txt"),
8415
- cloudPath: zod_1.z.string().describe("云端文件路径,例如 files/data.txt")
8416
- },
8360
+ // Tool 1: queryStorage - 查询存储信息(只读操作)
8361
+ server.registerTool("queryStorage", {
8362
+ title: "查询存储信息",
8363
+ description: "查询云存储信息,支持列出目录文件、获取文件信息、获取临时下载链接等只读操作。返回的文件信息包括文件名、大小、修改时间、下载链接等。",
8364
+ inputSchema: queryStorageInputSchema,
8365
+ annotations: {
8366
+ readOnlyHint: true,
8367
+ openWorldHint: true,
8368
+ category: "storage"
8369
+ }
8370
+ }, async (args) => {
8371
+ try {
8372
+ const input = args;
8373
+ const manager = await getManager();
8374
+ if (!manager) {
8375
+ throw new Error("Failed to initialize CloudBase manager. Please check your credentials and environment configuration.");
8376
+ }
8377
+ const storageService = manager.storage;
8378
+ switch (input.action) {
8379
+ case 'list': {
8380
+ const result = await storageService.listDirectoryFiles(input.cloudPath);
8381
+ return {
8382
+ content: [
8383
+ {
8384
+ type: "text",
8385
+ text: JSON.stringify({
8386
+ success: true,
8387
+ data: {
8388
+ action: 'list',
8389
+ cloudPath: input.cloudPath,
8390
+ files: result || [],
8391
+ totalCount: result?.length || 0
8392
+ },
8393
+ message: `Successfully listed ${result?.length || 0} files in directory '${input.cloudPath}'`
8394
+ }, null, 2)
8395
+ }
8396
+ ]
8397
+ };
8398
+ }
8399
+ case 'info': {
8400
+ const result = await storageService.getFileInfo(input.cloudPath);
8401
+ return {
8402
+ content: [
8403
+ {
8404
+ type: "text",
8405
+ text: JSON.stringify({
8406
+ success: true,
8407
+ data: {
8408
+ action: 'info',
8409
+ cloudPath: input.cloudPath,
8410
+ fileInfo: result
8411
+ },
8412
+ message: `Successfully retrieved file info for '${input.cloudPath}'`
8413
+ }, null, 2)
8414
+ }
8415
+ ]
8416
+ };
8417
+ }
8418
+ case 'url': {
8419
+ const result = await storageService.getTemporaryUrl([{
8420
+ cloudPath: input.cloudPath,
8421
+ maxAge: input.maxAge || 3600
8422
+ }]);
8423
+ return {
8424
+ content: [
8425
+ {
8426
+ type: "text",
8427
+ text: JSON.stringify({
8428
+ success: true,
8429
+ data: {
8430
+ action: 'url',
8431
+ cloudPath: input.cloudPath,
8432
+ temporaryUrl: result[0]?.url || "",
8433
+ expireTime: `${input.maxAge || 3600}秒`,
8434
+ fileId: result[0]?.fileId || ""
8435
+ },
8436
+ message: `Successfully generated temporary URL for '${input.cloudPath}'`
8437
+ }, null, 2)
8438
+ }
8439
+ ]
8440
+ };
8441
+ }
8442
+ default:
8443
+ throw new Error(`Unsupported action: ${input.action}`);
8444
+ }
8445
+ }
8446
+ catch (error) {
8447
+ return {
8448
+ content: [
8449
+ {
8450
+ type: "text",
8451
+ text: JSON.stringify({
8452
+ success: false,
8453
+ error: error.message || 'Unknown error occurred',
8454
+ message: `Failed to query storage information. Please check your permissions and parameters.`
8455
+ }, null, 2)
8456
+ }
8457
+ ]
8458
+ };
8459
+ }
8460
+ });
8461
+ // Tool 2: manageStorage - 管理存储文件(写操作)
8462
+ server.registerTool("manageStorage", {
8463
+ title: "管理存储文件",
8464
+ description: "管理云存储文件,支持上传文件/目录、下载文件/目录、删除文件/目录等操作。删除操作需要设置force=true进行确认,防止误删除重要文件。",
8465
+ inputSchema: manageStorageInputSchema,
8417
8466
  annotations: {
8418
8467
  readOnlyHint: false,
8419
- destructiveHint: false,
8468
+ destructiveHint: true,
8420
8469
  idempotentHint: false,
8421
8470
  openWorldHint: true,
8422
8471
  category: "storage"
8423
8472
  }
8424
- }, async ({ localPath, cloudPath }) => {
8425
- const cloudbase = await getManager();
8426
- // 上传文件
8427
- await cloudbase.storage.uploadFile({
8428
- localPath,
8429
- cloudPath,
8430
- onProgress: (progressData) => {
8431
- console.log("Upload progress:", progressData);
8473
+ }, async (args) => {
8474
+ try {
8475
+ const input = args;
8476
+ const manager = await getManager();
8477
+ if (!manager) {
8478
+ throw new Error("Failed to initialize CloudBase manager. Please check your credentials and environment configuration.");
8432
8479
  }
8433
- });
8434
- // 获取文件临时下载地址
8435
- const fileUrls = await cloudbase.storage.getTemporaryUrl([{
8436
- cloudPath: cloudPath,
8437
- maxAge: 3600 // 临时链接有效期1小时
8438
- }]);
8439
- return {
8440
- content: [
8441
- {
8442
- type: "text",
8443
- text: JSON.stringify({
8444
- message: "文件上传成功",
8445
- cloudPath: cloudPath,
8446
- temporaryUrl: fileUrls[0]?.url || "",
8447
- expireTime: "1小时"
8448
- }, null, 2)
8480
+ const storageService = manager.storage;
8481
+ switch (input.action) {
8482
+ case 'upload': {
8483
+ if (input.isDirectory) {
8484
+ // 上传目录
8485
+ await storageService.uploadDirectory({
8486
+ localPath: input.localPath,
8487
+ cloudPath: input.cloudPath,
8488
+ onProgress: (progressData) => {
8489
+ console.log("Upload directory progress:", progressData);
8490
+ }
8491
+ });
8492
+ }
8493
+ else {
8494
+ // 上传文件
8495
+ await storageService.uploadFile({
8496
+ localPath: input.localPath,
8497
+ cloudPath: input.cloudPath,
8498
+ onProgress: (progressData) => {
8499
+ console.log("Upload file progress:", progressData);
8500
+ }
8501
+ });
8502
+ }
8503
+ // 获取文件临时下载地址
8504
+ const fileUrls = await storageService.getTemporaryUrl([{
8505
+ cloudPath: input.cloudPath,
8506
+ maxAge: 3600 // 临时链接有效期1小时
8507
+ }]);
8508
+ return {
8509
+ content: [
8510
+ {
8511
+ type: "text",
8512
+ text: JSON.stringify({
8513
+ success: true,
8514
+ data: {
8515
+ action: 'upload',
8516
+ localPath: input.localPath,
8517
+ cloudPath: input.cloudPath,
8518
+ isDirectory: input.isDirectory,
8519
+ temporaryUrl: fileUrls[0]?.url || "",
8520
+ expireTime: "1小时"
8521
+ },
8522
+ message: `Successfully uploaded ${input.isDirectory ? 'directory' : 'file'} from '${input.localPath}' to '${input.cloudPath}'`
8523
+ }, null, 2)
8524
+ }
8525
+ ]
8526
+ };
8449
8527
  }
8450
- ]
8451
- };
8528
+ case 'download': {
8529
+ if (input.isDirectory) {
8530
+ // 下载目录
8531
+ await storageService.downloadDirectory({
8532
+ cloudPath: input.cloudPath,
8533
+ localPath: input.localPath
8534
+ });
8535
+ }
8536
+ else {
8537
+ // 下载文件
8538
+ await storageService.downloadFile({
8539
+ cloudPath: input.cloudPath,
8540
+ localPath: input.localPath
8541
+ });
8542
+ }
8543
+ return {
8544
+ content: [
8545
+ {
8546
+ type: "text",
8547
+ text: JSON.stringify({
8548
+ success: true,
8549
+ data: {
8550
+ action: 'download',
8551
+ cloudPath: input.cloudPath,
8552
+ localPath: input.localPath,
8553
+ isDirectory: input.isDirectory
8554
+ },
8555
+ message: `Successfully downloaded ${input.isDirectory ? 'directory' : 'file'} from '${input.cloudPath}' to '${input.localPath}'`
8556
+ }, null, 2)
8557
+ }
8558
+ ]
8559
+ };
8560
+ }
8561
+ case 'delete': {
8562
+ if (!input.force) {
8563
+ return {
8564
+ content: [
8565
+ {
8566
+ type: "text",
8567
+ text: JSON.stringify({
8568
+ success: false,
8569
+ error: "Delete operation requires confirmation",
8570
+ message: "Please set force: true to confirm deletion. This action cannot be undone."
8571
+ }, null, 2)
8572
+ }
8573
+ ]
8574
+ };
8575
+ }
8576
+ if (input.isDirectory) {
8577
+ // 删除目录
8578
+ await storageService.deleteDirectory(input.cloudPath);
8579
+ }
8580
+ else {
8581
+ // 删除文件
8582
+ await storageService.deleteFile([input.cloudPath]);
8583
+ }
8584
+ return {
8585
+ content: [
8586
+ {
8587
+ type: "text",
8588
+ text: JSON.stringify({
8589
+ success: true,
8590
+ data: {
8591
+ action: 'delete',
8592
+ cloudPath: input.cloudPath,
8593
+ isDirectory: input.isDirectory,
8594
+ deleted: true
8595
+ },
8596
+ message: `Successfully deleted ${input.isDirectory ? 'directory' : 'file'} '${input.cloudPath}'`
8597
+ }, null, 2)
8598
+ }
8599
+ ]
8600
+ };
8601
+ }
8602
+ default:
8603
+ throw new Error(`Unsupported action: ${input.action}`);
8604
+ }
8605
+ }
8606
+ catch (error) {
8607
+ return {
8608
+ content: [
8609
+ {
8610
+ type: "text",
8611
+ text: JSON.stringify({
8612
+ success: false,
8613
+ error: error.message || 'Unknown error occurred',
8614
+ message: `Failed to manage storage. Please check your permissions and parameters.`
8615
+ }, null, 2)
8616
+ }
8617
+ ]
8618
+ };
8619
+ }
8452
8620
  });
8453
8621
  }
8454
8622
 
@@ -8739,7 +8907,7 @@ class TelemetryReporter {
8739
8907
  const nodeVersion = process.version; // Node.js版本
8740
8908
  const arch = os_1.default.arch(); // 系统架构
8741
8909
  // 从构建时注入的版本号获取MCP版本信息
8742
- const mcpVersion = process.env.npm_package_version || "1.8.40" || 0;
8910
+ const mcpVersion = process.env.npm_package_version || "1.8.42" || 0;
8743
8911
  return {
8744
8912
  userAgent: `${osType} ${osRelease} ${arch} ${nodeVersion} CloudBase-MCP/${mcpVersion}`,
8745
8913
  deviceId: this.deviceId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/cloudbase-mcp",
3
- "version": "1.8.40",
3
+ "version": "1.8.42",
4
4
  "description": "腾讯云开发 MCP Server,通过AI提示词和MCP协议+云开发,让开发更智能、更高效,当你在Cursor/ VSCode GitHub Copilot/WinSurf/CodeBuddy/Augment Code/Claude Code等AI编程工具里写代码时,它能自动帮你生成可直接部署的前后端应用+小程序,并一键发布到腾讯云开发 CloudBase。",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.js",