Zuplo
Learn MCP

MCP Authentication

Every remote MCP server has to decide how callers prove who they are, and the specification leaves most of that decision open.

Where to start

The spec makes authorization OPTIONAL, and says HTTP transports SHOULD rather than MUST use its OAuth flow. So the choice is what your callers can present, not what the spec requires. A static key works with every agent SDK. Platform identity avoids a stored secret between workloads you own. The spec's OAuth flow is what the ChatGPT and Claude connector directories require.

Compare

How the methods differ

Compare capabilities of different authentication options for your MCP servers.

Anthropic-hosted agents Claude Managed Agents
MCP spec
Mixed — claude.ai and Claude Code run the spec's OAuth flow; a vault token or a static header sits outside it, not against it
Works with
Four surfaces, four credential fields; only Claude Code, which runs locally, sends a header name of your choosing
Effort
An afternoon per surface
API key Any platform
MCP spec
Outside the spec's OAuth flow, which the spec makes optional
Works with
Supported by every agent SDK; hosted connectors are more limited
Effort
An afternoon
AWS IAM (SigV4) AWS
MCP spec
Platform request signing rather than MCP authorization; the spec does not cover it
Works with
Your own agents. No MCP client signs SigV4; AWS ships a local proxy that does
Effort
An afternoon with AWS's transport, a day with the IAM policies
Client credentials (M2M) Any platform
MCP spec
An official MCP extension, still Draft — shipped in the TypeScript and Python SDKs
Works with
Your own agents — the extension support matrix lists no client that implements it
Effort
An afternoon, if your IdP already issues client-credentials tokens
Google Cloud IAM Google Cloud
MCP spec
Platform identity rather than MCP authorization; the spec does not cover it
Works with
Your own workloads only; no MCP client can mint these tokens
Effort
A day, mostly IAM bindings
Microsoft Entra ID Azure
MCP spec
Out of scope of the spec's OAuth flow, which the spec makes optional
Works with
Your own workloads, plus Microsoft Foundry Agent Service; no chat or desktop client can mint one
Effort
A day, mostly the app registration and role assignments
mTLS Any platform
MCP spec
Transport-layer authentication, outside the spec's OAuth profile — which the spec makes OPTIONAL
Works with
Your own agents only; no chat or desktop client config exposes a certificate field
Effort
An afternoon in code, longer if the PKI does not exist yet
OAuth 2.1 Any platform
MCP spec
The spec's own flow — though the spec still makes authorization OPTIONAL
Works with
Claude, ChatGPT, Cursor and VS Code run it themselves; among agent SDKs, only those shipping an OAuth provider
Effort
Days — most of it is the authorization server, not MCP
Identity providers

What your identity provider supports

The spec's OAuth flow needs dynamic client registration (RFC 7591) and resource indicators (RFC 8707). Support is patchy, so check yours before you commit to it.

Microsoft Entra ID

Registration
No
Resource indicators
No

No dynamic client registration, and no RFC 8414 metadata endpoint. Ask for an audience with scope={resource}/.default rather than the resource parameter.

Source

Amazon Cognito

Registration
No
Resource indicators
No

Cognito's own docs state it does not support dynamic client registration. Pre-register the client.

Source

Keycloak

Registration
Yes
Resource indicators
No

Keycloak documents that it "cannot recognize the resource parameter". Use the scope parameter plus an audience mapper on a client scope.

Source

Auth0

Registration
Yes
Resource indicators
Partial

Dynamic registration must be enabled per tenant. Audience is set with the audience parameter rather than resource.

Source

Ory Hydra

Registration
Yes
Resource indicators
No

Dynamic registration is off by default. Its registration response includes empty client_uri and logo_uri fields, which some clients reject during validation.

Source

Zitadel

Registration
No
Resource indicators
No

Dynamic client registration is not implemented; the tracking issue has been open since April 2025.

Source

authentik

Registration
No
Resource indicators
No

Not shipped. An implementation for the enterprise OAuth2 provider is in review.

Source

Provider support last verified July 24, 2026

Errors

When a connection fails

Find and fix the errors MCP clients report when authentication fails.

One policy engine for APIs, AI, and MCP

Put your MCP servers behind a gateway that handles the OAuth details providers leave out, filters tools per role, and logs every call.