getmcpauth

OAuth 2.1 alojado + Registro Dinámico de Clientes (RFC 7591) para servidores MCP

Documentación

mcpauth

npm version npm downloads license

OAuth 2.1 + Dynamic Client Registration (RFC 7591) listo para usar en servidores MCP, respaldado por mcpauth.

Envuelve el middleware requireBearerAuth del @modelcontextprotocol/sdk oficial, de modo que las solicitudes no autenticadas o inválidas se rechacen con un 401 correcto según la especificación antes de que lleguen a los manejadores de tu servidor MCP.

Instalación

npm install getmcpauth

Uso

import express from "express";
import { mcpAuth } from "getmcpauth";

const app = express();

app.use(
  "/mcp",
  mcpAuth({ registrationSecret: process.env.MCPAUTH_SECRET })
);

// Unauthenticated or invalid requests never reach this handler.
app.post("/mcp", handleMcpRequest);

Obtén un registrationSecret creando un proyecto en getmcpauth.dev/dashboard: es la credencial de tu servidor MCP tanto para el Dynamic Client Registration como para la verificación de tokens.

Los clientes MCP (Claude, ChatGPT, frameworks de agentes personalizados) descubren automáticamente tu configuración de autenticación mediante /.well-known/oauth-authorization-server — sin necesidad de configuración manual del cliente.

Next.js (o cualquier framework basado en Fetch-API)

// app/api/mcp/route.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { createMcpAuthHandler } from "getmcpauth";

const handler = createMcpAuthHandler({
  registrationSecret: process.env.MCPAUTH_SECRET!,
  buildServer: () => {
    const server = new McpServer({ name: "my-server", version: "1.0.0" });
    server.registerTool(/* ... */);
    return server;
  },
});

export { handler as GET, handler as POST, handler as DELETE };

API

  • mcpAuth(options) — Middleware de Express. Las verificaciones de token exitosas se almacenan en caché dentro del proceso (30s por defecto) para que una conversación de agente muy activa no genere una solicitud de red en cada llamada a herramienta.
  • createMcpAuthHandler(options) — El equivalente para Next.js/Fetch-API anterior, que devuelve un manejador de (request: Request) => Promise<Response>. Mismo comportamiento de caché que mcpAuth().
  • McpAuthTokenVerifier — Implementa directamente la interfaz OAuthTokenVerifier del SDK oficial, para uso de bajo nivel.
  • mintToken(options) — Para servidores MCP integrados en un producto que ya tiene sus propios usuarios: tu backend, que ya sabe quién es su usuario conectado, emite un token de servidor a servidor sin pasar a ese usuario por el inicio de sesión propio de mcpauth.
  • protectedResourceMetadata(options) / mcpAuthResourceMetadataHandler(options) — Utilidades de metadatos de recursos RFC 9728.

Documentación completa: getmcpauth.dev/docs

Licencia

MIT