muppet logo
Runtimes

Node.js

Here is an example of how to set up Muppet with Node.js. You can use any transport layer you want, but here we will use the SSE transport layer.

let transport: SSEHonoTransport | null = null;
 
const server = new Hono();
 
server.get("/sse", (c) => {
  return streamSSE(c, async (stream) => {
    transport = new SSEHonoTransport("/messages");
    transport.connectWithStream(stream);
 
    await bridge({
      mcp,
      transport,
    });
  });
});
 
server.post("/messages", async (c) => {
  if (!transport) {
    throw new Error("Transport not initialized");
  }
 
  await transport.handlePostMessage(c);
  return c.text("ok");
});
 
server.onError((err, c) => {
  console.error(err);
  return c.body(err.message, 500);
});
 
serve({
  fetch: server.fetch,
  port: 3000,
});

The serve function is from the @hono/node-server package.