@cloudbase/cloudbase-mcp 1.8.2 → 1.8.4

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 +72 -44
  2. package/dist/cli.cjs +6080 -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 +6043 -60
  7. package/dist/cli.js.map +1 -1
  8. package/dist/index.cjs +6093 -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 +6050 -7
  13. package/dist/index.js.map +1 -1
  14. package/package.json +15 -6
  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 -27
  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 -35
  90. package/dist/utils/tool-wrapper.d.ts.map +0 -1
  91. package/dist/utils/tool-wrapper.js +0 -119
  92. package/dist/utils/tool-wrapper.js.map +0 -1
@@ -1,231 +0,0 @@
1
- import { z } from "zod";
2
- import { getCloudBaseManager } from '../cloudbase-manager.js';
3
- export function registerHostingTools(server) {
4
- // 获取 cloudBaseOptions,如果没有则为 undefined
5
- const cloudBaseOptions = server.cloudBaseOptions;
6
- // 创建闭包函数来获取 CloudBase Manager
7
- const getManager = () => getCloudBaseManager({ cloudBaseOptions });
8
- // uploadFiles - 上传文件到静态网站托管
9
- server.registerTool?.("uploadFiles", {
10
- title: "上传静态文件",
11
- description: "上传文件到静态网站托管",
12
- inputSchema: {
13
- localPath: z.string().optional().describe("本地文件或文件夹路径,需要是绝对路径,例如 /tmp/files/data.txt"),
14
- cloudPath: z.string().optional().describe("云端文件或文件夹路径,例如files/data.txt"),
15
- files: z.array(z.object({
16
- localPath: z.string(),
17
- cloudPath: z.string()
18
- })).default([]).describe("多文件上传配置"),
19
- ignore: z.union([z.string(), z.array(z.string())]).optional().describe("忽略文件模式")
20
- },
21
- annotations: {
22
- readOnlyHint: false,
23
- destructiveHint: false,
24
- idempotentHint: false,
25
- openWorldHint: true,
26
- category: "hosting"
27
- }
28
- }, async ({ localPath, cloudPath, files = [], ignore }) => {
29
- const cloudbase = await getManager();
30
- const result = await cloudbase.hosting.uploadFiles({
31
- localPath,
32
- cloudPath,
33
- files,
34
- ignore
35
- });
36
- // 获取环境信息
37
- const envInfo = await cloudbase.env.getEnvInfo();
38
- const staticDomain = envInfo.EnvInfo?.StaticStorages?.[0]?.StaticDomain;
39
- return {
40
- content: [
41
- {
42
- type: "text",
43
- text: JSON.stringify({
44
- ...result,
45
- staticDomain,
46
- message: "文件上传成功",
47
- accessUrl: staticDomain ? `https://${staticDomain}/${cloudPath || ''}` : "请检查静态托管配置"
48
- }, null, 2)
49
- }
50
- ]
51
- };
52
- });
53
- // getWebsiteConfig - 获取静态网站托管配置
54
- server.registerTool?.("getWebsiteConfig", {
55
- title: "查询静态托管配置",
56
- description: "获取静态网站托管配置",
57
- inputSchema: {},
58
- annotations: {
59
- readOnlyHint: true,
60
- openWorldHint: true,
61
- category: "hosting"
62
- }
63
- }, async () => {
64
- const cloudbase = await getManager();
65
- const result = await cloudbase.hosting.getWebsiteConfig();
66
- return {
67
- content: [
68
- {
69
- type: "text",
70
- text: JSON.stringify(result, null, 2)
71
- }
72
- ]
73
- };
74
- });
75
- // deleteFiles - 删除静态网站托管文件
76
- server.registerTool?.("deleteFiles", {
77
- title: "删除静态文件",
78
- description: "删除静态网站托管的文件或文件夹",
79
- inputSchema: {
80
- cloudPath: z.string().describe("云端文件或文件夹路径"),
81
- isDir: z.boolean().default(false).describe("是否为文件夹")
82
- },
83
- annotations: {
84
- readOnlyHint: false,
85
- destructiveHint: true,
86
- idempotentHint: true,
87
- openWorldHint: true,
88
- category: "hosting"
89
- }
90
- }, async ({ cloudPath, isDir = false }) => {
91
- const cloudbase = await getManager();
92
- const result = await cloudbase.hosting.deleteFiles({
93
- cloudPath,
94
- isDir
95
- });
96
- return {
97
- content: [
98
- {
99
- type: "text",
100
- text: JSON.stringify(result, null, 2)
101
- }
102
- ]
103
- };
104
- });
105
- // findFiles - 搜索文件
106
- server.registerTool?.("findFiles", {
107
- title: "搜索静态文件",
108
- description: "搜索静态网站托管的文件",
109
- inputSchema: {
110
- prefix: z.string().describe("匹配前缀"),
111
- marker: z.string().optional().describe("起始对象键标记"),
112
- maxKeys: z.number().optional().describe("单次返回最大条目数")
113
- },
114
- annotations: {
115
- readOnlyHint: true,
116
- openWorldHint: true,
117
- category: "hosting"
118
- }
119
- }, async ({ prefix, marker, maxKeys }) => {
120
- const cloudbase = await getManager();
121
- const result = await cloudbase.hosting.findFiles({
122
- prefix,
123
- marker,
124
- maxKeys
125
- });
126
- return {
127
- content: [
128
- {
129
- type: "text",
130
- text: JSON.stringify(result, null, 2)
131
- }
132
- ]
133
- };
134
- });
135
- // domainManagement - 统一的域名管理工具
136
- server.registerTool?.("domainManagement", {
137
- title: "静态托管域名管理",
138
- description: "统一的域名管理工具,支持绑定、解绑、查询和修改域名配置",
139
- inputSchema: {
140
- action: z.enum(["create", "delete", "check", "modify"]).describe("操作类型: create=绑定域名, delete=解绑域名, check=查询域名配置, modify=修改域名配置"),
141
- // 绑定域名参数
142
- domain: z.string().optional().describe("域名"),
143
- certId: z.string().optional().describe("证书ID(绑定域名时必需)"),
144
- domains: z.array(z.string()).optional().describe("域名列表(查询配置时使用)"),
145
- // 修改域名参数
146
- domainId: z.number().optional().describe("域名ID(修改配置时必需)"),
147
- domainConfig: z.object({
148
- Refer: z.object({
149
- Switch: z.string(),
150
- RefererRules: z.array(z.object({
151
- RefererType: z.string(),
152
- Referers: z.array(z.string()),
153
- AllowEmpty: z.boolean()
154
- })).optional()
155
- }).optional(),
156
- Cache: z.array(z.object({
157
- RuleType: z.string(),
158
- RuleValue: z.string(),
159
- CacheTtl: z.number()
160
- })).optional(),
161
- IpFilter: z.object({
162
- Switch: z.string(),
163
- FilterType: z.string().optional(),
164
- Filters: z.array(z.string()).optional()
165
- }).optional(),
166
- IpFreqLimit: z.object({
167
- Switch: z.string(),
168
- Qps: z.number().optional()
169
- }).optional()
170
- }).optional().describe("域名配置(修改配置时使用)")
171
- },
172
- annotations: {
173
- readOnlyHint: false,
174
- destructiveHint: false,
175
- idempotentHint: false,
176
- openWorldHint: true,
177
- category: "hosting"
178
- }
179
- }, async ({ action, domain, certId, domains, domainId, domainConfig }) => {
180
- const cloudbase = await getManager();
181
- let result;
182
- switch (action) {
183
- case "create":
184
- if (!domain || !certId) {
185
- throw new Error("绑定域名需要提供域名和证书ID");
186
- }
187
- result = await cloudbase.hosting.CreateHostingDomain({
188
- domain,
189
- certId
190
- });
191
- break;
192
- case "delete":
193
- if (!domain) {
194
- throw new Error("解绑域名需要提供域名");
195
- }
196
- result = await cloudbase.hosting.deleteHostingDomain({
197
- domain
198
- });
199
- break;
200
- case "check":
201
- if (!domains || domains.length === 0) {
202
- throw new Error("查询域名配置需要提供域名列表");
203
- }
204
- result = await cloudbase.hosting.tcbCheckResource({
205
- domains
206
- });
207
- break;
208
- case "modify":
209
- if (!domain || domainId === undefined || !domainConfig) {
210
- throw new Error("修改域名配置需要提供域名、域名ID和配置信息");
211
- }
212
- result = await cloudbase.hosting.tcbModifyAttribute({
213
- domain,
214
- domainId,
215
- domainConfig
216
- });
217
- break;
218
- default:
219
- throw new Error(`不支持的操作类型: ${action}`);
220
- }
221
- return {
222
- content: [
223
- {
224
- type: "text",
225
- text: JSON.stringify(result, null, 2)
226
- }
227
- ]
228
- };
229
- });
230
- }
231
- //# sourceMappingURL=hosting.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hosting.js","sourceRoot":"","sources":["../../src/tools/hosting.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { ExtendedMcpServer } from '../server.js';
2
- export declare function registerInteractiveTools(server: ExtendedMcpServer): void;
3
- export declare function _promptAndSetEnvironmentId(autoSelectSingle: boolean): Promise<{
4
- selectedEnvId: string | null;
5
- cancelled: boolean;
6
- error?: string;
7
- noEnvs?: boolean;
8
- }>;
9
- export declare function saveEnvIdToUserConfig(envId: string): Promise<void>;
10
- export declare function loadEnvIdFromUserConfig(): Promise<string | null>;
11
- export declare function clearUserEnvId(): Promise<void>;
12
- export declare function autoSetupEnvironmentId(): Promise<string | null>;
13
- //# sourceMappingURL=interactive.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/tools/interactive.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,QA8FjE;AAGD,wBAAsB,0BAA0B,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAwC3K;AAQD,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBxE;AAGD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBtE;AAGD,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAUpD;AAGD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAgBrE"}
@@ -1,195 +0,0 @@
1
- import { z } from "zod";
2
- import { getInteractiveServer } from "../interactive-server.js";
3
- import { getCloudBaseManager } from '../cloudbase-manager.js';
4
- import { getLoginState } from '../auth.js';
5
- import { debug, warn } from '../utils/logger.js';
6
- import fs from 'fs/promises';
7
- import path from 'path';
8
- import os from 'os';
9
- export function registerInteractiveTools(server) {
10
- // 统一的交互式对话工具
11
- server.registerTool?.("interactiveDialog", {
12
- title: "交互式对话",
13
- description: "统一的交互式对话工具,支持需求澄清和任务确认,当需要和用户确认下一步的操作的时候,可以调用这个工具的clarify,如果有敏感的操作,需要用户确认,可以调用这个工具的confirm",
14
- inputSchema: {
15
- type: z.enum(['clarify', 'confirm']).describe("交互类型: clarify=需求澄清, confirm=任务确认"),
16
- message: z.string().optional().describe("对话消息内容"),
17
- options: z.array(z.string()).optional().describe("可选的预设选项"),
18
- forceUpdate: z.boolean().optional().describe("是否强制更新环境ID配置"),
19
- risks: z.array(z.string()).optional().describe("操作风险提示")
20
- },
21
- annotations: {
22
- readOnlyHint: false,
23
- destructiveHint: false,
24
- idempotentHint: false,
25
- openWorldHint: false,
26
- category: "interactive"
27
- }
28
- }, async ({ type, message, options, forceUpdate = false, risks }) => {
29
- try {
30
- switch (type) {
31
- case 'clarify': {
32
- if (!message) {
33
- throw new Error("需求澄清必须提供message参数");
34
- }
35
- const interactiveServer = getInteractiveServer();
36
- const result = await interactiveServer.clarifyRequest(message, options);
37
- if (result.cancelled) {
38
- return { content: [{ type: "text", text: "用户取消了需求澄清" }] };
39
- }
40
- return {
41
- content: [{
42
- type: "text",
43
- text: `📝 用户澄清反馈:\n${result.data}`
44
- }]
45
- };
46
- }
47
- case 'confirm': {
48
- if (!message) {
49
- throw new Error("任务确认必须提供message参数");
50
- }
51
- let dialogMessage = `🎯 即将执行任务:\n${message}`;
52
- if (risks && risks.length > 0) {
53
- dialogMessage += `\n\n⚠️ 风险提示:\n${risks.map(risk => `• ${risk}`).join('\n')}`;
54
- }
55
- dialogMessage += `\n\n是否继续执行此任务?`;
56
- const dialogOptions = options || ["确认执行", "取消操作", "需要修改任务"];
57
- const interactiveServer = getInteractiveServer();
58
- const result = await interactiveServer.clarifyRequest(dialogMessage, dialogOptions);
59
- if (result.cancelled || (result.data && result.data.includes && result.data.includes('取消'))) {
60
- return { content: [{ type: "text", text: "❌ 用户取消了任务执行" }] };
61
- }
62
- return {
63
- content: [{
64
- type: "text",
65
- text: `✅ 用户确认: ${result.data}`
66
- }]
67
- };
68
- }
69
- default:
70
- throw new Error(`不支持的交互类型: ${type}`);
71
- }
72
- }
73
- catch (error) {
74
- return {
75
- content: [{
76
- type: "text",
77
- text: `交互对话出错: ${error instanceof Error ? error.message : String(error)}`
78
- }]
79
- };
80
- }
81
- });
82
- }
83
- // 封装了获取环境、提示选择、保存配置的核心逻辑
84
- export async function _promptAndSetEnvironmentId(autoSelectSingle) {
85
- // 1. 确保用户已登录
86
- const loginState = await getLoginState();
87
- debug('loginState', loginState);
88
- if (!loginState) {
89
- debug('请先登录云开发账户');
90
- return { selectedEnvId: null, cancelled: false, error: "请先登录云开发账户" };
91
- }
92
- // 2. 获取可用环境列表
93
- const cloudbase = await getCloudBaseManager({ requireEnvId: false });
94
- const envResult = await cloudbase.env.listEnvs();
95
- debug('envResult', envResult);
96
- if (!envResult || !envResult.EnvList || envResult.EnvList.length === 0) {
97
- return { selectedEnvId: null, cancelled: false, noEnvs: true };
98
- }
99
- const { EnvList } = envResult;
100
- let selectedEnvId = null;
101
- // 3. 根据情况选择或提示用户选择
102
- if (autoSelectSingle && EnvList.length === 1 && EnvList[0].EnvId) {
103
- selectedEnvId = EnvList[0].EnvId;
104
- }
105
- else {
106
- const interactiveServer = getInteractiveServer();
107
- const result = await interactiveServer.collectEnvId(EnvList);
108
- if (result.cancelled) {
109
- return { selectedEnvId: null, cancelled: true };
110
- }
111
- selectedEnvId = result.data;
112
- }
113
- // 4. 保存环境ID配置
114
- if (selectedEnvId) {
115
- await saveEnvIdToUserConfig(selectedEnvId);
116
- debug('环境ID已保存到配置文件:', selectedEnvId);
117
- }
118
- return { selectedEnvId, cancelled: false };
119
- }
120
- // 获取用户配置文件路径
121
- function getUserConfigPath() {
122
- return path.join(os.homedir(), '.cloudbase-env-id');
123
- }
124
- // 保存环境ID到用户配置文件
125
- export async function saveEnvIdToUserConfig(envId) {
126
- const configPath = getUserConfigPath();
127
- try {
128
- const config = {
129
- envId,
130
- updatedAt: new Date().toISOString(),
131
- version: '1.0'
132
- };
133
- await fs.writeFile(configPath, JSON.stringify(config, null, 2), 'utf8');
134
- debug('环境ID配置已保存到文件:', configPath);
135
- }
136
- catch (error) {
137
- console.error('保存环境ID配置失败:', error);
138
- throw error;
139
- }
140
- }
141
- // 从用户配置文件读取环境ID
142
- export async function loadEnvIdFromUserConfig() {
143
- const configPath = getUserConfigPath();
144
- try {
145
- const configContent = await fs.readFile(configPath, 'utf8');
146
- const config = JSON.parse(configContent);
147
- const envId = config.envId || null;
148
- if (!envId) {
149
- warn(`Config file ${configPath} found, but 'envId' property is missing or empty.`);
150
- }
151
- else {
152
- debug('从配置文件加载环境ID:', envId);
153
- }
154
- return envId;
155
- }
156
- catch (err) {
157
- // 文件不存在是正常情况,不应告警。只在文件存在但有问题时告警。
158
- if (err.code !== 'ENOENT') {
159
- warn(`Failed to load envId from config file at ${configPath}. Error: ${err.message}`);
160
- }
161
- else {
162
- debug(`Env config file not found at ${configPath}, which is expected if not set.`);
163
- }
164
- return null;
165
- }
166
- }
167
- // 清理用户环境ID配置
168
- export async function clearUserEnvId() {
169
- const configPath = getUserConfigPath();
170
- try {
171
- await fs.unlink(configPath);
172
- debug('环境ID配置文件已删除:', configPath);
173
- }
174
- catch (error) {
175
- // 文件不存在或删除失败,忽略错误
176
- debug('环境ID配置文件不存在或已清理:', configPath);
177
- }
178
- }
179
- // 自动设置环境ID(无需MCP工具调用)
180
- export async function autoSetupEnvironmentId() {
181
- try {
182
- const { selectedEnvId, cancelled, error, noEnvs } = await _promptAndSetEnvironmentId(true);
183
- if (error || noEnvs || cancelled) {
184
- debug('Auto setup environment ID interrupted or failed silently.', { error, noEnvs, cancelled });
185
- return null;
186
- }
187
- debug('Auto setup environment ID successful.', { selectedEnvId });
188
- return selectedEnvId;
189
- }
190
- catch (error) {
191
- console.error('自动配置环境ID时出错:', error);
192
- return null;
193
- }
194
- }
195
- //# sourceMappingURL=interactive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/tools/interactive.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { ExtendedMcpServer } from '../server.js';
2
- export declare function registerRagTools(server: ExtendedMcpServer): void;
3
- //# sourceMappingURL=rag.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rag.d.ts","sourceRoot":"","sources":["../../src/tools/rag.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAoCjD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,QAuGzD"}
package/dist/tools/rag.js DELETED
@@ -1,119 +0,0 @@
1
- import { z } from "zod";
2
- // 1. 枚举定义
3
- const KnowledgeBaseEnum = z.enum(["cloudbase", "scf", "miniprogram"]);
4
- // 2. 枚举到后端 id 的映射
5
- const KnowledgeBaseIdMap = {
6
- cloudbase: "ykfzskv4_ad28",
7
- scf: "scfsczskzyws_4bdc",
8
- miniprogram: "xcxzskws_25d8",
9
- };
10
- // 安全 JSON.parse
11
- function safeParse(str) {
12
- try {
13
- return JSON.parse(str);
14
- }
15
- catch (e) {
16
- return {};
17
- }
18
- }
19
- // 安全 JSON.stringify,处理循环引用
20
- function safeStringify(obj) {
21
- const seen = new WeakSet();
22
- try {
23
- return JSON.stringify(obj, function (key, value) {
24
- if (typeof value === "object" && value !== null) {
25
- if (seen.has(value))
26
- return;
27
- seen.add(value);
28
- }
29
- return value;
30
- });
31
- }
32
- catch (e) {
33
- return "";
34
- }
35
- }
36
- export function registerRagTools(server) {
37
- // 知识库检索
38
- server.registerTool?.('searchKnowledgeBase', {
39
- title: "云开发知识库检索",
40
- description: '云开发知识库智能检索工具,支持云开发与云函数知识的向量查询',
41
- inputSchema: {
42
- threshold: z.number().default(0.5).optional().describe("相似性检索阈值"),
43
- id: KnowledgeBaseEnum.describe("知识库范围,cloudbase=云开发全量知识,scf=云开发的云函数知识, miniprogram=小程序知识(不包含云开发与云函数知识)"),
44
- content: z.string().describe("检索内容"),
45
- options: z.object({
46
- chunkExpand: z.array(z.number()).min(2).max(2).default([3, 3]).describe("指定返回的文档内容的展开长度,例如 [3,3]代表前后展开长度"),
47
- }).optional().describe("其他选项"),
48
- limit: z.number().default(5).optional().describe("指定返回最相似的 Top K 的 K 的值")
49
- },
50
- annotations: {
51
- readOnlyHint: true,
52
- openWorldHint: true,
53
- category: "rag"
54
- }
55
- }, async ({ id, content, options: { chunkExpand = [3, 3] } = {}, limit = 5, threshold = 0.5 }) => {
56
- // 枚举到后端 id 映射
57
- const backendId = KnowledgeBaseIdMap[id] || id;
58
- const signInRes = await fetch('https://tcb-advanced-a656fc.api.tcloudbasegateway.com/auth/v1/signin/anonymously', {
59
- method: 'POST',
60
- headers: {
61
- 'Content-Type': 'application/json',
62
- 'Accept': 'application/json',
63
- 'x-device-id': 'cloudbase-ai-toolkit'
64
- },
65
- body: safeStringify({
66
- collectionView: backendId,
67
- options: {
68
- chunkExpand
69
- },
70
- search: {
71
- content: content,
72
- limit
73
- }
74
- })
75
- });
76
- const token = (await signInRes.json()).access_token;
77
- const res = await fetch(`https://tcb-advanced-a656fc.api.tcloudbasegateway.com/v1/knowledge/search`, {
78
- method: 'POST',
79
- headers: {
80
- 'Content-Type': 'application/json',
81
- 'Authorization': `Bearer ${token}`
82
- },
83
- body: safeStringify({
84
- collectionView: backendId,
85
- options: {
86
- chunkExpand
87
- },
88
- search: {
89
- content: content,
90
- limit
91
- }
92
- })
93
- });
94
- const result = await res.json();
95
- if (result.code) {
96
- throw new Error(result.message);
97
- }
98
- // 过滤掉相似度低于阈值的结果
99
- const filteredResults = result.data.filter((item) => item.score >= threshold);
100
- return {
101
- content: [
102
- {
103
- type: "text",
104
- text: JSON.stringify({
105
- success: true,
106
- total: filteredResults.length,
107
- threshold,
108
- results: filteredResults.map((item) => ({
109
- content: item.content,
110
- score: item.score,
111
- metadata: item.metadata || {}
112
- }))
113
- }, null, 2)
114
- }
115
- ]
116
- };
117
- });
118
- }
119
- //# sourceMappingURL=rag.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rag.js","sourceRoot":"","sources":["../../src/tools/rag.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { ExtendedMcpServer } from '../server.js';
2
- export declare function registerSetupTools(server: ExtendedMcpServer): void;
3
- //# sourceMappingURL=setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/tools/setup.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAmIjD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,QAgI3D"}