@cloudbase/cloudbase-mcp 1.8.3 → 1.8.5

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 (92) hide show
  1. package/README.md +215 -47
  2. package/dist/cli.cjs +6099 -0
  3. package/dist/cli.cjs.map +1 -0
  4. package/dist/cli.d.cts +1 -0
  5. package/dist/cli.d.ts +0 -2
  6. package/dist/cli.js +6062 -60
  7. package/dist/cli.js.map +1 -1
  8. package/dist/index.cjs +6112 -0
  9. package/dist/index.cjs.map +1 -0
  10. package/dist/index.d.cts +213 -0
  11. package/dist/index.d.ts +213 -5
  12. package/dist/index.js +6069 -7
  13. package/dist/index.js.map +1 -1
  14. package/package.json +14 -5
  15. package/dist/auth.d.ts +0 -3
  16. package/dist/auth.d.ts.map +0 -1
  17. package/dist/auth.js +0 -26
  18. package/dist/auth.js.map +0 -1
  19. package/dist/cli.d.ts.map +0 -1
  20. package/dist/cloudbase-manager.d.ts +0 -30
  21. package/dist/cloudbase-manager.d.ts.map +0 -1
  22. package/dist/cloudbase-manager.js +0 -156
  23. package/dist/cloudbase-manager.js.map +0 -1
  24. package/dist/index.d.ts.map +0 -1
  25. package/dist/interactive-server.d.ts +0 -34
  26. package/dist/interactive-server.d.ts.map +0 -1
  27. package/dist/interactive-server.js +0 -2545
  28. package/dist/interactive-server.js.map +0 -1
  29. package/dist/server.d.ts +0 -25
  30. package/dist/server.d.ts.map +0 -1
  31. package/dist/server.js +0 -60
  32. package/dist/server.js.map +0 -1
  33. package/dist/tools/database.d.ts +0 -3
  34. package/dist/tools/database.d.ts.map +0 -1
  35. package/dist/tools/database.js +0 -1329
  36. package/dist/tools/database.js.map +0 -1
  37. package/dist/tools/download.d.ts +0 -3
  38. package/dist/tools/download.d.ts.map +0 -1
  39. package/dist/tools/download.js +0 -259
  40. package/dist/tools/download.js.map +0 -1
  41. package/dist/tools/env.d.ts +0 -3
  42. package/dist/tools/env.d.ts.map +0 -1
  43. package/dist/tools/env.js +0 -213
  44. package/dist/tools/env.js.map +0 -1
  45. package/dist/tools/file.d.ts +0 -3
  46. package/dist/tools/file.d.ts.map +0 -1
  47. package/dist/tools/file.js +0 -211
  48. package/dist/tools/file.js.map +0 -1
  49. package/dist/tools/functions.d.ts +0 -5
  50. package/dist/tools/functions.d.ts.map +0 -1
  51. package/dist/tools/functions.js +0 -540
  52. package/dist/tools/functions.js.map +0 -1
  53. package/dist/tools/gateway.d.ts +0 -3
  54. package/dist/tools/gateway.d.ts.map +0 -1
  55. package/dist/tools/gateway.js +0 -39
  56. package/dist/tools/gateway.js.map +0 -1
  57. package/dist/tools/hosting.d.ts +0 -3
  58. package/dist/tools/hosting.d.ts.map +0 -1
  59. package/dist/tools/hosting.js +0 -231
  60. package/dist/tools/hosting.js.map +0 -1
  61. package/dist/tools/interactive.d.ts +0 -13
  62. package/dist/tools/interactive.d.ts.map +0 -1
  63. package/dist/tools/interactive.js +0 -195
  64. package/dist/tools/interactive.js.map +0 -1
  65. package/dist/tools/rag.d.ts +0 -3
  66. package/dist/tools/rag.d.ts.map +0 -1
  67. package/dist/tools/rag.js +0 -119
  68. package/dist/tools/rag.js.map +0 -1
  69. package/dist/tools/setup.d.ts +0 -3
  70. package/dist/tools/setup.d.ts.map +0 -1
  71. package/dist/tools/setup.js +0 -248
  72. package/dist/tools/setup.js.map +0 -1
  73. package/dist/tools/storage.d.ts +0 -3
  74. package/dist/tools/storage.d.ts.map +0 -1
  75. package/dist/tools/storage.js +0 -53
  76. package/dist/tools/storage.js.map +0 -1
  77. package/dist/types.d.ts +0 -62
  78. package/dist/types.d.ts.map +0 -1
  79. package/dist/types.js +0 -2
  80. package/dist/types.js.map +0 -1
  81. package/dist/utils/logger.d.ts +0 -50
  82. package/dist/utils/logger.d.ts.map +0 -1
  83. package/dist/utils/logger.js +0 -120
  84. package/dist/utils/logger.js.map +0 -1
  85. package/dist/utils/telemetry.d.ts +0 -73
  86. package/dist/utils/telemetry.d.ts.map +0 -1
  87. package/dist/utils/telemetry.js +0 -288
  88. package/dist/utils/telemetry.js.map +0 -1
  89. package/dist/utils/tool-wrapper.d.ts +0 -12
  90. package/dist/utils/tool-wrapper.d.ts.map +0 -1
  91. package/dist/utils/tool-wrapper.js +0 -100
  92. package/dist/utils/tool-wrapper.js.map +0 -1
@@ -1,248 +0,0 @@
1
- import { z } from "zod";
2
- import * as fs from "fs";
3
- import * as fsPromises from "fs/promises";
4
- import * as path from "path";
5
- import * as os from "os";
6
- import * as https from "https";
7
- import * as http from "http";
8
- import * as unzipper from "unzipper";
9
- // CloudBase 模板配置
10
- const TEMPLATES = {
11
- "react": {
12
- description: "React + CloudBase 全栈应用模板",
13
- url: "https://static.cloudbase.net/cloudbase-examples/web-cloudbase-react-template.zip"
14
- },
15
- "vue": {
16
- description: "Vue + CloudBase 全栈应用模板",
17
- url: "https://static.cloudbase.net/cloudbase-examples/web-cloudbase-vue-template.zip"
18
- },
19
- "miniprogram": {
20
- description: "微信小程序 + 云开发模板",
21
- url: "https://static.cloudbase.net/cloudbase-examples/miniprogram-cloudbase-miniprogram-template.zip"
22
- },
23
- "uniapp": {
24
- description: "UniApp + CloudBase 跨端应用模板",
25
- url: "https://static.cloudbase.net/cloudbase-examples/universal-cloudbase-uniapp-template.zip"
26
- },
27
- "rules": {
28
- description: "AI编辑器配置模板(包含所有主流编辑器配置)",
29
- url: "https://static.cloudbase.net/cloudbase-examples/web-cloudbase-project.zip"
30
- }
31
- };
32
- // 下载文件到临时目录
33
- async function downloadFile(url, filePath) {
34
- return new Promise((resolve, reject) => {
35
- const client = url.startsWith('https:') ? https : http;
36
- client.get(url, (res) => {
37
- if (res.statusCode === 200) {
38
- const file = fs.createWriteStream(filePath);
39
- res.pipe(file);
40
- file.on('finish', () => {
41
- file.close();
42
- resolve();
43
- });
44
- file.on('error', reject);
45
- }
46
- else if (res.statusCode === 302 || res.statusCode === 301) {
47
- // 处理重定向
48
- if (res.headers.location) {
49
- downloadFile(res.headers.location, filePath).then(resolve).catch(reject);
50
- }
51
- else {
52
- reject(new Error('重定向但没有location header'));
53
- }
54
- }
55
- else {
56
- reject(new Error(`下载失败,状态码: ${res.statusCode}`));
57
- }
58
- }).on('error', reject);
59
- });
60
- }
61
- // 解压ZIP文件
62
- async function extractZip(zipPath, extractPath) {
63
- try {
64
- // 创建解压目录
65
- await fsPromises.mkdir(extractPath, { recursive: true });
66
- // 使用 unzipper 库进行解压,兼容性更好
67
- await fs.createReadStream(zipPath)
68
- .pipe(unzipper.Extract({ path: extractPath }))
69
- .promise();
70
- }
71
- catch (error) {
72
- throw new Error(`解压失败: ${error instanceof Error ? error.message : '未知错误'}`);
73
- }
74
- }
75
- // 获取目录下所有文件的相对路径列表
76
- async function getAllFiles(dir, baseDir = dir) {
77
- const files = [];
78
- const entries = await fsPromises.readdir(dir, { withFileTypes: true });
79
- for (const entry of entries) {
80
- const fullPath = path.join(dir, entry.name);
81
- if (entry.isDirectory()) {
82
- const subFiles = await getAllFiles(fullPath, baseDir);
83
- files.push(...subFiles);
84
- }
85
- else {
86
- files.push(path.relative(baseDir, fullPath));
87
- }
88
- }
89
- return files;
90
- }
91
- // 复制文件,不覆盖已存在的文件
92
- async function copyFileIfNotExists(src, dest) {
93
- try {
94
- // 检查目标文件是否存在
95
- if (fs.existsSync(dest)) {
96
- return { copied: false, reason: '文件已存在' };
97
- }
98
- // 创建目标目录
99
- await fsPromises.mkdir(path.dirname(dest), { recursive: true });
100
- // 复制文件
101
- await fsPromises.copyFile(src, dest);
102
- return { copied: true };
103
- }
104
- catch (error) {
105
- return { copied: false, reason: `复制失败: ${error instanceof Error ? error.message : '未知错误'}` };
106
- }
107
- }
108
- // 复制文件,支持覆盖模式
109
- async function copyFile(src, dest, overwrite = false) {
110
- try {
111
- const destExists = fs.existsSync(dest);
112
- // 如果目标文件存在且不允许覆盖
113
- if (destExists && !overwrite) {
114
- return { copied: false, reason: '文件已存在', action: 'skipped' };
115
- }
116
- // 创建目标目录
117
- await fsPromises.mkdir(path.dirname(dest), { recursive: true });
118
- // 复制文件
119
- await fsPromises.copyFile(src, dest);
120
- return {
121
- copied: true,
122
- action: destExists ? 'overwritten' : 'created'
123
- };
124
- }
125
- catch (error) {
126
- return { copied: false, reason: `复制失败: ${error instanceof Error ? error.message : '未知错误'}` };
127
- }
128
- }
129
- export function registerSetupTools(server) {
130
- server.registerTool?.("downloadTemplate", {
131
- title: "下载项目模板",
132
- description: `自动下载并部署CloudBase项目模板。
133
-
134
- 支持的模板:
135
- - react: React + CloudBase 全栈应用模板
136
- - vue: Vue + CloudBase 全栈应用模板
137
- - miniprogram: 微信小程序 + 云开发模板
138
- - uniapp: UniApp + CloudBase 跨端应用模板
139
- - rules: 只包含AI编辑器配置文件(包含Cursor、WindSurf、CodeBuddy等所有主流编辑器配置),适合在已有项目中补充AI编辑器配置
140
-
141
- 工具会自动下载模板到临时目录,解压后如果检测到WORKSPACE_FOLDER_PATHS环境变量,则复制到项目目录。`,
142
- inputSchema: {
143
- template: z.enum(["react", "vue", "miniprogram", "uniapp", "rules"]).describe("要下载的模板类型"),
144
- overwrite: z.boolean().optional().describe("是否覆盖已存在的文件,默认为false(不覆盖)")
145
- },
146
- annotations: {
147
- readOnlyHint: false,
148
- destructiveHint: false,
149
- idempotentHint: false,
150
- openWorldHint: true,
151
- category: "setup"
152
- }
153
- }, async ({ template, overwrite = false }) => {
154
- try {
155
- const templateConfig = TEMPLATES[template];
156
- if (!templateConfig) {
157
- return {
158
- content: [
159
- {
160
- type: "text",
161
- text: `❌ 不支持的模板类型: ${template}`
162
- }
163
- ]
164
- };
165
- }
166
- // 创建临时目录
167
- const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'cloudbase-template-'));
168
- const zipPath = path.join(tempDir, 'template.zip');
169
- const extractDir = path.join(tempDir, 'extracted');
170
- // 下载和解压
171
- await downloadFile(templateConfig.url, zipPath);
172
- await extractZip(zipPath, extractDir);
173
- const extractedFiles = await getAllFiles(extractDir);
174
- // 检查是否需要复制到项目目录
175
- const workspaceFolder = process.env.WORKSPACE_FOLDER_PATHS;
176
- let finalFiles = [];
177
- let createdCount = 0;
178
- let overwrittenCount = 0;
179
- let skippedCount = 0;
180
- const results = [];
181
- if (workspaceFolder) {
182
- for (const relativePath of extractedFiles) {
183
- const srcPath = path.join(extractDir, relativePath);
184
- const destPath = path.join(workspaceFolder, relativePath);
185
- const copyResult = await copyFile(srcPath, destPath, overwrite);
186
- if (copyResult.copied) {
187
- if (copyResult.action === 'overwritten') {
188
- overwrittenCount++;
189
- }
190
- else {
191
- createdCount++;
192
- }
193
- finalFiles.push(destPath);
194
- }
195
- else {
196
- skippedCount++;
197
- finalFiles.push(srcPath);
198
- }
199
- }
200
- results.push(`✅ ${templateConfig.description} 同步完成`);
201
- results.push(`📁 临时目录: ${extractDir}`);
202
- const stats = [];
203
- if (createdCount > 0)
204
- stats.push(`新建 ${createdCount} 个文件`);
205
- if (overwrittenCount > 0)
206
- stats.push(`覆盖 ${overwrittenCount} 个文件`);
207
- if (skippedCount > 0)
208
- stats.push(`跳过 ${skippedCount} 个已存在文件`);
209
- if (stats.length > 0) {
210
- results.push(`📊 ${stats.join(',')}`);
211
- }
212
- if (overwrite || overwrittenCount > 0 || skippedCount > 0) {
213
- results.push(`🔄 覆盖模式: ${overwrite ? '启用' : '禁用'}`);
214
- }
215
- }
216
- else {
217
- finalFiles = extractedFiles.map(relativePath => path.join(extractDir, relativePath));
218
- results.push(`✅ ${templateConfig.description} 下载完成`);
219
- results.push(`📁 保存在临时目录: ${extractDir}`);
220
- }
221
- // 文件路径列表
222
- results.push('');
223
- results.push('📋 文件列表:');
224
- finalFiles.forEach(filePath => {
225
- results.push(`${filePath}`);
226
- });
227
- return {
228
- content: [
229
- {
230
- type: "text",
231
- text: results.join('\n')
232
- }
233
- ]
234
- };
235
- }
236
- catch (error) {
237
- return {
238
- content: [
239
- {
240
- type: "text",
241
- text: `❌ 下载模板失败: ${error instanceof Error ? error.message : '未知错误'}`
242
- }
243
- ]
244
- };
245
- }
246
- });
247
- }
248
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/tools/setup.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { ExtendedMcpServer } from '../server.js';
2
- export declare function registerStorageTools(server: ExtendedMcpServer): void;
3
- //# sourceMappingURL=storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/tools/storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,QAyD7D"}
@@ -1,53 +0,0 @@
1
- import { z } from "zod";
2
- import { getCloudBaseManager } from '../cloudbase-manager.js';
3
- export function registerStorageTools(server) {
4
- // 获取 cloudBaseOptions,如果没有则为 undefined
5
- const cloudBaseOptions = server.cloudBaseOptions;
6
- // 创建闭包函数来获取 CloudBase Manager
7
- const getManager = () => getCloudBaseManager({ cloudBaseOptions });
8
- // uploadFile - 上传文件到云存储
9
- server.registerTool?.("uploadFile", {
10
- title: "上传文件到云存储",
11
- description: "上传文件到云存储(区别于静态网站托管,云存储更适合存储业务数据文件)",
12
- inputSchema: {
13
- localPath: z.string().describe("本地文件路径,建议传入绝对路径,例如 /tmp/files/data.txt"),
14
- cloudPath: z.string().describe("云端文件路径,例如 files/data.txt")
15
- },
16
- annotations: {
17
- readOnlyHint: false,
18
- destructiveHint: false,
19
- idempotentHint: false,
20
- openWorldHint: true,
21
- category: "storage"
22
- }
23
- }, async ({ localPath, cloudPath }) => {
24
- const cloudbase = await getManager();
25
- // 上传文件
26
- await cloudbase.storage.uploadFile({
27
- localPath,
28
- cloudPath,
29
- onProgress: (progressData) => {
30
- console.log("Upload progress:", progressData);
31
- }
32
- });
33
- // 获取文件临时下载地址
34
- const fileUrls = await cloudbase.storage.getTemporaryUrl([{
35
- cloudPath: cloudPath,
36
- maxAge: 3600 // 临时链接有效期1小时
37
- }]);
38
- return {
39
- content: [
40
- {
41
- type: "text",
42
- text: JSON.stringify({
43
- message: "文件上传成功",
44
- cloudPath: cloudPath,
45
- temporaryUrl: fileUrls[0]?.url || "",
46
- expireTime: "1小时"
47
- }, null, 2)
48
- }
49
- ]
50
- };
51
- });
52
- }
53
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/tools/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAG7D,MAAM,UAAU,oBAAoB,CAAC,MAAyB;IAC5D,uCAAuC;IACvC,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEjD,8BAA8B;IAC9B,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,mBAAmB,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAEnE,wBAAwB;IACxB,MAAM,CAAC,YAAY,EAAE,CACnB,YAAY,EACZ;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,oCAAoC;QACjD,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACxE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;SAC3D;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,SAAS;SACpB;KACF,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAA4C,EAAE,EAAE;QAC3E,MAAM,SAAS,GAAG,MAAM,UAAU,EAAE,CAAA;QACpC,OAAO;QACP,MAAM,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC;YACjC,SAAS;YACT,SAAS;YACT,UAAU,EAAE,CAAC,YAAY,EAAE,EAAE;gBAC3B,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;YAChD,CAAC;SACF,CAAC,CAAC;QAEH,aAAa;QACb,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBACxD,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,IAAI,CAAC,aAAa;aAC3B,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,OAAO,EAAE,QAAQ;wBACjB,SAAS,EAAE,SAAS;wBACpB,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE;wBACpC,UAAU,EAAE,KAAK;qBAClB,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,62 +0,0 @@
1
- export interface UploadFileParams {
2
- cloudPath: string;
3
- fileContent: string;
4
- }
5
- export interface ListFilesParams {
6
- prefix: string;
7
- marker?: string;
8
- }
9
- export interface DeleteFileParams {
10
- cloudPath: string;
11
- }
12
- export interface GetFileInfoParams {
13
- cloudPath: string;
14
- }
15
- export interface ToolResponse {
16
- success: boolean;
17
- [key: string]: any;
18
- }
19
- export interface DataModelField {
20
- name: string;
21
- type: 'string' | 'number' | 'boolean' | 'date' | 'array' | 'object' | 'objectId' | 'file' | 'image';
22
- required?: boolean;
23
- default?: any;
24
- description?: string;
25
- validation?: {
26
- min?: number;
27
- max?: number;
28
- pattern?: string;
29
- enum?: any[];
30
- };
31
- }
32
- export interface DataModelSchema {
33
- type: 'object';
34
- properties: Record<string, {
35
- type: string;
36
- description?: string;
37
- required?: boolean;
38
- default?: any;
39
- validation?: any;
40
- }>;
41
- required?: string[];
42
- }
43
- export interface DataModel {
44
- id?: string;
45
- name: string;
46
- title: string;
47
- schema: DataModelSchema;
48
- envId?: string;
49
- status?: 'draft' | 'published';
50
- createdAt?: string;
51
- updatedAt?: string;
52
- }
53
- export interface CloudBaseOptions {
54
- secretId?: string;
55
- secretKey?: string;
56
- token?: string;
57
- envId?: string;
58
- proxy?: string;
59
- region?: string;
60
- envType?: string;
61
- }
62
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;IACpG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,OAAO,CAAC,EAAE,GAAG,CAAC;QACd,UAAU,CAAC,EAAE,GAAG,CAAC;KAClB,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1,50 +0,0 @@
1
- export declare enum LogLevel {
2
- DEBUG = 0,
3
- INFO = 1,
4
- WARN = 2,
5
- ERROR = 3
6
- }
7
- export interface LoggerOptions {
8
- enabled?: boolean;
9
- level?: LogLevel;
10
- logFile?: string;
11
- console?: boolean;
12
- }
13
- declare class Logger {
14
- private enabled;
15
- private level;
16
- private logFile;
17
- private useConsole;
18
- constructor(options?: LoggerOptions);
19
- private writeLog;
20
- debug(message: string, data?: any): void;
21
- info(message: string, data?: any): void;
22
- warn(message: string, data?: any): void;
23
- error(message: string, data?: any): void;
24
- setLevel(level: LogLevel): void;
25
- setEnabled(enabled: boolean): void;
26
- getLogFile(): string | null;
27
- clearLogs(): Promise<void>;
28
- getLogs(maxLines?: number): Promise<string[]>;
29
- getStatus(): {
30
- enabled: boolean;
31
- level: string;
32
- logFile: string | null;
33
- useConsole: boolean;
34
- };
35
- }
36
- export declare const logger: Logger;
37
- export declare const debug: (message: string, data?: any) => void;
38
- export declare const info: (message: string, data?: any) => void;
39
- export declare const warn: (message: string, data?: any) => void;
40
- export declare const error: (message: string, data?: any) => void;
41
- export declare const getLogs: (maxLines?: number) => Promise<string[]>;
42
- export declare const getLoggerStatus: () => {
43
- enabled: boolean;
44
- level: string;
45
- logFile: string | null;
46
- useConsole: boolean;
47
- };
48
- export declare const clearLogs: () => Promise<void>;
49
- export {};
50
- //# sourceMappingURL=logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAIA,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,cAAM,MAAM;IACV,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,UAAU,CAAU;gBAEhB,OAAO,GAAE,aAAkB;YAUzB,QAAQ;IAwBtB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAIjC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAIhC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAIhC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAKjC,QAAQ,CAAC,KAAK,EAAE,QAAQ;IAKxB,UAAU,CAAC,OAAO,EAAE,OAAO;IAK3B,UAAU,IAAI,MAAM,GAAG,IAAI;IAKrB,SAAS;IAWT,OAAO,CAAC,QAAQ,GAAE,MAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAezD,SAAS;;;;;;CAQV;AAGD,eAAO,MAAM,MAAM,QAIjB,CAAC;AAGH,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,SAAgC,CAAC;AAClF,eAAO,MAAM,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,SAA+B,CAAC;AAChF,eAAO,MAAM,IAAI,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,SAA+B,CAAC;AAChF,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,EAAE,OAAO,GAAG,SAAgC,CAAC;AAGlF,eAAO,MAAM,OAAO,GAAI,WAAW,MAAM,sBAA6B,CAAC;AACvE,eAAO,MAAM,eAAe;;;;;CAA2B,CAAC;AACxD,eAAO,MAAM,SAAS,qBAA2B,CAAC"}
@@ -1,120 +0,0 @@
1
- import fs from 'fs/promises';
2
- import path from 'path';
3
- import os from 'os';
4
- export var LogLevel;
5
- (function (LogLevel) {
6
- LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
7
- LogLevel[LogLevel["INFO"] = 1] = "INFO";
8
- LogLevel[LogLevel["WARN"] = 2] = "WARN";
9
- LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
10
- })(LogLevel || (LogLevel = {}));
11
- class Logger {
12
- enabled;
13
- level;
14
- logFile;
15
- useConsole;
16
- constructor(options = {}) {
17
- // 默认开启
18
- this.enabled = options.enabled ?? true;
19
- this.level = options.level ?? LogLevel.INFO;
20
- this.useConsole = options.console ?? false;
21
- // 默认日志文件路径
22
- this.logFile = options.logFile ?? path.join(os.tmpdir(), 'cloudbase-mcp.log');
23
- }
24
- async writeLog(level, message, data) {
25
- if (!this.enabled || level < this.level)
26
- return;
27
- const timestamp = new Date().toISOString();
28
- const levelName = LogLevel[level];
29
- const logMessage = data
30
- ? `[${timestamp}] [${levelName}] ${message} ${JSON.stringify(data, null, 2)}`
31
- : `[${timestamp}] [${levelName}] ${message}`;
32
- // 输出到控制台(在开发模式或明确启用时)
33
- if (this.useConsole) {
34
- console.error(logMessage); // 使用 stderr 避免污染 stdout
35
- }
36
- // 写入日志文件
37
- if (this.logFile) {
38
- try {
39
- await fs.appendFile(this.logFile, logMessage + '\n');
40
- }
41
- catch (error) {
42
- // 静默处理日志写入错误,避免影响主要功能
43
- }
44
- }
45
- }
46
- debug(message, data) {
47
- this.writeLog(LogLevel.DEBUG, message, data);
48
- }
49
- info(message, data) {
50
- this.writeLog(LogLevel.INFO, message, data);
51
- }
52
- warn(message, data) {
53
- this.writeLog(LogLevel.WARN, message, data);
54
- }
55
- error(message, data) {
56
- this.writeLog(LogLevel.ERROR, message, data);
57
- }
58
- // 设置日志级别
59
- setLevel(level) {
60
- this.level = level;
61
- }
62
- // 启用/禁用日志
63
- setEnabled(enabled) {
64
- this.enabled = enabled;
65
- }
66
- // 获取日志文件路径
67
- getLogFile() {
68
- return this.logFile;
69
- }
70
- // 清理日志文件
71
- async clearLogs() {
72
- if (this.logFile) {
73
- try {
74
- await fs.writeFile(this.logFile, '');
75
- }
76
- catch (error) {
77
- // 静默处理
78
- }
79
- }
80
- }
81
- // 读取日志内容
82
- async getLogs(maxLines = 1000) {
83
- if (!this.logFile)
84
- return [];
85
- try {
86
- const content = await fs.readFile(this.logFile, 'utf-8');
87
- const lines = content.split('\n').filter(line => line.trim());
88
- // 返回最近的 maxLines 行
89
- return lines.slice(-maxLines);
90
- }
91
- catch (error) {
92
- return [`读取日志文件失败: ${error instanceof Error ? error.message : String(error)}`];
93
- }
94
- }
95
- // 获取日志状态信息
96
- getStatus() {
97
- return {
98
- enabled: this.enabled,
99
- level: LogLevel[this.level],
100
- logFile: this.logFile,
101
- useConsole: this.useConsole
102
- };
103
- }
104
- }
105
- // 创建全局 logger 实例
106
- export const logger = new Logger({
107
- enabled: (process.env.MCP_DEBUG ?? 'true') === 'true',
108
- level: LogLevel.DEBUG,
109
- console: (process.env.NODE_ENV === 'development') || (process.env.MCP_CONSOLE_LOG === 'true')
110
- });
111
- // 便捷的导出函数
112
- export const debug = (message, data) => logger.debug(message, data);
113
- export const info = (message, data) => logger.info(message, data);
114
- export const warn = (message, data) => logger.warn(message, data);
115
- export const error = (message, data) => logger.error(message, data);
116
- // 日志管理函数
117
- export const getLogs = (maxLines) => logger.getLogs(maxLines);
118
- export const getLoggerStatus = () => logger.getStatus();
119
- export const clearLogs = () => logger.clearLogs();
120
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -1,73 +0,0 @@
1
- /**
2
- * 数据上报类
3
- * 用于收集 MCP 工具使用情况和错误信息,帮助改进产品
4
- *
5
- * 隐私保护:
6
- * - 可通过环境变量 CLOUDBASE_MCP_TELEMETRY_DISABLED=true 完全关闭
7
- * - 不收集敏感信息(代码内容、具体文件路径等)
8
- * - 使用设备指纹而非真实用户信息
9
- * - 所有数据仅用于产品改进,不用于其他用途
10
- */
11
- declare class TelemetryReporter {
12
- private deviceId;
13
- private userAgent;
14
- private additionalParams;
15
- private enabled;
16
- constructor();
17
- /**
18
- * 获取用户运行环境信息
19
- * 包含操作系统、Node版本和MCP版本等信息
20
- */
21
- getUserAgent(): {
22
- userAgent: string;
23
- deviceId: string;
24
- osType: string;
25
- osRelease: string;
26
- nodeVersion: string;
27
- arch: string;
28
- mcpVersion: string;
29
- };
30
- /**
31
- * 获取设备唯一标识
32
- * 基于主机名、CPU信息和MAC地址生成匿名设备指纹
33
- */
34
- private getDeviceId;
35
- /**
36
- * 发送HTTP请求
37
- */
38
- private postFetch;
39
- /**
40
- * 上报事件
41
- * @param eventCode 事件代码
42
- * @param eventData 事件数据
43
- */
44
- report(eventCode: string, eventData?: {
45
- [key: string]: any;
46
- }): Promise<void>;
47
- /**
48
- * 设置公共参数
49
- */
50
- addAdditionalParams(params: {
51
- [key: string]: any;
52
- }): void;
53
- /**
54
- * 检查是否启用
55
- */
56
- isEnabled(): boolean;
57
- }
58
- export declare const telemetryReporter: TelemetryReporter;
59
- export declare const reportToolCall: (params: {
60
- toolName: string;
61
- success: boolean;
62
- duration?: number;
63
- error?: string;
64
- inputParams?: any;
65
- }) => Promise<void>;
66
- export declare const reportToolkitLifecycle: (params: {
67
- event: "start" | "exit";
68
- duration?: number;
69
- exitCode?: number;
70
- error?: string;
71
- }) => Promise<void>;
72
- export {};
73
- //# sourceMappingURL=telemetry.d.ts.map