@@ -15,10 +15,8 @@ export class HttpStreamTransport extends AbstractTransport {
15
15
private _endpoint : string ;
16
16
private _enableJsonResponse : boolean = false ;
17
17
18
-
19
18
private _transports : Map < string , StreamableHTTPServerTransport > = new Map ( ) ;
20
19
21
-
22
20
private _serverConfig : any ;
23
21
private _serverSetupCallback ?: ( server : McpServer ) => Promise < void > ;
24
22
@@ -54,7 +52,6 @@ export class HttpStreamTransport extends AbstractTransport {
54
52
) ;
55
53
}
56
54
57
-
58
55
setServerConfig ( serverConfig : any , setupCallback : ( server : McpServer ) => Promise < void > ) : void {
59
56
this . _serverConfig = serverConfig ;
60
57
this . _serverSetupCallback = setupCallback ;
@@ -120,13 +117,30 @@ export class HttpStreamTransport extends AbstractTransport {
120
117
logger . info ( 'Creating new session for initialization request' ) ;
121
118
122
119
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 ) ;
130
144
return ;
131
145
}
132
146
@@ -135,7 +149,6 @@ export class HttpStreamTransport extends AbstractTransport {
135
149
sessionIdGenerator : ( ) => randomUUID ( ) ,
136
150
onsessioninitialized : ( sessionId : string ) => {
137
151
logger . info ( `Session initialized: ${ sessionId } ` ) ;
138
- // Store the transport by session ID
139
152
this . _transports . set ( sessionId , transport ) ;
140
153
} ,
141
154
enableJsonResponse : this . _enableJsonResponse ,
0 commit comments