@@ -119,32 +119,26 @@ const closeResources = async (server: McpServer, transport: StreamableHTTPTransp
119119 * @remarks
120120 * サーバーとトランスポートの接続・リクエスト処理・エラーハンドリングを行います。
121121 *
122- * @param server MCPサーバーインスタンス
122+ * @param createMcpServer MCPサーバーインスタンスを生成するファクトリ関数
123123 * @param c Honoのコンテキスト
124124 * @returns MCPレスポンス
125125 * @private
126126 */
127- const handleRequest = async ( server : McpServer , c : Context < BlankEnv , '/mcp' , BlankInput > ) => {
127+ const handleRequest = async ( createMcpServer : ( ) => McpServer , c : Context < BlankEnv , '/mcp' , BlankInput > ) => {
128128 const transport = new StreamableHTTPTransport ( {
129129 sessionIdGenerator : undefined , // セッションIDを生成しない(ステートレスモード)
130130 enableJsonResponse : true ,
131131 } ) ;
132+ const server = createMcpServer ( ) ;
132133 try {
133134 await server . connect ( transport ) ;
134135 logger . trace ( 'MCP リクエストを受信' ) ;
135136 return await transport . handleRequest ( c ) ;
136137 } catch ( error ) {
137- try {
138- await closeResources ( server , transport ) ;
139- } catch ( closeError ) {
140- const errorDetails = closeError instanceof Error
141- ? { message : closeError . message , stack : closeError . stack }
142- : closeError ;
143- logger . error ( 'Transport close failed after connection error:' , { closeError : errorDetails } ) ;
144- }
145138 return handleError ( c , error , 'MCP 接続中のエラー:' ) ;
139+ } finally {
140+ await closeResources ( server , transport ) ;
146141 }
147-
148142} ;
149143
150144/**
@@ -167,22 +161,11 @@ export const createHonoApp = (createMcpServer: () => McpServer) => {
167161 const app = new Hono ( ) ;
168162
169163 app . post ( '/mcp' , async ( c ) => {
170- const server = createMcpServer ( ) ;
171-
172- try {
173- return await handleRequest ( server , c ) ;
174- } finally {
175- await server . close ( ) ;
176- }
164+ return await handleRequest ( createMcpServer , c ) ;
177165 } ) ;
178166
179167 app . get ( '/mcp' , async ( c ) => {
180- const server = createMcpServer ( ) ;
181- try {
182- return await handleRequest ( server , c ) ;
183- } finally {
184- await server . close ( ) ;
185- }
168+ return await handleRequest ( createMcpServer , c ) ;
186169 } ) ;
187170
188171 app . put ( '/mcp' , methodNotAllowedHandler ) ;
0 commit comments