MCP Deep Dive, Part 11: The Protocol Was Never the Blocker — Rolling MCP Across the Enterprise
The protocol was never the enterprise blocker — identity was. Here's rolling MCP across a company: provision once, inherit on login, govern centrally.
- Author
- Randhir Jassal
- Published
- Reading time
- 16 min read
- Views
- 9 views
There are already tens of thousands of MCP servers in the world. Getting even one of them into a real company, though, still tends to mean per-user OAuth, a consent screen, and an IT ticket — per connector, per employee. That's the actual blocker, and it was never the protocol. It's identity. This part is how MCP goes from "works on my laptop" to "ships across the org."
This is Part 11 of a 15-part deep dive on Model Context Protocol (MCP). Everything so far — the server, the client, the tools, auth, authorization, security, streaming, observability — was about making MCP work. This part is about making it ship company-wide, which is a different problem entirely: identity, provisioning, and governance. We'll use Mattrx both as an org rolling MCP out internally and as a vendor whose connector enterprise customers provision through their own identity provider.
TL;DR
| Concern | Ad-hoc MCP (before) | Enterprise MCP (after) |
|---|---|---|
| Access to a connector | per-user OAuth + IT ticket | provisioned once, inherited on login |
| Which servers are allowed | whatever a dev wires up | one vetted catalog |
| Third-party servers | trusted blindly | reviewed + checksum-pinned |
| Policy | scattered per agent | provisioned via IdP groups |
| Cost / data | ungoverned | budgets + DLP + residency + audit |
| Rollout | big-bang | staged by risk tier, platform-owned |
- The enterprise blocker was never the protocol — it was identity and provisioning.
- Enterprise-Managed Authorization: admins provision connectors once via the IdP; employees inherit on login — no per-user OAuth, consent screens, or IT tickets.
- A central MCP catalog replaces every team wiring its own servers — approved connectors only.
- Vet + checksum-pin third-party servers (Part 8) before admitting them — the rug-pull guard as an org process.
- Provision identity + policy through the IdP — a user's group maps to the scopes their agents inherit (Part 7 at org scale).
- Govern cost (per-team budgets), data (DLP + residency), and audit at the platform, not per team.
- Roll out by risk tier — read-only broad and self-service; destructive/regulated gated.
- A platform team owns the gateway + catalog; teams self-serve within guardrails.
- Connector onboarding: an IT ticket + per-user OAuth (days) → inherited on login (seconds).
- Connectors were the easy 80%; authorization and governance are the 20% that decide whether agents ship at all.
The one mental shift: your agent's real dependency was never the connection — it's an identity and a policy that says what that identity may do. In an enterprise, the win isn't wiring up more APIs; it's provisioning that identity-and-policy once, centrally, through your IdP, and letting every employee inherit it on login. The protocol was the easy part.
The running example: Mattrx, inside and out
Two views of the same problem. Internally, Mattrx runs its own three servers plus a handful of external ones, and needs every agent across its teams to reach only what it should — governed centrally. As a vendor, Mattrx's mattrx-analytics connector is dropped into an enterprise customer's identity provider, and their admins decide which of their employees inherit it. Both views come down to the same thing: identity, a catalog, and a policy, managed centrally. Here's how, with the ad-hoc before and the enterprise after.
The enterprise MCP architecture
Identity Provider (Entra / Okta)
admins provision connectors -> groups
|
(login: inherit connectors + scopes)
v
Agents (every team) --> [ ORG MCP GATEWAY / BROKER ] --> approved MCP servers
- auth (IdP tokens) (from the VETTED CATALOG)
- catalog / entitlements mattrx-analytics
- policy (group -> scopes) mattrx-reports
- budgets + DLP + residency partner-crm (pinned)
- org-wide audit docs-search (pinned)
1. Enterprise-Managed Authorization — provision once, inherit on login
Before
Every employee, for every connector, does per-user OAuth and clicks a consent screen — often gated behind an IT ticket. Onboarding 500 people to 20 connectors is 10,000 individual grants, and a permanent queue.
After
An admin provisions the connector once in the identity provider and assigns it to a group. On login, employees inherit the connector and its scopes — no ticket, no consent, no per-user OAuth.
// Admin action, ONCE: grant a connector to a group with a scope set, in the IdP.
public sealed class ConnectorProvisioning(IIdentityProvider idp, IMcpCatalog catalog)
{
public Task ProvisionAsync(string connectorId, string group, IReadOnlySet<string> scopes)
=> idp.AssignAppRoleAsync(connectorId, group, scopes);
// At login: the employee's token already carries the connectors + scopes their groups grant.
public IReadOnlyList<GrantedConnector> ForUser(ClaimsPrincipal user)
=> catalog.ResolveGrants(user.Groups()); // inherited, not requested
}
Diagnostic: this is the shift the whole industry is going through, and it's the crux of enterprise MCP. The employee's real dependency was never the connection — it's an identity and a policy, provisioned centrally and inherited on login. Enterprise-Managed Authorization turns "an IT ticket and a per-user OAuth per connector" into "log in and it's there."
Mattrx metric: for customers who provision mattrx-analytics through their IdP, employee access went from a ticket plus a per-user OAuth grant (days) to inherited on login (seconds) — and revoking access is removing a group membership, not chasing down a token.
2. A central MCP catalog, not a free-for-all
Before
Every team points its agents at whatever MCP servers it likes. Nobody knows what's connected, and half of it is unvetted.
After
One org catalog of vetted connectors. Agents get their entitled toolset from the registry — never from whatever a developer decided to wire up.
// One org catalog of approved connectors. Agents are entitled to a subset by group membership.
public sealed class McpCatalog(ICatalogStore store) : IMcpCatalog
{
public async Task<IReadOnlyList<ConnectorRef>> EntitledAsync(AiPrincipal p, CancellationToken ct)
=> (await store.ApprovedAsync(ct))
.Where(c => p.Groups.Overlaps(c.AllowedGroups)) // approved AND entitled
.ToList();
}
Diagnostic: at org scale, an ungoverned connector is shadow IT with a network route into your data. A central catalog makes "which MCP servers are allowed here" a governed decision, and gives every agent one vetted place to discover tools — the org-level version of the discovery from Part 4.
Mattrx metric: internally, every agent draws its connectors from one catalog — zero ad-hoc server connections in production, so "what can our agents reach?" is a query against the registry, not a survey of every team.
3. Vet and pin third-party servers
Before
A developer adds a public MCP server to get a feature shipped. It's untrusted code, returning untrusted data, now inside your agent loop.
After
A server enters the catalog only after a security review and a checksum pin (the rug-pull guard from Part 8), tiered by risk.
// A third-party server is admitted only after review + a pinned checksum. A public MCP server is
// untrusted code returning untrusted data — vet it before the org trusts it.
public async Task<AdmissionResult> AdmitAsync(ExternalServer server, CancellationToken ct)
{
var review = await security.ReviewAsync(server, ct); // data access, egress, license, residency
if (!review.Approved) return AdmissionResult.Rejected(review);
var pin = await Checksum(await server.ListToolsAsync(ct)); // pin tool defs (rug-pull guard, Part 8)
await catalog.AdmitAsync(server, pin, review.Tier, ct);
return AdmissionResult.Admitted(pin);
}
Diagnostic: the "tens of thousands of servers" ecosystem is a gift and a supply-chain risk. Vetting turns it into a gift only — a server is reviewed for what data it touches and where it sends it, tiered by risk, pinned by checksum, and re-reviewed when its definitions change. The per-agent rug-pull guard from Part 8 becomes an org admission process.
Mattrx metric: the external servers we federate with are admitted by review and pinned by checksum — a changed tool definition pulls the connector for re-review instead of silently reaching every agent.
4. Provision the policy through the IdP
Before
Each agent's scopes were hardcoded or scattered (the Part 7 problem), and changing a permission meant a deploy.
After
The identity and the policy are provisioned centrally. A user's IdP group maps to the scopes their agents inherit — the "identity + a policy" from Part 7, now managed org-wide.
IdP group -> inherited connector scopes
--------- --------------------------
"Analysts" -> { campaigns:read, events:read }
"Report Editors" -> { campaigns:read, reports:create }
"Admins" -> { admin:flags } + step-up
Change the group, change the policy — for everyone in it, instantly, from one place.
Diagnostic: Part 7 built the identity-and-policy per agent; Part 11 provisions it at org scale through the IdP. Group membership determines the connectors and scopes an employee's agents inherit, so authorization is one central decision that propagates to everyone at once. Move someone to a new team, and their agents' permissions follow — no ticket, no deploy.
Mattrx metric: authorization changes that used to be per-agent config are now a group membership in the IdP — one edit, org-wide, audited (Part 10), and reversible in seconds.
5. Govern cost, data, and audit at the platform
Before
No visibility into which team spends what, which data leaves the boundary, or who did what across connectors.
After
Governance is a platform capability: per-team token budgets, DLP and data-residency rules per connector, and one org-wide audit.
// Governance is a platform capability, not a per-team afterthought.
gateway.SetTeamBudget(team, monthlyTokens); // cost governance (the AI-Native gateway)
gateway.RequireRegion(connector, allowedRegions); // data residency
gateway.RequireDlp(connector, dlpProfile); // redaction / DLP (the Security post)
// Every call across every connector lands in one org-wide audit (Part 10).
Diagnostic: an enterprise will not ship agents it cannot govern. Per-team budgets stop runaway spend, residency rules keep regulated data in-region, DLP stops sensitive data leaving, and the org-wide audit answers "who did what" across every connector. Governance is precisely what turns a promising pilot into a company-wide rollout — and its absence is why so many pilots never graduate.
Mattrx metric: per-team budgets and one audit across all connectors mean cost and access are a dashboard, not a mystery — the questions an enterprise security and finance team must be able to answer before they say yes.
6. Roll out by risk tier, not big-bang
Before
"Turn on MCP everywhere." It fails the way every big-bang does — the first incident freezes the whole program.
After
A platform team owns the shared gateway and catalog; connectors roll out by risk tier, and teams self-serve within guardrails.
Enterprise MCP rollout — by risk tier, not big-bang:
Tier 1 (read-only, low-risk) -> analytics, docs, search -> broad, self-service
Tier 2 (write, reversible) -> create report, update ticket -> scoped groups + audit
Tier 3 (destructive/regulated) -> admin, finance, PII -> step-up + review + narrow groups
Platform team owns the gateway + catalog; teams self-serve WITHIN the guardrails.
Diagnostic: governance first, breadth second. Low-risk read-only connectors go broad and self-service so the value shows up fast; write and destructive connectors stay gated by scoped groups, step-up, and review. A platform team owns the shared infrastructure so every team doesn't rebuild auth, catalog, and audit — they inherit it.
Mattrx metric: starting with Tier-1 read-only connectors got agents into daily use quickly, while the gated tiers kept the destructive and regulated surface controlled — adoption and safety on the same curve, not traded against each other.
The numbers, in one place
| Concern | Ad-hoc MCP (before) | Enterprise MCP (after) |
|---|---|---|
| Connector onboarding | IT ticket + per-user OAuth (days) | inherited on login (seconds) |
| Approved-server visibility | unknown / shadow IT | one vetted catalog |
| Third-party trust | blind | reviewed + checksum-pinned |
| Policy changes | per-agent config + deploy | IdP group edit, org-wide |
| Cost / data governance | none | budgets + DLP + residency |
| Audit | scattered | one org-wide trail |
Enterprise rollout checklist
- Provision connectors once in the IdP; employees inherit on login (no per-user OAuth/tickets).
- Publish a vetted catalog; agents connect only to approved servers.
- Review + checksum-pin every third-party server before admission; re-review on change.
- Map IdP groups → connector scopes; provision identity + policy centrally.
- Put a governed gateway in the path: budgets, DLP, residency, org-wide audit.
- Roll out by risk tier; read-only broad + self-service, destructive gated.
- Give a platform team ownership of the gateway and catalog.
- Make revocation a group change, not a token hunt.
The honest stuff: proportion and pitfalls
- A small team or single product. The full catalog + gateway is overkill; a few connectors and Part 7's authorization are enough. Enterprise governance is for org scale.
- Letting every team self-provision third-party servers. That's shadow IT with a network route. The catalog + review is the point.
- "Per-user OAuth for now." That's exactly the toil that stalls rollout. Integrate the IdP or the program never scales past the pilot.
- Big-bang. Start read-only and low-risk, earn trust, expand by tier. The first incident on a broad rollout ends the program.
- A catalog without vetting. A directory of unreviewed servers is just a longer list of risks. The value is the review + pin.
- Centralizing so hard you kill velocity. Self-service within guardrails — a platform that enables, not a ticket queue for every tool.
- Governance you don't audit. Budgets, DLP, and policy are theater without the org-wide audit (Part 10) proving they hold.
The model to carry forward
Connectors were the easy 80%; identity, policy, and governance are the 20% that decide whether agents ship inside a company at all. Provision the identity-and-policy once through your IdP and let employees inherit it on login. Put every connector behind one governed gateway and one vetted catalog. Govern cost, data, and audit as platform capabilities. Then the protocol — the part everyone obsesses over — really does become the easy part.
Three habits that make MCP ship enterprise-wide:
- Provision identity + policy centrally through the IdP. Once, inherited on login — never per-user, per-connector.
- Put a vetted catalog and a governed gateway between agents and servers. No ad-hoc connections, no unreviewed servers.
- Roll out by risk tier with a platform team. Read-only broad, destructive gated, self-service within guardrails.
In Part 12 we come back down to the code and go deep on one stack: building MCP servers in C# and .NET 9 — the SDK, hosting model, and patterns behind everything we've shown.
Continue the series — MCP Deep Dive
- Why Model Context Protocol Kills Integration Glue Code for Good
- Inside the MCP Architecture: Hosts, Clients, and Servers
- Build a Production-Grade MCP Server From Scratch
- Build an MCP Client That Connects to Any Tool (and Any Model)
- Custom MCP Tools Your AI Agents Can Actually Trust
- MCP Authentication With OAuth and Entra ID, Done Right
- Reaching a Tool Isn't Being Allowed — Least-Privilege Authorization for MCP Agents
- When a Tool Result Is the Attack — Securing MCP Against Prompt Injection and Tool Abuse
- When the Tool Takes Minutes — Streaming and Long-Running Tools Over MCP
- When the Agent Feels Off — Debugging and Observability for MCP in Production
- The Protocol Was Never the Blocker — Rolling MCP Across the Enterprise (you are here)
- Building MCP Servers in C# and .NET 9
- Hosting MCP on Azure at Real Scale
- Wiring MCP Into OpenAI and Agent Frameworks
- Running MCP in Production — Lessons From Mattrx
Further reading
- MCP Deep Dive, Part 7: Reaching a Tool Isn't Being Allowed — Least-Privilege Authorization for MCP Agents
- MCP Deep Dive, Part 8: When a Tool Result Is the Attack — Securing MCP Against Prompt Injection and Tool Abuse
- AI-Native Architecture: The 9-Layer Blueprint Every Enterprise Will Adopt by 2027
Rolling MCP out across an organization and want a second pair of eyes on the identity and governance model? I'm always happy to compare notes — reach me at randhir.jassal@gmail.com.
Get the next issue
A short, curated email with the newest posts and questions.