@@ -6,7 +6,7 @@ import { registerEnvTools } from "./tools/env.js";
66import { registerFunctionTools } from "./tools/functions.js" ;
77import { registerHostingTools } from "./tools/hosting.js" ;
88import { registerInteractiveTools } from "./tools/interactive.js" ;
9- import { registerRagTools } from ' ./tools/rag.js' ;
9+ import { registerRagTools } from " ./tools/rag.js" ;
1010import { registerSetupTools } from "./tools/setup.js" ;
1111import { registerStorageTools } from "./tools/storage.js" ;
1212// import { registerMiniprogramTools } from "./tools/miniprogram.js";
@@ -19,15 +19,28 @@ import { CloudBaseOptions } from "./types.js";
1919import { enableCloudMode } from "./utils/cloud-mode.js" ;
2020import { wrapServerWithTelemetry } from "./utils/tool-wrapper.js" ;
2121
22-
2322// 插件定义
2423interface PluginDefinition {
2524 name : string ;
26- register : ( server : ExtendedMcpServer ) => void ;
25+ register : ( server : ExtendedMcpServer ) => void | Promise < void > ;
2726}
2827
2928// 默认插件列表
30- const DEFAULT_PLUGINS = [ 'env' , 'database' , 'functions' , 'hosting' , 'storage' , 'setup' , 'interactive' , 'rag' , 'cloudrun' , 'gateway' , 'download' , 'security-rule' , 'invite-code' ] ;
29+ const DEFAULT_PLUGINS = [
30+ "env" ,
31+ "database" ,
32+ "functions" ,
33+ "hosting" ,
34+ "storage" ,
35+ "setup" ,
36+ "interactive" ,
37+ "rag" ,
38+ "cloudrun" ,
39+ "gateway" ,
40+ "download" ,
41+ "security-rule" ,
42+ "invite-code" ,
43+ ] ;
3144
3245function registerDatabase ( server : ExtendedMcpServer ) {
3346 registerDatabaseTools ( server ) ;
@@ -37,20 +50,23 @@ function registerDatabase(server: ExtendedMcpServer) {
3750
3851// 可用插件映射
3952const AVAILABLE_PLUGINS : Record < string , PluginDefinition > = {
40- env : { name : ' env' , register : registerEnvTools } ,
41- database : { name : ' database' , register : registerDatabase } ,
42- functions : { name : ' functions' , register : registerFunctionTools } ,
43- hosting : { name : ' hosting' , register : registerHostingTools } ,
44- storage : { name : ' storage' , register : registerStorageTools } ,
45- setup : { name : ' setup' , register : registerSetupTools } ,
46- interactive : { name : ' interactive' , register : registerInteractiveTools } ,
47- rag : { name : ' rag' , register : registerRagTools } ,
48- download : { name : ' download' , register : registerDownloadTools } ,
49- gateway : { name : ' gateway' , register : registerGatewayTools } ,
53+ env : { name : " env" , register : registerEnvTools } ,
54+ database : { name : " database" , register : registerDatabase } ,
55+ functions : { name : " functions" , register : registerFunctionTools } ,
56+ hosting : { name : " hosting" , register : registerHostingTools } ,
57+ storage : { name : " storage" , register : registerStorageTools } ,
58+ setup : { name : " setup" , register : registerSetupTools } ,
59+ interactive : { name : " interactive" , register : registerInteractiveTools } ,
60+ rag : { name : " rag" , register : registerRagTools } ,
61+ download : { name : " download" , register : registerDownloadTools } ,
62+ gateway : { name : " gateway" , register : registerGatewayTools } ,
5063 // miniprogram: { name: 'miniprogram', register: registerMiniprogramTools },
51- 'security-rule' : { name : 'security-rule' , register : registerSecurityRuleTools } ,
52- 'invite-code' : { name : 'invite-code' , register : registerInviteCodeTools } ,
53- cloudrun : { name : 'cloudrun' , register : registerCloudRunTools } ,
64+ "security-rule" : {
65+ name : "security-rule" ,
66+ register : registerSecurityRuleTools ,
67+ } ,
68+ "invite-code" : { name : "invite-code" , register : registerInviteCodeTools } ,
69+ cloudrun : { name : "cloudrun" , register : registerCloudRunTools } ,
5470} ;
5571
5672/**
@@ -59,23 +75,23 @@ const AVAILABLE_PLUGINS: Record<string, PluginDefinition> = {
5975function parseEnabledPlugins ( ) : string [ ] {
6076 const enabledEnv = process . env . CLOUDBASE_MCP_PLUGINS_ENABLED ;
6177 const disabledEnv = process . env . CLOUDBASE_MCP_PLUGINS_DISABLED ;
62-
78+
6379 let enabledPlugins : string [ ] ;
64-
80+
6581 if ( enabledEnv ) {
6682 // 如果指定了启用的插件,使用指定的插件
67- enabledPlugins = enabledEnv . split ( ',' ) . map ( p => p . trim ( ) ) ;
83+ enabledPlugins = enabledEnv . split ( "," ) . map ( ( p ) => p . trim ( ) ) ;
6884 } else {
6985 // 否则使用默认插件
7086 enabledPlugins = [ ...DEFAULT_PLUGINS ] ;
7187 }
72-
88+
7389 if ( disabledEnv ) {
7490 // 从启用列表中移除禁用的插件
75- const disabledPlugins = disabledEnv . split ( ',' ) . map ( p => p . trim ( ) ) ;
76- enabledPlugins = enabledPlugins . filter ( p => ! disabledPlugins . includes ( p ) ) ;
91+ const disabledPlugins = disabledEnv . split ( "," ) . map ( ( p ) => p . trim ( ) ) ;
92+ enabledPlugins = enabledPlugins . filter ( ( p ) => ! disabledPlugins . includes ( p ) ) ;
7793 }
78-
94+
7995 return enabledPlugins ;
8096}
8197
@@ -89,37 +105,37 @@ export interface ExtendedMcpServer extends McpServer {
89105 * Create and configure a CloudBase MCP Server instance
90106 * @param options Server configuration options
91107 * @returns Configured McpServer instance
92- *
108+ *
93109 * @example
94110 * import { createCloudBaseMcpServer } from "@cloudbase/mcp-server";
95111 * import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
96- *
97- * const server = createCloudBaseMcpServer({ cloudBaseOptions: {
112+ *
113+ * const server = createCloudBaseMcpServer({ cloudBaseOptions: {
98114 * envId, // 环境ID
99115 * secretId, // 腾讯云密钥ID
100116 * secretKey, // 腾讯云密钥
101117 * region, // 地域,默认是 ap-shanghai
102118 * token // 临时密钥,有有效期限制,生成密钥时可控制
103119 * } });
104- *
120+ *
105121 * const transport = new StdioServerTransport();
106122 * await server.connect(transport);
107123 */
108- export function createCloudBaseMcpServer ( options ?: {
124+ export async function createCloudBaseMcpServer ( options ?: {
109125 name ?: string ;
110126 version ?: string ;
111127 enableTelemetry ?: boolean ;
112128 cloudBaseOptions ?: CloudBaseOptions ;
113129 cloudMode ?: boolean ;
114130 ide ?: string ;
115- } ) : ExtendedMcpServer {
131+ } ) : Promise < ExtendedMcpServer > {
116132 const {
117133 name = "cloudbase-mcp" ,
118134 version = "1.0.0" ,
119135 enableTelemetry = true ,
120136 cloudBaseOptions,
121137 cloudMode = false ,
122- ide
138+ ide,
123139 } = options ?? { } ;
124140
125141 // Enable cloud mode if specified
@@ -128,15 +144,18 @@ export function createCloudBaseMcpServer(options?: {
128144 }
129145
130146 // Create server instance
131- const server = new McpServer ( {
132- name,
133- version
134- } , {
135- capabilities : {
136- tools : { } ,
137- ...( ide === 'CodeBuddy' ? { logging : { } } : { } )
147+ const server = new McpServer (
148+ {
149+ name,
150+ version,
151+ } ,
152+ {
153+ capabilities : {
154+ tools : { } ,
155+ ...( ide === "CodeBuddy" ? { logging : { } } : { } ) ,
156+ } ,
138157 } ,
139- } ) as ExtendedMcpServer ;
158+ ) as ExtendedMcpServer ;
140159
141160 // Store cloudBaseOptions in server instance for tools to access
142161 if ( cloudBaseOptions ) {
@@ -155,11 +174,11 @@ export function createCloudBaseMcpServer(options?: {
155174
156175 // 根据配置注册插件
157176 const enabledPlugins = parseEnabledPlugins ( ) ;
158-
177+
159178 for ( const pluginName of enabledPlugins ) {
160179 const plugin = AVAILABLE_PLUGINS [ pluginName ] ;
161180 if ( plugin ) {
162- plugin . register ( server ) ;
181+ await plugin . register ( server ) ;
163182 }
164183 }
165184
@@ -169,13 +188,16 @@ export function createCloudBaseMcpServer(options?: {
169188/**
170189 * Get the default configured CloudBase MCP Server
171190 */
172- export function getDefaultServer ( ) : ExtendedMcpServer {
191+ export function getDefaultServer ( ) : Promise < ExtendedMcpServer > {
173192 return createCloudBaseMcpServer ( ) ;
174193}
175194
176195// Re-export types and utilities that might be useful
177196export type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js" ;
178197export { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js" ;
179198export { error , info , warn } from "./utils/logger.js" ;
180- export { reportToolCall , reportToolkitLifecycle , telemetryReporter } from "./utils/telemetry.js" ;
181-
199+ export {
200+ reportToolCall ,
201+ reportToolkitLifecycle ,
202+ telemetryReporter ,
203+ } from "./utils/telemetry.js" ;
0 commit comments