MCP Auth 1.0 for Node.js is here, built for the MCP TypeScript SDK v2!
Plug-and-play auth for MCP servers
MCP Auth gives you everything you need to add production-ready auth to your MCP server. No weeks spent reading specs or wiring things up.
Why MCP Auth?
Skip the specs. Skip the boilerplate. Just auth.
The MCP spec requires OAuth 2.1 and other RFCs, providing a solid foundation for auth. With MCP Auth, you can take it further by connecting to a trusted provider in just a few lines of code.
Connect to any provider. It's provider-agnostic.
MCP Auth works with any compliant OAuth 2.1 or OpenID Connect provider. Choose one from our verified list or use the tool to check if your provider is compliant.
Let's ship fast, and be secure.
Go for production? We've got you covered. MCP Auth follows the spec and best practices, so you can launch with confidence.
It really can be just a few lines of code
// 1. Declare this MCP server and the authorization server it trusts
const mcpAuth = new MCPAuth({
protectedResourceMetadata: {
resource: 'https://api.example.com/mcp',
authorizationServer: { issuer: 'https://auth.example.com/oidc', type: 'oidc' },
scopesSupported: ['read', 'write'],
},
});
// 2. Gate your MCP endpoint with the MCP SDK's `requireBearerAuth`:
// signature, issuer, audience, expiration, and scopes all enforced
const gate = requireBearerAuth(mcpAuth.getBearerAuthOptions({ requiredScopes: ['read'] }));
// 3. Serve the OAuth discovery documents with the MCP SDK's metadata helpers
const metadata = oauthMetadataResponse(request, await mcpAuth.getAuthMetadataOptions());
// 4. Read the verified identity in your tools
server.registerTool(
'whoami',
{
description: 'Returns the current user info',
},
(context) => {
const { subject, claims } = getAuthInfo(context);
return { content: [{ type: 'text', text: JSON.stringify({ subject, claims }) }] };
}
);How about the MCP SDKs?
The official MCP SDKs now ship the HTTP layer of MCP authorization themselves: bearer auth middleware, metadata endpoints, and framework adapters. What they ask you to bring is provider integration: a token verifier and your auth metadata.
MCP Auth gives you both, for any OAuth 2.0 / OpenID Connect provider.
You could write the verifier yourself; a correct one is about a hundred lines with a JWT library. These are the parts that tend to go wrong silently:
- Audience binding (RFC 8707): required by the MCP spec, left to the verifier by the SDK. MCP Auth always validates the
audclaim against your resource identifier, with no opt-out. - Expiration mapping: miss the
exp→expiresAtmapping and the SDK rejects every token. MCP Auth maps it automatically. - Error mapping: raw JWT-library errors surface as 500s with no challenge, so clients never re-authorize. MCP Auth turns verification failures into proper 401 challenges.
- Claim quirks across providers:
scopestrings vs.scopesarrays,client_idvs.azp: all handled. - Discovery hygiene: issuer validation, cached metadata and JWKS fetches, and cache reset on transient failures, all built in.
Or: all of the above is one MCPAuth instance, tested and kept up to date as the MCP spec and SDKs evolve.
What stays in your hands: provider-side configuration (audience, scopes, client registration), permission design, and your app-level authorization. That is exactly what the tutorials and provider guides walk you through.