TL;DR: MCP servers still rely on the implementer to decide how users authenticate, issue tokens, and validate access, and WorkOS outlines three common paths: build OAuth yourself, bridge existing users, or fully host the flow with AuthKit. That choice is an identity design decision, not just an integration detail, because it determines who owns trust, token validation, and lifecycle control.
NHIMG editorial — based on content published by WorkOS: How to add OAuth to your MCP server
By the numbers:
- Only 18% of MCP server deployments implement any form of access scoping for tool permissions.
- 53% of MCP servers expose credentials through hard-coded values in configuration files.
Questions worth separating out
Q: How should security teams implement OAuth for MCP servers?
A: Start by deciding who owns token issuance, client registration, consent, and revocation, then make the MCP server validate issuer, audience, expiry, and scope on every request.
Q: Why do MCP servers increase identity governance complexity?
A: MCP servers add a new machine-facing access layer that can introduce client sprawl, token sprawl, and unclear ownership if the OAuth model is left vague.
Q: What breaks when MCP access is built without lifecycle controls?
A: Access becomes difficult to track, review, and remove, especially when client registration is dynamic or token issuance is delegated to another system.
Practitioner guidance
- Define the MCP OAuth ownership model Decide whether the server, an identity bridge, or a hosted provider owns authorization codes, token signing, scope policy, and revocation.
- Require explicit client registration for every MCP integration Do not let MCP clients self-appear without review.
- Treat the JWKS and metadata endpoints as trust surfaces Protect /.well-known/oauth-protected-resource and the JWKS endpoint with the same operational oversight you apply to other federation components.
What's in the full article
WorkOS's full article covers the implementation detail this post intentionally leaves for the source:
- Exact code examples for building an OAuth server, including token endpoints, JWKS publication, and revocation handling
- WorkOS-specific configuration steps for Dynamic Client Registration and Login URI setup
- Sample middleware for WWW-Authenticate responses and protected resource metadata discovery
- Host-side examples showing how AuthKit completes login and issues tokens for MCP clients
👉 Read WorkOS's guide to adding OAuth to an MCP server →
OAuth for MCP servers: are your identity controls ready?
Explore further
OAuth for MCP is now an identity boundary problem, not a feature checkbox. The article makes clear that the MCP spec leaves authentication undecided, which means each server creates its own trust boundary by implementation choice. That matters because identity control is where scope, revocation, and auditability either become enforceable or remain implicit. Practitioners should treat the OAuth design for MCP as part of the access architecture, not as an add-on after integration.
A few things that frame the scale:
- Only 18% of MCP server deployments implement any form of access scoping for tool permissions, according to The State of MCP Server Security 2025.
- 53% of MCP servers expose credentials through hard-coded values in configuration files, according to Astrix Security.
A question worth separating out:
Q: How should teams decide between self-managed and hosted OAuth for MCP?
A: Choose the model that matches your ability to run token lifecycle, key rotation, and client review continuously. Self-managed OAuth gives maximum control but requires stronger operational discipline. Hosted OAuth reduces implementation burden, but the team still owns scope governance, trust decisions, and access review outcomes. The right choice is the one you can govern reliably.
👉 Read our full editorial: OAuth for MCP servers: what identity teams need to decide