@@ -15,10 +15,8 @@ export class HttpStreamTransport extends AbstractTransport {
1515 private _endpoint : string ;
1616 private _enableJsonResponse : boolean = false ;
1717
18-
1918 private _transports : Map < string , StreamableHTTPServerTransport > = new Map ( ) ;
2019
21-
2220 private _serverConfig : any ;
2321 private _serverSetupCallback ?: ( server : McpServer ) => Promise < void > ;
2422
@@ -54,7 +52,6 @@ export class HttpStreamTransport extends AbstractTransport {
5452 ) ;
5553 }
5654
57-
5855 setServerConfig ( serverConfig : any , setupCallback : ( server : McpServer ) => Promise < void > ) : void {
5956 this . _serverConfig = serverConfig ;
6057 this . _serverSetupCallback = setupCallback ;
@@ -120,13 +117,30 @@ export class HttpStreamTransport extends AbstractTransport {
120117 logger . info ( 'Creating new session for initialization request' ) ;
121118
122119 if ( ! this . _serverSetupCallback || ! this . _serverConfig ) {
123- logger . error ( 'No server configuration available' ) ;
124- this . sendError (
125- res ,
126- 500 ,
127- - 32603 ,
128- 'Internal server error: No server configuration available'
129- ) ;
120+ logger . debug ( 'No server configuration available, using standard transport behavior' ) ;
121+ transport = new StreamableHTTPServerTransport ( {
122+ sessionIdGenerator : ( ) => randomUUID ( ) ,
123+ onsessioninitialized : ( sessionId : string ) => {
124+ logger . info ( `Session initialized: ${ sessionId } ` ) ;
125+ this . _transports . set ( sessionId , transport ) ;
126+ } ,
127+ enableJsonResponse : this . _enableJsonResponse ,
128+ } ) ;
129+
130+ transport . onclose = ( ) => {
131+ if ( transport . sessionId ) {
132+ logger . info ( `Transport closed for session: ${ transport . sessionId } ` ) ;
133+ this . _transports . delete ( transport . sessionId ) ;
134+ }
135+ } ;
136+
137+ transport . onmessage = async ( message : JSONRPCMessage ) => {
138+ if ( this . _onmessage ) {
139+ await this . _onmessage ( message ) ;
140+ }
141+ } ;
142+
143+ await transport . handleRequest ( req , res , body ) ;
130144 return ;
131145 }
132146
@@ -135,7 +149,6 @@ export class HttpStreamTransport extends AbstractTransport {
135149 sessionIdGenerator : ( ) => randomUUID ( ) ,
136150 onsessioninitialized : ( sessionId : string ) => {
137151 logger . info ( `Session initialized: ${ sessionId } ` ) ;
138- // Store the transport by session ID
139152 this . _transports . set ( sessionId , transport ) ;
140153 } ,
141154 enableJsonResponse : this . _enableJsonResponse ,
0 commit comments