@@ -614,9 +614,21 @@ const mcpPostHandler = async (req: Request, res: Response) => {
614614
615615 try {
616616 let transport : StreamableHTTPServerTransport ;
617- if ( sessionId && transports [ sessionId ] ) {
618- // Reuse existing transport
619- transport = transports [ sessionId ] ;
617+ if ( sessionId ) {
618+ if ( transports [ sessionId ] ) {
619+ // Reuse existing transport
620+ transport = transports [ sessionId ] ;
621+ } else {
622+ res . status ( 404 ) . json ( {
623+ jsonrpc : '2.0' ,
624+ error : {
625+ code : - 32000 ,
626+ message : 'Not Found: Invalid session ID'
627+ } ,
628+ id : null
629+ } ) ;
630+ return ;
631+ }
620632 } else if ( ! sessionId && isInitializeRequest ( req . body ) ) {
621633 const server = getServer ( ) ;
622634 // New initialization request
@@ -658,7 +670,7 @@ const mcpPostHandler = async (req: Request, res: Response) => {
658670 jsonrpc : '2.0' ,
659671 error : {
660672 code : - 32000 ,
661- message : 'Bad Request: No valid session ID provided'
673+ message : 'Bad Request: No session ID provided'
662674 } ,
663675 id : null
664676 } ) ;
@@ -689,8 +701,13 @@ app.post('/mcp', authMiddleware, mcpPostHandler);
689701// Handle GET requests for SSE streams (using built-in support from StreamableHTTP)
690702const mcpGetHandler = async ( req : Request , res : Response ) => {
691703 const sessionId = req . headers [ 'mcp-session-id' ] as string | undefined ;
692- if ( ! sessionId || ! transports [ sessionId ] ) {
693- res . status ( 400 ) . send ( 'Invalid or missing session ID' ) ;
704+ if ( ! sessionId ) {
705+ res . status ( 400 ) . send ( 'Missing session ID' ) ;
706+ return ;
707+ }
708+
709+ if ( ! transports [ sessionId ] ) {
710+ res . status ( 404 ) . send ( 'Invalid session ID' ) ;
694711 return ;
695712 }
696713
@@ -728,8 +745,13 @@ app.get('/mcp', authMiddleware, mcpGetHandler);
728745// Handle DELETE requests for session termination (according to MCP spec)
729746const mcpDeleteHandler = async ( req : Request , res : Response ) => {
730747 const sessionId = req . headers [ 'mcp-session-id' ] as string | undefined ;
731- if ( ! sessionId || ! transports [ sessionId ] ) {
732- res . status ( 400 ) . send ( 'Invalid or missing session ID' ) ;
748+ if ( ! sessionId ) {
749+ res . status ( 400 ) . send ( 'Missing session ID' ) ;
750+ return ;
751+ }
752+
753+ if ( ! transports [ sessionId ] ) {
754+ res . status ( 404 ) . send ( 'Invalid session ID' ) ;
733755 return ;
734756 }
735757
0 commit comments