Skip to content

MCP Enterprise-Managed Authorization, explained

MCP stabilized Enterprise-Managed Authorization in June 2026. It removes the per-server consent click and makes your identity provider the authority. It does not decide which tool a person may call.

Raajshekhar Rajan 7 min read

In June 2026 the Model Context Protocol stabilized an extension called Enterprise-Managed Authorization. It is the most consequential thing to happen to enterprise MCP so far, and it is worth understanding precisely, including the boundary of what it covers.

The problem it solves

Without it, authorizing an MCP server is a personal act. Each employee visits each server, goes through a consent screen, and grants access under their own account.

That is fine for one person and one server. Multiply it.

Fifty employees and eight internal servers is four hundred individual authorizations, created at different times, by different people, with nobody holding the list. Nothing in that arrangement is visible to IT. Nothing in it is on a leaver checklist. When somebody leaves, their access to eight servers persists until each server is separately cleaned up, by somebody who knows those eight servers exist.

This is the same failure as unmanaged SaaS accounts before single sign-on was normal, arriving again in a new category. The industry already knows what the answer looks like: the identity provider is the authority, and access is provisioned rather than requested.

How it works

The mechanism is an identity assertion grant, built on RFC 8693 token exchange rather than on anything new.

During sign-on, the client takes the user's identity token from the organization's provider and exchanges it for a grant scoped to one specific target server. It presents that grant to the server's authorization server, which issues an access token. The user clicks nothing.

Two properties are worth drawing out.

The grant is per target. It is not a general-purpose credential that opens everything. The exchange happens once per server, and the identity provider decides, per server, whether this user is entitled to it. That decision is made in the place where entitlement decisions are already made and already reviewed.

Nothing new was invented. It composes existing pieces: an identity token you already have, a token exchange your provider already implements, an authorization server the MCP specification already required. That is why adoption arrived quickly rather than over several years, and it is a good sign about how the extension will age.

What Enterprise-Managed Authorization changes for you

Onboarding stops being a list of instructions. A new hire signs in and has the servers their group entitles them to. No document telling them which eight to authorize, and no long tail of people who did six of the eight.

Offboarding becomes one action. Disable the account in the identity provider and the exchange stops producing grants. The access does not need to be chased across servers, because it was never granted at a server in the first place.

Group membership becomes the control surface. Adding somebody to a group in your provider gives them a set of servers. This puts MCP access into the same review your provider already gets, which for most organizations is the only access review that reliably happens.

Audit gains a real subject. The access token traces back to an identity assertion for a named person, so server-side logs have a subject that means something outside the server.

For anybody running their own MCP servers, this is the single biggest reduction in operational burden the specification has delivered. It is worth adopting.

What it does not do

The extension governs access to a server. It does not govern what happens inside one.

That distinction is the whole of the remaining problem, so it is worth making concrete.

Say you run an MCP server in front of your helpdesk. It exposes twelve tools: read a ticket, search tickets, reply, change status, reassign, merge, delete, and so on. The extension can ensure that only people in the support group reach that server at all. Good.

It has no opinion about the fact that your support agents should be able to read and reply, your support leads should additionally be able to merge and reassign, and nobody except two named people should be able to delete. All twelve tools are behind one server boundary, and the extension operates at that boundary.

So the questions it leaves open are:

  • Which tools inside this server may this person call?
  • May they call this tool with these arguments, on this account, when the app has several connected?
  • What happened, per call, and under whose access?

Those are the same questions you would ask about any system, and they are not an oversight in the extension. They are out of its scope on purpose: a general specification cannot know what your tools mean. The answers have to come from the server, from something in front of it, or from the platform hosting it.

The practical consequence is a shape worth predicting. Because the extension makes server-level access cheap to provision, the cheapest way to express a finer-grained policy becomes more servers. One server per team, per environment, per sensitivity level, each one a subset of tools, each provisioned to a different group.

That works. It is also how you end up operating thirty servers whose only difference is which tools they expose, with the actual policy distributed across your identity provider's group memberships and thirty separate deployments. The identity provider ends up holding a policy it cannot read, because a group name is not a statement about tools.

Where this leaves a gateway

The honest version, since we sell one.

The extension genuinely narrows the case for a gateway whose main job is aggregation and central provisioning. If you were planning to buy one so that employees would stop authorizing eight servers each, your identity provider may now do that part, and you should check before buying anything.

What it does not narrow is the case for a layer that resolves policy per call. If two people in the same group should see different tool lists, or if an operation should be restricted without deploying a second server, you need something that evaluates the person and the operation at the moment of the call. The extension hands over a valid token for a target; the per-call question starts after that.

Our own position sits deliberately on the inside of that boundary. The endpoint is one address. Who you are decides which tools you are advertised, which operations you may run, and which connected account each one reaches, evaluated per call rather than baked into which server you were provisioned. The two compose well: the extension can decide that somebody reaches the endpoint at all, and the per-call resolution decides what they find when they do.

Two notes for accuracy, since this is a post about a specification.

Server-level provisioning and per-call authorization are different clocks. A grant revoked in your identity provider stops new exchanges at once. A change to what somebody may call inside a system is a policy change, and in our case propagates in about two minutes. Different mechanisms, different guarantees, and worth knowing which you are relying on during an incident.

The extension does not make a server safe. It authenticates and entitles the caller. What the server then does with a tool call, and whether that tool call was a good idea, is unchanged. Our MCP endpoint, for one, carries no defense against instructions embedded in content a tool returns, and cannot, because a server never sees the user's prompt to compare against. Authorization and judgment are separate problems and it is worth not letting a strong answer to one imply an answer to the other.

The migration nobody mentions

If you already have employees who authorized servers individually, adopting the extension does not retire those authorizations. It changes how new access is obtained. The old grants keep working, because they are valid grants.

That leaves a period where access to a given server exists through two mechanisms, one of which your identity provider knows about and one of which it does not. The second one is invisible in exactly the way the extension was adopted to fix.

Three things worth doing in that window.

Inventory before you migrate, not after. Each server's own authorization records are the only place the existing grants are visible. Pull them while you still have a reason to look, because after the migration everyone will assume the provider is authoritative and nobody will check the servers again.

Decide whether old grants expire or are revoked. Letting them age out is less disruptive and leaves an unbounded tail. Revoking them forces everyone through the new path at a known date and generates a week of support questions. The second is usually right, and it is much easier if you pick the date in advance rather than discovering the tail during an audit.

Check that your provider's group model can express what the servers do. This is where migrations stall. Server-level entitlement is coarse, so the mapping from "who should have this" to "which group" is only as good as your groups. If your provider's groups are organizational rather than functional, you may find there is no group that means the thing you need to grant.

None of this is difficult. It is the kind of work that goes badly when it is discovered halfway through rather than planned, which is the only reason to mention it.

What to do about it

If you run your own MCP servers: adopt it. It removes the per-server consent problem, which is the one that scales worst, and it costs you a provider configuration rather than a rewrite.

If you are evaluating platforms: ask where each one sits relative to the boundary. Does it provision access to servers, resolve policy per call, or both? All three answers are legitimate, and they solve different halves.

If you are mid-decision: nothing you have already worked out is wasted. Which teams need which systems, and which operations inside them, is the same analysis before and after. The extension changes how a person is admitted, not what they should find.

The per-call half of this is written up in resolving policy per call, and the credential questions underneath it in OAuth or API keys for agents. If you are weighing the roll-your-own path against buying, MCP gateways compared covers where the line falls.

FAQ

Frequently asked questions

What problem does the extension solve?

Per-server consent. Without it, every employee authorizes every MCP server individually, which means an authorization sprawl that nobody has a list of and that no leaver process touches. With it, the organization provisions access centrally in its identity provider and employees get the servers they are entitled to on first sign-in.

How does it work technically?

During single sign-on, the client exchanges the user's identity token for a grant scoped to a specific target server, using standard token exchange. It presents that grant to the server's authorization server to obtain an access token. The identity provider is the authority on who may reach which server, and the exchange is what carries that decision across.

Does this mean I no longer need a gateway?

It depends what you needed one for. If the need was reaching many servers through one address and provisioning that access centrally, this closes a lot of the gap. If the need was that two employees should see different tools inside the same server, the extension does not address that and was not trying to.

Who has adopted it?

Adoption was reported at stabilization across major client and identity vendors including Anthropic, Microsoft and Okta, with a growing number of servers following. As with anything at this stage, check current support with your own identity provider and client rather than relying on a list.

Should I wait for this before connecting anything?

No. It changes how access to a server is provisioned, not what a server does or how you decide who may call what inside it. Those decisions survive the transition, so work done now on which teams need which systems is not thrown away.

Put agents to work on your own systems

14 days on Gold, no credit card. Start with one app and one team.

Works with
Claude ChatGPT Cursor and any other MCP client, or the Elaichi Agent.
When the trial ends
Nothing is deleted. Connections, roles and the audit log stay where they are, so subscribing picks up exactly where you left off.