File tree Expand file tree Collapse file tree 2 files changed +13
-1
lines changed
Expand file tree Collapse file tree 2 files changed +13
-1
lines changed Original file line number Diff line number Diff line change @@ -139,6 +139,17 @@ export default function ({ config }: { config: z.infer<typeof configSchema> }) {
139139 const contextId = randomUUID ( ) ;
140140 const context = new Context ( server . server , internalConfig , contextId ) ;
141141
142+ // Cleanup handler for when the MCP connection closes (SHTTP/Smithery)
143+ server . server . onclose = async ( ) => {
144+ try {
145+ await context . getSessionManager ( ) . closeAllSessions ( ) ;
146+ } catch ( err ) {
147+ process . stderr . write (
148+ `[Cleanup] Error during session cleanup: ${ err instanceof Error ? err . message : String ( err ) } \n` ,
149+ ) ;
150+ }
151+ } ;
152+
142153 server . server . registerCapabilities ( {
143154 resources : {
144155 subscribe : true ,
Original file line number Diff line number Diff line change @@ -53,10 +53,11 @@ async function handleStreamable(
5353 sessionIdGenerator : ( ) => sessionId ,
5454 } ) ;
5555 sessions . set ( sessionId , transport ) ;
56+ const server = await serverList . create ( ) ;
5657 transport . onclose = ( ) => {
5758 if ( transport . sessionId ) sessions . delete ( transport . sessionId ) ;
59+ serverList . close ( server ) ;
5860 } ;
59- const server = await serverList . create ( ) ;
6061 await server . connect ( transport ) ;
6162 return await transport . handleRequest ( req , res ) ;
6263 }
You can’t perform that action at this time.
0 commit comments