Why governance now
Three numbers frame the problem. Censys counted over 21,000 publicly reachable MCP servers by mid-April 2026. GitGuardian found 24,000+ secrets in public MCP configuration files on GitHub. Gartner projects task-specific AI agents in 40% of enterprise applications by end of 2026, up from under 5% in 2025. The attack surface grew faster than the defensive controls.
Most security teams spent 2025 watching developers paste personal access tokens into MCP configs and ship them. Most spent H1 2026 realizing that was happening at scale across their own organizations. Most are spending H2 2026 standing up actual controls. If you're on a security team evaluating or approving MCP servers, this checklist is the shape your controls need to take.
The pattern that triggered this: "we installed one approved MCP server from a vendor, then developers quietly started installing community MCPs from GitHub pointing at internal systems, with their personal tokens." If your org is bigger than 50 engineers, this has already happened; the only question is whether you know about it yet.
The four pillars
Governance in 2026 has settled into a four-pillar shape. Each pillar catches a different failure mode; skipping any one leaves a gap the other three can't close.
Approval
Which MCP servers your organization permits. The gate every server must pass before an agent can reach it.
Scoping
Which tools inside an approved server each role can call. Approval alone is a blank check; scoping sets the limits.
Enforcement
The runtime that applies the approval and scoping decisions. Policy on paper is not policy in practice until something enforces it.
Audit
Searchable record of every tool invocation with user identity. Without audit, you can't debug incidents or satisfy regulators.
The order matters. Approval without scoping is permissive. Scoping without enforcement is theater. Enforcement without audit is unprovable. Audit without approval is noise — you can see what happened but not whether it was supposed to.
Pillar 1 — Approval
The approval pillar answers one question: is this MCP server allowed to exist in our environment? It's the catalog of what's been reviewed and what's been declined.
What a working approval process requires:
- A central catalog of approved serversEvery approved server listed by name, version, approval date, owner, and intended use case. Discoverable to engineering so adding a new one goes through the catalog, not around it.
- A documented review processSecurity review requirements for new server submissions. Includes vendor questionnaire (see below), code review for self-hosted, and sign-off from a named approver.
- A "deny" register of refused serversServers reviewed and rejected are listed too, with reason. Prevents re-submission of the same server by different teams.
- A sunset policyApprovals are time-boxed (12-24 months typical) and require re-review. Server behavior changes; approvals shouldn't be forever.
- Owner-and-escalation recordsEvery approved server has a named internal owner and a documented path for incident escalation. "Who owns this" must have an answer.
The common failure mode is a catalog that gets filled during a push and then never maintained. If no one is accountable for keeping the catalog accurate, the catalog degrades into fiction within six months. Assign a specific role — often the MCP governance lead or security engineering manager — as the catalog owner.
Pillar 2 — Scoping
Approval decides whether a server exists; scoping decides what each person can do with it. An approved GitHub MCP server exposes dozens of tools — list_issues, comment, merge_pr, delete_repo, update_billing. Approving "GitHub MCP" without scoping is approving all of those for everyone with access. Scoping is where that gets fixed.
What a working scoping model requires:
- Per-tool allow/deny decisionsEach tool on each server has an explicit allow/deny for each role. "All tools allowed" is a decision; it needs to be made consciously, not by default.
- Role-based mapping to identity-provider groupsScope decisions map to groups in your IdP (Okta, Entra, Google Workspace). When a user's role changes, their MCP tool access changes automatically.
- Least-privilege defaultNew tools in an existing server are denied by default and require explicit approval. "Vendor added a new tool" is not an auto-approval.
- Scoping for both read and write classesRead tools and write tools get different approval bars. Read scoped by sensitivity of data; write scoped by blast radius of action.
- A documented bypass path for emergenciesWhen something's broken and the standard scope is blocking the fix, who can grant a temporary wider scope and how is it recorded?
Scoping is where governance crosses from catalog-maintenance into actual security impact. A GitHub MCP scoped to list_issues + comment for engineering, with merge_pr gated to approved reviewers only, is a dramatically different attack surface than "GitHub MCP: approved." Spend the time on this pillar; the ROI is highest.
Pillar 3 — Enforcement
Enforcement is the runtime that applies approval and scoping decisions at request time. Without it, your policy is a document and your agents are hitting whatever they can reach.
Enforcement happens at one of three places in the stack: at the AI client (Claude Desktop, Cursor), at an MCP gateway sitting between clients and servers, or at the server itself. The 2026 default is gateway-based enforcement because it's the only place you can apply consistent policy across many clients and many servers without rebuilding each one.
What a working enforcement setup requires:
- A gateway that intercepts every MCP tool callDirect client-to-server connections bypass policy. Routing all traffic through a gateway is the single most important enforcement decision.
- Policy as code, not policy as docsApproval and scoping decisions live in version-controlled policy files the gateway reads. Not in a wiki page a human remembers to update.
- Identity passthrough from the IdPThe gateway reads the calling user's identity from the EMA bundle or OAuth token and enforces scope at that user's level, not a shared service account's.
- Per-caller rate limitingA server-wide rate limit doesn't protect you from one misbehaving agent. Per-user and per-client limits do.
- Fail-safe defaultsWhen the gateway can't evaluate a policy (bug, timeout, unreachable IdP), the default must be deny, not allow. "Allow on error" is how enforcement gets bypassed.
The enforcement sanity check: if someone unplugs the gateway, can anyone still reach the MCP servers? If yes, your enforcement is advisory. If no (connections fail, agents can't work until the gateway comes back), your enforcement is mandatory. Mandatory is the goal.
Pillar 4 — Audit
Audit closes the loop. Approval, scoping, and enforcement happen before and during the call; audit records what happened after. Without audit, you can't prove compliance, can't debug incidents, can't detect drift, can't show auditors how the system behaves.
What a working audit setup requires:
- Structured logs of every tool invocationUser identity, server, tool name, arguments (where safe to log), result, timestamp, latency. One line per call, machine-parseable.
- Centralized log aggregationLogs flow to your SIEM (Splunk, Datadog, Sumo, Elastic). Logs living only on individual servers are useless for incident response.
- Retention aligned to regulatory requirementsSOC 2, ISO 27001, HIPAA, PCI each have retention windows. 90 days is the common floor; some regimes need 7 years.
- Alerting on anomaliesVolume spikes, calls outside normal hours, access to tools a user hasn't used before — these are detectable signals of compromise or misuse.
- Separation of dutiesThe team that administers the servers is not the team that reviews the audit logs. Someone who can grant themselves access shouldn't be the only one who can see the record.
- Scrubbed-argument policiesLogs capture that a tool was called with certain argument shapes, not the raw argument values when those contain PII, PHI, or secrets. Argument hashes beat argument plaintext for sensitive calls.
Audit is the pillar that pays off slowest and matters most when it matters. Most organizations only discover their audit setup is inadequate during the first incident response — and discovering it then is expensive.
The gateway landscape
Pillar 3 benefits from a dedicated MCP gateway. The current landscape as of October 2026:
| Gateway | Deployment | Policy format | EMA support | Audit output | Best for |
|---|---|---|---|---|---|
| Diagrid Catalyst | Managed SaaS | YAML + CLI | Yes | Structured JSON | Mid-to-large enterprises wanting managed tooling |
| Lyzr Governance | Managed or self-hosted | Dashboard + API | Yes | SIEM-ready | Teams that want UI-driven policy management |
| CData MCP Gateway | Self-hosted | Config files | Partial | Standard logs | Shops already using CData for data integration |
| Cloudflare MCP Gateway | Cloudflare-hosted | Workers config | Partial | Cloudflare logs | Teams on Cloudflare for the rest of their stack |
| Kong AI Gateway | Self-hosted or Konnect | Kong declarative | Roadmap | Kong logging | Teams already running Kong for API management |
| Build it yourself | Self-hosted | Your choice | You build it | You design it | Specific requirements no vendor meets |
The pragmatic default for most mid-size organizations is one of the managed options (Diagrid or Lyzr) because the governance tooling is non-trivial to build and the ongoing maintenance cost is real. Self-hosted makes sense if you have specific policy requirements no vendor meets or regulatory constraints that preclude managed services.
The one option that stops making sense in 2026 is "no gateway, each team runs their own servers." At enterprise scale, that pattern is where the shadow-server problem lives.
Vendor questionnaire template
When evaluating a hosted MCP server from a vendor, these are the twelve questions worth asking before approval. Each catches a specific pattern of risk.
- Does the server implement the 2026-07-28 MCP spec? Older spec means older transport and auth story.
- Does the server support Enterprise-Managed Authorization (EMA)? If no, how do credentials rotate?
- Which identity providers are supported? Okta, Entra, Google Workspace, Ping — needs to match yours.
- Does the server implement tool-level scoping? Or is approval all-or-nothing?
- Are credentials ever stored at rest on the server? If yes, how?
- What is the data-residency story? Where does customer data flow during tool execution?
- Does the server emit structured audit logs? What format, what retention, SIEM-ready?
- Is there per-caller rate limiting, not just per-server? One misbehaving agent should not DoS the server for everyone else.
- What's the SLA for a reported security vulnerability? Days matter here, not weeks.
- Does the server honor "deny" decisions from an upstream gateway? Can your gateway enforce policy, or does the server bypass it?
- Is the server listed in the Agentic AI Foundation catalog? Indicator of ecosystem engagement.
- What happens on EMA token expiry/revocation? How fast does access actually disappear when a user leaves?
Few vendors will clear all twelve today. The useful signal is which they're red on. One or two yellows isn't disqualifying; three or more reds probably is.
90-day rollout plan
A realistic sequence for getting from "no governance" to "four pillars live" in a single quarter:
Days 1-14 — Discovery. Find every MCP server already running in the organization. Scan environments for the known MCP process signatures. Grep configuration files and git repos for MCP-related patterns and secrets. Produce a shadow-server inventory. Expect it to be larger than you estimated.
Days 15-30 — Approval catalog. Stand up the central catalog (even if it's a wiki page to start). Add every discovered server that passes a basic review. Decline the ones that don't. Communicate the catalog as the only approved path.
Days 31-50 — Gateway deployment. Pick a gateway (managed or self-hosted) and route traffic through it. Expect the first week to surface servers you didn't find in discovery — traffic that was going direct now shows up at the gateway.
Days 51-70 — Scoping and EMA. Define role-based tool-level scopes for each approved server. Wire the gateway to your IdP for identity passthrough. Pilot EMA with one team before rolling broadly.
Days 71-90 — Audit and alerting. Route gateway logs to your SIEM. Set up anomaly alerts (unusual tool access, off-hours activity, new user accessing high-privilege tools). Run a tabletop incident-response exercise to pressure-test the pipeline.
That's a sprint. Organizations with existing identity-provider sophistication can compress it; organizations without can expect to double the timeline on the IdP integration pieces alone. Budget for the long version if you're not sure.
FAQ
Can we skip the gateway if we only have 2-3 approved servers?
Technically yes; practically it's a trap. You'll have 10 servers in six months because MCP adoption grows faster than organizations plan for. Building the gateway muscle early with 3 servers is dramatically cheaper than retrofitting it on 15.
What's the single biggest failure mode to avoid?
Approving servers without scoping their tools. "GitHub MCP: approved" without saying which GitHub MCP tools are available to which roles is the single most common gap. It's approval theater; the actual permission surface is unchanged from unmanaged.
Do we need all four pillars for a startup with 20 engineers?
You need the shape of all four, scaled appropriately. Approval can be a shared doc. Scoping can be a few role definitions. Enforcement can be a simple gateway. Audit can be a log pipeline. At 20 engineers, the full enterprise tooling is overkill — but having no approval process is still bad. Pick lightweight versions, not nothing.
Who owns MCP governance organizationally?
Security engineering is the most common home, with infrastructure/platform as a close second. The anti-pattern is "whichever team happens to care at the moment" — ownership needs to be explicit or governance decays. Name a lead; make it part of their job; review quarterly.
How does this interact with existing API governance?
MCP governance is a specialization of API governance, not a replacement. The approval/scoping/enforcement/audit pillars are the same shape your API gateway tooling applies to REST and GraphQL. If you have good API governance already, MCP governance is extending it to a new protocol. If you don't, you're building both at once — harder but not fundamentally different.