### Install hono-mcp-server-sse-transport Source: https://github.com/nikabuligini/hono-mcp-server-sse-transport/blob/main/README.md Installs the `hono-mcp-server-sse-transport` package using pnpm as a development dependency. ```bash pnpm add -D hono-mcp-server-sse-transport ``` -------------------------------- ### Integrate SSETransport with Hono and MCP Server Source: https://github.com/nikabuligini/hono-mcp-server-sse-transport/blob/main/README.md Demonstrates how to set up a Hono application to connect to an MCP Server using `SSETransport`. It initializes `McpServer`, handles SSE connections for `/sse` endpoint, manages session-specific transports, and processes incoming messages on `/messages`. ```typescript import { Hono } from 'hono'; import { serve } from '@hono/node-server'; import { streamSSE } from 'hono/streaming'; import { SSETransport } from 'hono-mcp-server-sse-transport'; import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; const mcpServer = new McpServer( { name: 'your-mcp-server-name', version: '1.0.0', }, { capabilities: { tools: {}, }, }, ); // here you add your tools // ... const app = new Hono(); // to support multiple simultaneous connections we have a lookup object from // sessionId to transport const transports: { [sessionId: string]: SSETransport } = {}; app.get('/sse', (c) => { return streamSSE(c, async (stream) => { const transport = new SSETransport('/messages', stream); transports[transport.sessionId] = transport; stream.onAbort(() => { delete transports[transport.sessionId]; }); await mcpServer.connect(transport); while (true) { // This will keep the connection alive // You can also await for a promise that never resolves await stream.sleep(60_000); } }); }); app.post('/messages', async (c) => { const sessionId = c.req.query('sessionId'); const transport = transports[sessionId]; if (transport == null) { return c.text('No transport found for sessionId', 400); } return await transport.handlePostMessage(c); }); serve( { fetch: app.fetch, port: 3000, }, ); ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.