@@ -313,16 +313,29 @@ const app = express();
313
313
app .use (express .json ());
314
314
315
315
const transport: StreamableHTTPServerTransport = new StreamableHTTPServerTransport ({
316
- sessionIdGenerator: undefined ,
316
+ sessionIdGenerator: undefined , // set to undefined for stateless servers
317
317
});
318
- await server .connect (transport );
318
+
319
+ // Setup routes for the server
320
+ const setupServer = async () => {
321
+ await server .connect (transport );
322
+ };
319
323
320
324
app .post (' /mcp' , async (req : Request , res : Response ) => {
321
325
console .log (' Received MCP request:' , req .body );
322
326
try {
323
327
await transport .handleRequest (req , res , req .body );
324
328
} catch (error ) {
325
- // ... handle error
329
+ console .error (' Error handling MCP request:' , error );
330
+ if (! res .headersSent ) {
331
+ res .status (500 ).json ({
332
+ jsonrpc: ' 2.0' ,
333
+ error: {
334
+ code: - 32603 ,
335
+ message: ' Internal server error' ,
336
+ },
337
+ id: null ,
338
+ });
326
339
}
327
340
}
328
341
});
@@ -353,8 +366,13 @@ app.delete('/mcp', async (req: Request, res: Response) => {
353
366
354
367
// Start the server
355
368
const PORT = 3000 ;
356
- app .listen (PORT , () => {
357
- console .log (` Stateless MCP Streamable HTTP Server listening on port ${PORT } ` );
369
+ setupServer ().then (() => {
370
+ app .listen (PORT , () => {
371
+ console .log (` MCP Streamable HTTP Server listening on port ${PORT } ` );
372
+ });
373
+ }).catch (error => {
374
+ console .error (' Failed to set up the server:' , error );
375
+ process .exit (1 );
358
376
});
359
377
360
378
```
0 commit comments