Hono MCP Server
Allows exposing Hono API endpoints as MCP tools, enabling AI models to programmatically discover and interact with routes, parameters, and request bodies defined within a Hono application.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Hono MCP Serverlist all users"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server for Hono
Expose your Hono API endpoints as MCP tools.
Usage
import { Hono } from "hono";
import { z } from "zod";
import { mcp, registerTool } from "hono-mcp-server";
const app = new Hono()
.get("/users", registerTool("List all users"), (c) => c.json([{ id: 1, name: "Alice" }]))
.get("/users/:id", registerTool("Get user by ID"), (c) => c.json({ id: c.req.param("id") }))
.post(
"/users",
registerTool({
description: "Create a new user",
inputSchema: {
name: z.string().describe("User's full name"),
email: z.string().email().describe("User's email address"),
},
}),
async (c) => {
const { name } = c.req.valid("json"); // typed!
return c.json({ id: 1, name });
},
);
export default mcp(app, {
name: "Users API",
version: "1.0.0",
});This adds an /mcp endpoint that exposes your routes as MCP tools.
Input & Output Schemas
Use registerTool() with inputSchema for validated, typed input. Access validated data with c.req.valid('json'):
import { z } from "zod";
import { registerTool } from "hono-mcp-server";
app.post(
"/search",
registerTool({
description: "Search for items",
inputSchema: {
query: z.string().describe("Search query"),
limit: z.number().optional().describe("Max results"),
},
outputSchema: {
results: z.array(z.object({ id: z.string(), title: z.string() })),
},
}),
async (c) => {
const { query, limit } = c.req.valid("json"); // typed!
return c.json({ results: [] });
},
);When outputSchema is defined, the tool returns structured content that MCP clients can parse.
Options
mcp(app, {
name: "API Name", // required
version: "1.0.0", // required
description: "...", // optional
instructions: "...", // optional
mcpPath: "/mcp", // optional, default: "/mcp"
codemode: false, // optional, see below
});Codemode
Instead of exposing individual routes as tools, codemode exposes search and execute tools for dynamic API interaction. Requires Cloudflare Worker Loader.
export default mcp(app, {
name: "API",
version: "1.0.0",
codemode: true,
});// wrangler.jsonc
{
"worker_loaders": [{ "binding": "LOADER" }],
}This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mattzcarey/hono-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server