Le Hono pour MCP

Livrez des Serveurs MCP Qui Passent a l'Echelle

Arretez de reinventer l'auth, le rate limiting et les middlewares pour chaque serveur MCP. Un framework, composable par defaut, production-ready des le premier jour.

12 Features incluses
137 Tests au vert
v0.7 Derniere

Tout Inclus

Tout ce qui se passe entre la requete et votre handler -- c'est gere.

  • swap_horiz Double Transport STDIO + HTTP Streamable. Meme code.
  • layers Pipeline Middleware Modele onion composable, a la Koa.
  • shield Auth OAuth2 JWT/Bearer + metadonnees RFC 9728.
  • key Presets OIDC GitHub, Google, Auth0 -- une ligne.
  • settings Config YAML + Env Fichier config, override env au deploy.
  • speed Concurrence Backpressure : sleep, queue ou reject.
  • timer Rate Limiting Fenetre glissante, isolation par client.
  • check_circle Validation Schema JSON Schema via ajv a l'enregistrement.
  • monitoring Observabilite Spans OTel + Prometheus /metrics.
  • widgets MCP Apps UIs interactives via le scheme ui://.
  • lock Allowlist CORS Allowlist d'origines avec avertissement wildcard.
  • upload_file Limite Body maxBodyBytes avec erreur 413 JSON-RPC.
  • block Rate Limit IP 429 par IP + Retry-After sur la couche HTTP.
  • badge Propagation Session sessionId injecte dans le contexte middleware.
  • enhanced_encryption Signature HMAC SHA-256 sign/verify + anti-replay pour PostMessage.
  • security Injection CSP Content-Security-Policy auto-injecte dans les MCP Apps.

SDK vs Framework

Le SDK officiel donne le protocole. Ceci donne le stack de production.

SDK Officiel @casys/mcp-server
Protocole MCP
Pipeline middleware
Auth OAuth2 / JWT
Rate limiting
Validation de schema
Streamable HTTP + SSE Manuel Integre
Controle de concurrence
Tracing OpenTelemetry
Metriques Prometheus
MCP Apps (UI resources) Manuel Integre
Allowlist CORS
Limite taille body (413)
Rate limit IP (429)
Propagation session
Signature HMAC messages
Injection CSP
Config YAML + Env
Deno + Node.js Node uniquement Les deux

5 Lignes vers la Prod

Pas de boilerplate. Pas de ceremonie de config. Enregistrez un tool, appelez start(), livrez.

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();

Votre Serveur, Vos Regles

Chaque requete traverse une chaine middleware composable. Besoin d'auth ? Ajoutez-la. Rate limiting ? Une ligne. Logique custom ? Glissez-la ou vous voulez.

Pret Quand Vous l'Etes

Une commande. Compatible Deno et Node.js. Publie sur JSR, le registre JavaScript moderne.

Deno
deno add jsr:@casys/mcp-server
npm
npx jsr add @casys/mcp-server
Construit avec Deno JSR