Primeiros passos
Esta versão oferece suporte à especificação de autorização MCP (versão 2025-06-18).
O MCP Auth também está disponível para Python! Confira o repositório do SDK Python para instalação e uso.
Escolha um provedor compatível com OAuth 2.1 ou OpenID Connect
A especificação MCP possui requisitos específicos para autorização. O mecanismo de autorização é baseado em especificações consolidadas, implementando um subconjunto selecionado de seus recursos para garantir segurança e interoperabilidade, mantendo a simplicidade:
- OAuth 2.1 IETF DRAFT (draft-ietf-oauth-v2-1-13)
- OAuth 2.0 Authorization Server Metadata (RFC 8414)
- OAuth 2.0 Dynamic Client Registration Protocol (RFC 7591)
- OAuth 2.0 Protected Resource Metadata (RFC 9728)
Essas especificações trabalham juntas para fornecer uma estrutura de autorização segura e padronizada para implementações MCP.
Você pode verificar a lista de provedores compatíveis com MCP para ver se seu provedor é suportado.
Instale o SDK MCP Auth
- pnpm
- npm
- yarn
pnpm add mcp-authnpm install mcp-authyarn add mcp-authInicialize o MCP Auth
O primeiro passo é definir seu identificador de recurso e configurar o servidor de autorização que será confiável para autenticação. O MCP Auth agora opera no modo servidor de recursos, conforme a especificação MCP atualizada que exige OAuth 2.0 Protected Resource Metadata (RFC 9728).
Se o seu provedor estiver em conformidade com:
Você pode usar a função integrada para buscar os metadados e inicializar a instância do MCP Auth:
import { MCPAuth, fetchServerConfig } from 'mcp-auth';
// 1. Defina seu identificador de recurso e busque a configuração do servidor de autorização confiável.
const resourceIdentifier = 'https://api.example.com/notes';
const authServerConfig = await fetchServerConfig('https://auth.logto.io/oidc', { type: 'oidc' });
// 2. Inicialize o MCPAuth no modo servidor de recursos.
// `protectedResources` pode ser um único objeto ou um array para múltiplos recursos.
const mcpAuth = new MCPAuth({
protectedResources: {
metadata: {
resource: resourceIdentifier,
authorizationServers: [authServerConfig],
scopesSupported: ['read:notes', 'write:notes'],
},
},
});
Se você estiver usando runtimes edge como Cloudflare Workers, onde o fetch assíncrono no topo não é permitido, use a descoberta sob demanda:
const authServerConfig = { issuer: 'https://auth.logto.io/oidc', type: 'oidc' };
Para outras formas de configurar os metadados do servidor de autorização, incluindo URLs de metadados personalizados, transpile de dados ou especificação manual de metadados, confira Outras formas de configurar o MCP Auth.
Monte o endpoint de metadados do recurso protegido
Para estar em conformidade com a especificação MCP atualizada, o MCP Auth monta o endpoint OAuth 2.0 Protected Resource Metadata (RFC 9728) no seu servidor MCP. Esse endpoint permite que os clientes descubram:
- Quais servidores de autorização podem emitir tokens válidos para seus recursos protegidos
- Quais escopos são suportados para cada recurso
- Outros metadados necessários para validação adequada do token
O caminho do endpoint é determinado automaticamente pelo componente de caminho do seu identificador de recurso:
- Sem caminho:
https://api.example.com→/.well-known/oauth-protected-resource - Com caminho:
https://api.example.com/notes→/.well-known/oauth-protected-resource/notes
O servidor MCP agora atua como um servidor de recursos que valida tokens e fornece metadados sobre seus recursos protegidos, confiando inteiramente em servidores de autorização externos para autenticação e autorização.
Você pode usar o método fornecido pelo SDK para montar esse endpoint:
import express from 'express';
const app = express();
// Monte o router para servir os Metadados do Recurso Protegido.
// Para o recurso "https://api.example.com" → endpoint: /.well-known/oauth-protected-resource
// Para o recurso "https://api.example.com/notes" → endpoint: /.well-known/oauth-protected-resource/notes
app.use(mcpAuth.protectedResourceMetadataRouter());
Use o middleware Bearer auth
Depois que a instância do MCP Auth estiver inicializada, você pode aplicar o middleware Bearer auth para proteger suas rotas MCP. O middleware agora exige a especificação de qual recurso o endpoint pertence, permitindo a validação adequada do token:
O parâmetro audience é obrigatório pela especificação OAuth 2.0 para validação segura do token. No entanto, atualmente é opcional para manter a compatibilidade com servidores de autorização que ainda não suportam identificadores de recurso. Por motivos de segurança, sempre inclua o parâmetro audience quando possível. Versões futuras tornarão a validação do público obrigatória para total conformidade com a especificação.
No OAuth 2.0, os escopos (Scopes) são o principal mecanismo de controle de permissões. Um token válido com o audience correto NÃO garante que o usuário tenha permissão para realizar uma ação — servidores de autorização podem emitir tokens com escopo vazio ou limitado.
Sempre use requiredScopes para garantir que o token contenha as permissões necessárias para cada operação. Nunca assuma que um token válido implica acesso total.
import express from 'express';
const app = express();
// Monte o router para servir os Metadados do Recurso Protegido.
app.use(mcpAuth.protectedResourceMetadataRouter());
// Proteja um endpoint de API usando a política específica do recurso.
app.get(
'/notes',
mcpAuth.bearerAuth('jwt', {
resource: resourceIdentifier,
audience: resourceIdentifier, // Habilite a validação do público para segurança
requiredScopes: ['read:notes'],
}),
(req, res) => {
// Se o token for válido, `req.auth` é preenchido com suas reivindicações.
console.log('Auth info:', req.auth);
res.json({ notes: [] });
},
);
app.listen(3000);
Nos exemplos acima, especificamos o tipo de token jwt e o identificador do recurso. O middleware validará automaticamente o token JWT contra os servidores de autorização confiáveis configurados para esse recurso específico e preencherá as informações do usuário autenticado.
Nunca ouviu falar de JWT (JSON Web Token) antes? Não se preocupe, você pode continuar lendo a documentação e explicaremos quando necessário. Você também pode conferir o Auth Wiki para uma introdução rápida.
Para mais informações sobre a configuração do Bearer auth, confira Configurar Bearer auth.
Recupere as informações de autenticação na sua implementação MCP
Depois que o middleware Bearer auth for aplicado, você pode acessar as informações do usuário autenticado (ou identidade) na sua implementação MCP:
O segundo argumento do manipulador de ferramenta conterá o objeto authInfo, que inclui as informações do usuário autenticado:
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { z } from 'zod';
const server = new McpServer(/* ... */);
// Inicialize com MCP Auth conforme mostrado nos exemplos anteriores
// ...
server.registerTool(
'add',
{
description: 'Adiciona dois números',
inputSchema: { a: z.number(), b: z.number() },
},
async ({ a, b }, { authInfo }) => {
// Agora você pode usar o objeto `authInfo` para acessar as informações autenticadas
}
);
Próximos passos
Continue lendo para ver um exemplo de ponta a ponta de como integrar o MCP Auth ao seu servidor MCP e como lidar com o fluxo de autenticação em clientes MCP.