@@ -46,16 +46,16 @@ export class GcliMcpBridge {
4646 }
4747
4848 // **辅助方法:创建一个新的 McpServer 实例**
49- private createNewMcpServer ( ) : McpServer {
49+ private async createNewMcpServer ( ) : Promise < McpServer > {
5050 const server = new McpServer (
5151 {
5252 name : 'gemini-cli-mcp-server' ,
5353 version : this . cliVersion ,
5454 } ,
55- { capabilities : { tools : { listChanged : true } , logging : { } } } ,
55+ { capabilities : { logging : { } } } ,
5656 ) ;
5757 // 在这里立即注册所有工具
58- this . registerAllGcliTools ( server ) ;
58+ await this . registerAllGcliTools ( server ) ;
5959 return server ;
6060 }
6161
@@ -79,40 +79,49 @@ export class GcliMcpBridge {
7979 ) ;
8080 }
8181
82- // **修改 6: 为新会话创建独立的 McpServer 和 Transport**
83- const newMcpServer = this . createNewMcpServer ( ) ;
84- const newTransport = new StreamableHTTPServerTransport ( {
85- sessionIdGenerator : ( ) => randomUUID ( ) ,
86- onsessioninitialized : ( newSessionId ) => {
87- if ( this . debugMode ) {
88- console . log (
89- `${ LOG_PREFIX } Session initialized: ${ newSessionId } ` ,
90- ) ;
91- }
92- // 存储新的会话对象
93- this . sessions [ newSessionId ] = {
94- mcpServer : newMcpServer ,
95- transport : newTransport ,
96- } ;
97- } ,
98- } ) ;
82+ try {
83+ // **修改 6: 为新会话创建独立的 McpServer 和 Transport**
84+ const newMcpServer = await this . createNewMcpServer ( ) ;
85+ const newTransport = new StreamableHTTPServerTransport ( {
86+ sessionIdGenerator : ( ) => randomUUID ( ) ,
87+ onsessioninitialized : ( newSessionId ) => {
88+ if ( this . debugMode ) {
89+ console . log (
90+ `${ LOG_PREFIX } Session initialized: ${ newSessionId } ` ,
91+ ) ;
92+ }
93+ // 存储新的会话对象
94+ this . sessions [ newSessionId ] = {
95+ mcpServer : newMcpServer ,
96+ transport : newTransport ,
97+ } ;
98+ } ,
99+ } ) ;
99100
100- newTransport . onclose = ( ) => {
101- const sid = newTransport . sessionId ;
102- if ( sid && this . sessions [ sid ] ) {
103- if ( this . debugMode ) {
104- console . log (
105- `${ LOG_PREFIX } Session ${ sid } closed, removing session object.` ,
106- ) ;
101+ newTransport . onclose = ( ) => {
102+ const sid = newTransport . sessionId ;
103+ if ( sid && this . sessions [ sid ] ) {
104+ if ( this . debugMode ) {
105+ console . log (
106+ `${ LOG_PREFIX } Session ${ sid } closed, removing session object.` ,
107+ ) ;
108+ }
109+ delete this . sessions [ sid ] ;
107110 }
108- delete this . sessions [ sid ] ;
109- }
110- } ;
111+ } ;
111112
112- // 将新的 transport 连接到新的 McpServer 实例
113- await newMcpServer . connect ( newTransport ) ;
113+ // 将新的 transport 连接到新的 McpServer 实例
114+ await newMcpServer . connect ( newTransport ) ;
114115
115- session = { mcpServer : newMcpServer , transport : newTransport } ;
116+ session = { mcpServer : newMcpServer , transport : newTransport } ;
117+ } catch ( e ) {
118+ // Handle errors during server creation
119+ console . error ( `${ LOG_PREFIX } Error creating new MCP session:` , e ) ;
120+ if ( ! res . headersSent ) {
121+ res . status ( 500 ) . json ( { error : 'Failed to create session' } ) ;
122+ }
123+ return ;
124+ }
116125 } else {
117126 console . error (
118127 `${ LOG_PREFIX } Bad Request: Missing session ID for non-initialize request.` ,
0 commit comments