getmcpauth

OAuth 2.1 hospedado + Registro Dinâmico de Cliente (RFC 7591) para servidores MCP

Documentação

mcpauth

npm version npm downloads license

OAuth 2.1 + Dynamic Client Registration plug-and-play (RFC 7591) para servidores MCP, com suporte de mcpauth.

Encapsula o @modelcontextprotocol/sdk oficial e seu middleware requireBearerAuth para que solicitações não autenticadas ou inválidas sejam rejeitadas com um 401 correto conforme a especificação antes que cheguem aos handlers do seu servidor MCP.

Instalação

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

Obtenha um registrationSecret criando um projeto em getmcpauth.dev/dashboard — é a credencial do seu servidor MCP tanto para Dynamic Client Registration quanto para verificação de tokens.

Clientes MCP (Claude, ChatGPT, frameworks de agentes personalizados) então descobrem sua configuração de autenticação automaticamente via /.well-known/oauth-authorization-server — nenhuma configuração manual do cliente é necessária.

Next.js (ou qualquer framework 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 Express. Verificações de token bem-sucedidas são armazenadas em cache no processo (padrão 30s) para que uma conversa de agente muito ativa não dispare uma viagem de ida e volta pela rede a cada chamada de ferramenta.
  • createMcpAuthHandler(options) — o equivalente Next.js/Fetch-API acima, retornando um handler (request: Request) => Promise<Response>. Mesmo comportamento de cache que mcpAuth().
  • McpAuthTokenVerifier — implementa diretamente a interface OAuthTokenVerifier do SDK oficial, para uso de nível mais baixo.
  • mintToken(options) — para servidores MCP incorporados em um produto que já possui seus próprios usuários: seu backend, que já sabe quem é seu usuário logado, emite um token servidor-a-servidor sem rotear esse usuário pelo login próprio do mcpauth.
  • protectedResourceMetadata(options) / mcpAuthResourceMetadataHandler(options) — auxiliares de metadados de recursos RFC 9728.

Documentação completa: getmcpauth.dev/docs

Licença

MIT