MCP 的 Hono
交付真正可扩展的 MCP 服务器
不再为每个 MCP 服务器重新实现认证、限流和中间件。一个框架,默认可组合,从第一天起即可用于生产。
12 内置功能
137 测试通过
v0.7 最新版本
开箱 即用
请求到处理器之间的一切——都已搞定。
- 双传输 STDIO + Streamable HTTP,同一代码。
- 中间件管道 类似 Koa 的洋葱模型。
- OAuth2 认证 JWT/Bearer + RFC 9728 元数据。
- OIDC 预设 GitHub、Google、Auth0——一行代码。
- YAML + 环境变量 文件配置,部署时环境变量覆盖。
- 并发控制 背压策略:sleep、queue 或 reject。
- 速率限制 滑动窗口,按客户端隔离。
- Schema 验证 注册时通过 ajv 编译 JSON Schema。
- 可观测性 OTel span + Prometheus /metrics。
- MCP Apps 通过 ui:// scheme 提供交互式 UI。
- CORS 白名单 来源白名单,通配符自动告警。
- 请求体限制 maxBodyBytes + 413 JSON-RPC 错误。
- IP 速率限制 按 IP 429 + Retry-After HTTP 头。
- 会话传播 sessionId 注入中间件上下文。
- HMAC 签名 SHA-256 签名/验证 + PostMessage 防重放。
- CSP 注入 MCP Apps 自动注入 Content-Security-Policy。
SDK vs 框架
官方 SDK 提供协议。这个提供生产级技术栈。
| 官方 SDK | @casys/mcp-server | |
|---|---|---|
| MCP 协议 | ✓ | ✓ |
| 中间件管道 | — | ✓ |
| OAuth2 / JWT 认证 | — | ✓ |
| 速率限制 | — | ✓ |
| Schema 验证 | — | ✓ |
| Streamable HTTP + SSE | 手动 | 内置 |
| 并发控制 | — | ✓ |
| OpenTelemetry 追踪 | — | ✓ |
| Prometheus 指标 | — | ✓ |
| MCP Apps (UI 资源) | 手动 | 内置 |
| CORS 白名单 | — | ✓ |
| 请求体大小限制 (413) | — | ✓ |
| IP 速率限制 (429) | — | ✓ |
| 会话传播 | — | ✓ |
| HMAC 消息签名 | — | ✓ |
| CSP 注入 | — | ✓ |
| YAML + 环境变量配置 | — | ✓ |
| Deno + Node.js | 仅 Node | 两者都支持 |
5 行代码到 生产
无样板代码。无配置仪式。注册工具,调用 start(),直接上线。
import { ConcurrentMCPServer } from "@casys/mcp-server";
const server = new ConcurrentMCPServer({
name: "my-server",
version: "1.0.0",
});
server.registerTool(
{ name: "greet", description: "Greet a user",
inputSchema: { type: "object",
properties: { name: { type: "string" } },
required: ["name"] } },
({ name }) => \`Hello, \${name}!\`,
);
await server.start(); import { ConcurrentMCPServer, createGoogleAuthProvider } from "@casys/mcp-server";
const server = new ConcurrentMCPServer({
name: "my-api", version: "1.0.0",
auth: {
provider: createGoogleAuthProvider({
audience: "https://my-mcp.example.com",
resource: "https://my-mcp.example.com",
}),
},
});
server.registerTool(
{ name: "query", description: "Query the database",
inputSchema: { type: "object",
properties: { sql: { type: "string" } } },
requiredScopes: ["db:read"] },
async ({ sql }) => ({ rows: [] }),
);
// Security-first HTTP defaults
await server.startHttp({
port: 3000,
requireAuth: true,
corsOrigins: ["https://app.example.com"],
maxBodyBytes: 1_048_576, // 1 MB
ipRateLimit: { maxRequests: 60, windowMs: 60_000 },
}); # mcp-server.yaml
auth:
provider: auth0
audience: https://my-mcp.example.com
resource: https://my-mcp.example.com
domain: my-tenant.auth0.com
scopesSupported: [read, write, admin] # Override with env vars in production
MCP_AUTH_AUDIENCE=https://prod.example.com ./my-server --http --port 3000 你的服务器, 你的规则
每个请求流经可组合的中间件链。需要认证?加上。限流?一行代码。自定义逻辑?插入任意位置。
arrow_forward 请求
timer 限流
shield 认证
tune 自定义
verified_user 权限
check_circle 验证
speed 背压
play_arrow 处理器
随时 就绪
一条命令。支持 Deno 和 Node.js。发布在 JSR,现代 JavaScript 注册表。
Deno
deno add jsr:@casys/mcp-server npm
npx jsr add @casys/mcp-server