diff --git a/README.md b/README.md index 929abd84..200cfab6 100644 --- a/README.md +++ b/README.md @@ -313,16 +313,29 @@ const app = express(); app.use(express.json()); const transport: StreamableHTTPServerTransport = new StreamableHTTPServerTransport({ - sessionIdGenerator: undefined, + sessionIdGenerator: undefined, // set to undefined for stateless servers }); -await server.connect(transport); + +// Setup routes for the server +const setupServer = async () => { + await server.connect(transport); +}; app.post('/mcp', async (req: Request, res: Response) => { console.log('Received MCP request:', req.body); try { await transport.handleRequest(req, res, req.body); } catch (error) { - // ... handle error + console.error('Error handling MCP request:', error); + if (!res.headersSent) { + res.status(500).json({ + jsonrpc: '2.0', + error: { + code: -32603, + message: 'Internal server error', + }, + id: null, + }); } } }); @@ -353,8 +366,13 @@ app.delete('/mcp', async (req: Request, res: Response) => { // Start the server const PORT = 3000; -app.listen(PORT, () => { - console.log(`Stateless MCP Streamable HTTP Server listening on port ${PORT}`); +setupServer().then(() => { + app.listen(PORT, () => { + console.log(`MCP Streamable HTTP Server listening on port ${PORT}`); + }); +}).catch(error => { + console.error('Failed to set up the server:', error); + process.exit(1); }); ``` diff --git a/src/examples/server/simpleStatelessStreamableHttp.ts b/src/examples/server/simpleStatelessStreamableHttp.ts index 89433ecb..f1f37510 100644 --- a/src/examples/server/simpleStatelessStreamableHttp.ts +++ b/src/examples/server/simpleStatelessStreamableHttp.ts @@ -96,7 +96,11 @@ app.use(express.json()); const transport: StreamableHTTPServerTransport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, }); -await server.connect(transport); + +// Setup routes for the server +const setupServer = async () => { + await server.connect(transport); +}; app.post('/mcp', async (req: Request, res: Response) => { console.log('Received MCP request:', req.body); @@ -143,8 +147,13 @@ app.delete('/mcp', async (req: Request, res: Response) => { // Start the server const PORT = 3000; -app.listen(PORT, () => { - console.log(`MCP Streamable HTTP Server listening on port ${PORT}`); +setupServer().then(() => { + app.listen(PORT, () => { + console.log(`MCP Streamable HTTP Server listening on port ${PORT}`); + }); +}).catch(error => { + console.error('Failed to set up the server:', error); + process.exit(1); }); // Handle server shutdown