About Hono Stateless
Hono Stateless is an MCP server published by mhart in the Browser category: an example Hono MCP server using Streamable HTTP. It has been installed 0 times through Conduid.
The repository has 101 stars and 8 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues (0) before depending on it in production.
Install
npx mcp-hono-statelessThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Hono Stateless
Powered by Claude · Grounded in docs
Security checks
- ·README presentNot checked yet.
- ·License declaredNot checked yet.
- ·Tests presentNot checked yet.
- ·Dependencies pinnedNot checked yet.
- ·No dynamic code executionNot checked yet.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
README
Stateless Hono MCP Server
An example Hono MCP server using Streamable HTTP, based off the official Express example, using fetch-to-node to convert, deployable to Cloudflare Workers (and anywhere else Hono runs).
The only real changes to the Express example are:
- import express, { Request, Response } from 'express';
+ import { Hono } from 'hono';
+ import { toFetchResponse, toReqRes } from 'fetch-to-node';
// ...
- const app = express();
- app.use(express.json());
+ const app = new Hono();
- app.post('/mcp', async (req: Request, res: Response) => {
+ app.post('/mcp', async (c) => {
+ const { req, res } = toReqRes(c.req.raw);
const server = getServer();
try {
const transport: StreamableHTTPServerTransport = new StreamableHTTPServerTransport({
sessionIdGenerator: undefined,
});
await server.connect(transport);
- await transport.handleRequest(req, res, req.body);
+ await transport.handleRequest(req, res, await c.req.json());
res.on('close', () => {
console.log('Request closed');
transport.close();
server.close();
});
+ return toFetchResponse(res);
} catch (error) {
Testing with an example MCP client
In one terminal:
npm start
In another:
node node_modules/@modelcontextprotocol/sdk/dist/esm/examples/client/simpleStreamableHttp.js
This will try to connect to the MCP server running on port 3000. You can use connect <url>/mcp to connect to a different host or port.
Then you can run commands like list-prompts or list-tools to verify your MCP server is working.
Deploying
npm run deploy
Here's an example session against a Hono MCP server deployed on Cloudflare Workers:
> connect https://mcp-hono-stateless.michael.workers.dev/mcp
Connecting to https://mcp-hono-stateless.michael.workers.dev/mcp...
Transport created with session ID: undefined
Connected to MCP server
> list-tools
Available tools:
- start-notification-stream: Starts sending periodic notifications for testing resumability
> list-prompts
Available prompts:
- greeting-template: A simple greeting prompt template
> call-tool start-notification-stream
Calling tool 'start-notification-stream' with args: {}
Notification #1: info - Periodic notification #1 at 2025-04-22T16:20:50.178Z
>
Notification #2: info - Periodic notification #2 at 2025-04-22T16:20:50.278Z
>
Notification #3: info - Periodic notification #3 at 2025-04-22T16:20:50.378Z
>
Notification #4: info - Periodic notification #4 at 2025-04-22T16:20:50.478Z
>
Notification #5: info - Periodic notification #5 at 2025-04-22T16:20:50.578Z
>
Notification #6: info - Periodic notification #6 at 2025-04-22T16:20:50.678Z
>
Notification #7: info - Periodic notification #7 at 2025-04-22T16:20:50.778Z
>
Notification #8: info - Periodic notification #8 at 2025-04-22T16:20:50.878Z
>
Notification #9: info - Periodic notification #9 at 2025-04-22T16:20:50.978Z
>
Notification #10: info - Periodic notification #10 at 2025-04-22T16:20:51.078Z
> Tool result:
Started sending periodic notifications every 100ms
README mirrored from the source repository 3 hours ago. The original is authoritative.