Muppet
Transports

Streaming Transport

This example uses Honojs

import { StreamableHTTPTransport } from "@hono/mcp";
import { Hono } from "hono";
import { Muppet } from "muppet";
import { z } from "zod";

const mcp = new Muppet<{ Variables: { surname: string } }>({
  name: "muppet-hono",
  version: "0.0.1",
});

mcp.tool(
  {
    name: "hello",
    description: "Say hello",
    inputSchema: z.object({
      name: z.string(),
    }),
  },
  (c) => {
    const name = c.message.params.arguments.name;
    return {
      content: [
        {
          type: "text",
          text: `Hello ${name}!`,
        },
      ],
    };
  },
);

const app = new Hono();

app.all("/mcp", async (c) => {
  const transport = new StreamableHTTPTransport();
  await mcp.connect(transport);
  return transport.handleRequest(c);
});

app.get("/", (c) => c.text("Hello World"));

export default app;