getmcpauth
OAuth 2.1 hospedado + Registro Dinâmico de Cliente (RFC 7591) para servidores MCP
Documentação
mcpauth
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 quemcpAuth().McpAuthTokenVerifier— implementa diretamente a interfaceOAuthTokenVerifierdo 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