MCP Governance Policy For Enterprise Teams Running AI Agents

Oct 13, 2026

An MCP governance policy for enterprise teams decides which tool calls AI agents can run. Learn how to enforce it, roll it out, and prove it to auditors.

Lumos Team
In this article

Your platform team pushes a list of twelve approved MCP servers to every engineer's coding agent and calls the program done. By Friday, an agent on one of those servers has bulk-edited two hundred CRM opportunities in one afternoon, and another engineer's agent is calling a database server installed on a laptop that never shows up on the list. An MCP governance policy for enterprise teams is the set of rules that decides which MCP servers agents can connect to, which tool calls they can make on whose access, who approves exceptions, and what gets recorded. Those rules only count if they're enforced before each call runs.

A list of servers answers the first of those questions and leaves the rest open. The policy that holds up decides each call at the point where it runs, against the access of the person behind the agent. Below you'll find a map of where that decision can be enforced, how to write rules that survive real agent behavior, and a ten-clause policy you can adapt.

The five decisions every MCP governance policy has to make

An MCP governance policy makes five decisions, and most enterprise MCP programs have only made the first one. The protocol defines how agents discover and call tools, and it leaves who may act and what gets logged to the company running them. That gap is already live as engineers connect agents to production infrastructure, CRMs, and code repositories.

Each of the five decisions has its own owner, and each becomes one or more clauses in the policy later in this piece. They also build on each other in order, because you can't write a rule for a tool call until you know which servers that call can come from. So the policy starts where every agent session starts, with the servers an agent is allowed to connect to.

Connection decides which MCP servers agents can reach

Before an agent can do anything, it has to reach a server, so the first decision is which MCP servers, and which versions of them, are approved. It's the decision most teams have already made, usually as an allowlist in each agent client's admin settings. Security sets the baseline tiers, and the team that owns the data behind each server decides whether it gets approved.

Action decides which tool calls agents can make

Once a server is approved, the next question is what an agent can do with it, down to the specific tool and the inputs it passes. One approved server can read a record, update it, or run arbitrary code against it, so this decision carries most of the risk. The rules come from the team that owns the data behind each server, since that team knows which writes would hurt.

Identity decides whose access each call runs on

Each of those actions runs on someone's access, and the identity decision settles whose, along with which credentials sit behind each server. An agent in an employee's session inherits that person's entitlements, so the answer is usually the person who started the agent. Platform engineering keeps the credentials behind each server scoped and short-lived, and IT keeps the person side current through the joiner-mover-leaver process.

Exceptions decide who can approve calls outside the rules

No rule set fits every case on day one, so the policy needs a named way to approve a server or call it doesn't allow yet, and a limit on how long that approval lasts. Without a sanctioned path, engineers install what they need locally and the policy never hears about it. The domain owner approves each exception and sets the date it expires.

Evidence decides what gets recorded and kept

The last decision ties the other four together by settling what gets recorded for each call, how long it's kept, and what stays out of the log. Every allow and deny needs a record that ties it to a person and a policy version, or the policy can't be proven at audit time. GRC decides what an auditor sees, and security and privacy decide what the log holds and what it leaves out.

Is an MCP server allowlist enough to govern AI agents?

An MCP server allowlist can't govern AI agents on its own, because it stops at the connection. Many coding agents now ship one in their admin settings, and it does two useful things: it shrinks the set of servers that can connect, and it gives security a first inventory. Both are worth having on day one.

The limits show up fast. Each agent client keeps its own settings in its own format, and we've found that even products from the same vendor often expose different controls, so a company running three clients maintains three allowlists that drift apart. In practice, one client allows a database server that another blocks, and the desktop assistant the sales team uses carries a list security has never seen. More important, an allowlist approves a server, and every call that server makes inherits the approval.

The calls are where the risk lives. In customer environments, we've seen employees drive agents to modify production feature flags, publish applications, and delete knowledge base files, as we described when we launched MCP Governance. Lumos Labs has also found that coding agents are routinely run without permission checks, so the per-call approval prompt many clients offer can't be counted on. A server allowlist has no opinion on any of those calls.

None of that was rogue behavior. Changing a flag, shipping an app, and cleaning up stale docs are the jobs people hand to agents, and each one needs write access somewhere that matters. Blocking the server would have stopped the work along with the risk. MCP server governance has to judge those writes one call at a time.

Start by pulling the allowlist settings from each agent client in use. Put them side by side and mark where they disagree, because each disagreement is a server one team trusts and another team never reviewed.

Where to enforce MCP access control for every tool call

A policy is only as good as the point that enforces it, and most enforcement points see a fraction of what agents do. Here's what each common control can see, what it can decide, and where it goes blind.

Window Action Owner
First 15 minutes Deny the server or tool for every agent with one policy change, and disable it at the IdP for connections that use enterprise-managed authorization Security on call
First hour Revoke OAuth grants and refresh tokens for the people whose agents used it, rotate any static key the server held, and pull the call records: who, which tools, which arguments, and when Security with IT
First day Review every write the agents made through the server (records changed, files deleted, messages sent), notify data owners, and preserve the decision log with the policy version in force Security, data owners, and legal
First week Write the rule that would have blocked it, run it in log-only mode, then enforce it, and re-review the vendor Security and the server’s owner

‍

The blind spots matter because agents route around blocked paths. Deny an agent the database's MCP server and, if it can write code, it can import the database's client library, read the connection string from an environment variable, and run the same query. MCP access control that only watches MCP traffic misses that call entirely, so the decision point has to cover shell and file calls in the same session.

That's the point where Lumos MCP Governance makes its decision. A hook inside the agent client sends each tool call to Lumos before it runs and gets back allow or deny, targeting under 50 milliseconds per check, and nothing about how the agent reaches its servers changes. Because the check happens in the client, it sees what a proxy can't: MCP calls to servers an engineer added locally, plus Bash commands, file edits, and browser use in the same session. Browser use matters because an agent driving an authenticated browser session reaches apps without touching MCP at all, so an MCP gateway never sees it.

Gateways and identity providers still earn their place. A gateway is still the natural place to hand remote servers their credentials and restrict which hosts they can call, and identity provider scopes set the outer limit on what any token can touch. If most of your MCP traffic runs through hosted servers your platform team operates, a gateway covers a large share of it. Your policy uses all of them, and the hook covers the most ground, seeing every call an agent attempts in a supported client.

Before you pick tools, map each clause of your policy to the enforcement point that can see it. Any clause with no point that sees it isn't enforced yet.

How to write MCP tool-call rules that key on access and inputs

A tool's name tells you what its author intended, and the call's input tells you what it will do. We saw the difference in calls that looked like simple Retool MCP queries but were running arbitrary TypeScript against a read-write Salesforce connection. Most of those calls were reads, and a few were updates.

The rule that would have caught it says nothing about the tool's name: code-execution tools can't run against connections with write access to customer records. Enterprise MCP access control works when rules key on the conditions a call carries, such as the person or group behind the agent, the server and version, the connection's scope, the target's sensitivity, and the input pattern. A SQL verb like DELETE or a shell command that pipes data off the machine tells you more than any tool name does.

The credential behind a server and the text an agent has read matter as much as the action itself. Any ticket, email, or web page an agent reads can carry instructions it will try to follow, and a server running on a key that skips the database's own access controls lets those instructions reach any table. Add a tool that can write somewhere outside the company, and the data has a way out.

No single call in that chain breaks a permission, so the defense has to come from rules on the pieces you can see. Keep keys that skip the database's access controls away from MCP servers entirely, and send any write to a destination outside the company to a person before it runs.

Conditions like these let you tier rules the way good access programs already tier requests. Intercom runs most access requests as self-service under Lumos policies tailored by app and role, so low-risk requests are granted instantly and sensitive access goes to a lightweight approval. MCP rules should take the same shape, with reads on approved servers running by default and writes to sensitive targets waiting for a person.

Per-call rules have one known limit: they don't yet catch a sequence of ordinary calls that adds up to something dangerous, and we treat that as open research. Start anyway. Write your first five rules against scope and input before you write any against a tool name.

Why does an MCP policy depend on human access governance?

An MCP policy depends on human access governance because every tool call runs on somebody's access, and that access sets the ceiling for everything the policy allows. An agent in an employee’s session inherits that person’s entitlements, including the admin role granted during an incident two quarters ago and never removed. AI agent identity governance starts there, because an MCP rule can only deny calls against access the policy knows is there.

That's why we tie every tool-call decision to the person behind the agent and the access that person holds. Anyone reviewing a production write can see what that person can reach, including grants nobody has reviewed in a year. And because the agent runs on the person's access, a mover's agent loses reach the day the mover's old access is removed, without anyone editing an MCP rule. The floor under your MCP policy is the human access program you already run.

GitLab shows what raising that floor looks like. With Lumos, it removed unneeded admin access and set up just-in-time access for critical entitlements, and Erik Lentz, Senior Manager of Security Engineering, describes the aim as structure that lets security "get out of the way." Every admin role removed from a person is one no agent can exercise.

Right-sizing the people agents borrow from is where AI agent access management starts, and it pays off before a single MCP rule exists. Pull the standing admin roles held by the 20 people who make the most agent tool calls, and cut the ones nobody has used in 90 days. Every MCP rule you write afterward starts from a smaller blast radius.

Roll out MCP guardrails in observe-then-enforce order

Write the first draft of your MCP policy from two weeks of real tool calls. Templates guess at what agents do, while call history shows which servers people use, which tools write, and where the surprises are. The surprises are the reason to wait before blocking anything.

Policies in Lumos default to allow, so every MCP server and tool call shows up as people work, approved or not. Albus, the AI agent inside Lumos, reads that history to answer which servers teams use, which calls carry the most risk, and what caused yesterday's spike. Describe a rule in plain language and Albus drafts the policy, using the conditions it has already seen in your environment.

Spend the first two weeks observing calls and building the server inventory from what shows up, including servers nobody requested. In week three, assign an owner and a tier to each server you found. In week four, run the first rules in log-only mode and read what they would have blocked.

From week five, turn on MCP guardrails one rule at a time, each after the server's owner has read a week of its log-only results. Three patterns in the call history deserve rules first: code-execution tools on connections that can write, servers that show up on one or two laptops and nowhere else, and calls whose arguments touch production hostnames or customer tables. Each comes with evidence from your own environment, which makes the rule easier to defend to the team it affects.

Set an end date for the observation window before you turn anything on. Two weeks covers most daily work, so if agents run jobs only at month-end or quarter-end, stretch the window to include the next close. Without an end date, observe mode quietly becomes the permanent mode.

A ten-clause MCP governance framework you can adapt

Here's the policy, clause by clause, with who owns each one and how you'll prove it ran. It's written as an MCP governance policy for enterprise teams that already run agents in production, and it fits on one page. Treat it as a working draft, and keep all ten clauses even where your answer is short.

1. Scope covers every tool call an agent makes

Write the scope around what agents do on company access, since that's what the rest of the policy has to govern. A scope that names only MCP servers leaves out the shell commands, file edits, and browser actions an agent takes in the same session, and those reach the same data. List the agent clients in use, the devices they run on, and any cloud agents acting for a person, then confirm your enforcement point can see each one.

2. Ownership puts a named owner on every server

Ownership is the clause the others depend on, because each one needs a person to sign it. Gartner's Aaron Lord says software engineering leaders will need to "establish domain-oriented ownership for MCP servers," and the April 2026 Gartner release adds that domain experts should set their guardrails before MCP clients reach their data. In practice, the team that owns the CRM owns the rules for every server that touches it, and security owns the baseline those rules sit on. A server with no named owner shouldn’t make it past the experimental tier, for the same reason service account security starts with an owner for every account.

3. Server tiers decide how far each server is trusted

Four tiers give each server a clear level of trust: approved, approved with conditions such as named groups or read-only access, experimental with no production credentials and a 30-day expiry, and blocked. Conditional approval is the tier that does the most work, because it lets you say yes to a risky server for one team or for reads only.

Pinning versions matters because an MCP server can change after you approve it. Local servers usually install from public package registries, and a new release can add a tool, rewrite a tool description the model reads as instructions, or start sending data somewhere new while the server's name stays the same. An allowlist that approves the name without pinning a version approves every future release sight unseen, so treat each new version as a fresh request for the domain owner to review. Pinning works best alongside two other MCP security best practices: running local servers in a sandbox and reviewing every change to their config files.

4. Credentials stay scoped to the task and the server

Shared, superuser, and service-role keys behind MCP servers turn one hijacked agent session into broad access, so the policy bans them along with secrets pasted into config files. Each server should also accept only tokens issued for that server, so nobody can hand it a broad token minted for another app and let it act with that reach downstream. When a task needs a wider scope, request it at that moment and let the grant expire with the task. Putting both rules in writing gives platform teams something to cite when someone wants to reuse a broad token for convenience.

5. Tool-call rules set the defaults and the hard stops

Reads on approved servers run by default, and a short list of hard stops, such as code running against a connection that can write customer records, is denied unless someone approves it. Most of the judgment sits between those two: calls that aren't safe to run unattended but aren't worth blocking outright. Route those by how reversible the action is and how far it reaches, using the approval routing for AI agents we've laid out separately. Each rule should name the conditions it keys on, such as person, connection scope, target, and input, so its owner can read it and know what it stops.

6. Exceptions expire on their own

Whether engineers stay inside the policy at all comes down to exceptions. Marqeta built exceptions into its Lumos inactivity workflows because, as its Head of Identity Security puts it, "exceptions are very important" in real-world IT, and you can't pull access from key stakeholders without warning. An MCP exception works the same way: the domain owner approves it, logs it, and sets the date it ends. When that date arrives, the exception closes without anyone having to remember it.

7. Logging records decisions and leaves conversations out

The logging clause takes a position on privacy. Record the server, tool, person, time, verdict, and policy version for each call, plus arguments where your privacy team allows them. Lumos MCP Governance stores the server, the tool, who called it, the time, and the verdict, keeps call arguments by default with a setting to turn that off, and never stores prompts, model responses, or tool results. A decision log answers the auditor's question without building a new store of sensitive conversation data.

8. Fail mode settles what happens when the check can't run

Fail mode is the clause most policies skip. Failing open keeps work moving when the policy check can't run and leans on the log for review afterward, while failing closed protects a category at the cost of blocked work. Decide it per tier, since an experimental server and a payments integration shouldn't get the same answer.

Back your highest-risk categories at the credential layer from clause 4, so an outage at one enforcement point doesn't leave them open. A payments write that needs a short-lived token nobody holds by default stays closed even when the policy check is down.

9. Lifecycle moves agent access with the person

AI agent lifecycle management should run on the same joiner, mover, and leaver events as the person behind each agent. New hires get the approved catalog on day one, movers get their rules re-evaluated against the new role, and leavers lose agent tokens and MCP connections the same day their accounts close. Turning off single sign-on doesn't always revoke the OAuth tokens an agent holds, so the leaver workflow has to reach those tokens directly.

10. Review keeps the catalog and rules current

Review the catalog and the rules every quarter, starting with new servers and versions, rules that were added or loosened, and exceptions still open past their dates. Reviewing individual tool calls doesn't scale, so the review covers the rules and approvals that decided them. An incident that involves an agent triggers a re-review of the servers and rules it touched right away, without waiting for the quarter. Security and GRC sign off together, which gives the auditor one record for the cycle.

How do you stop shadow MCP servers?

You stop shadow MCP servers by making the approved path faster than a local install, which takes about a minute. An approval process that takes a week will lose every time, because people route around slow processes and agents make routing around them easy. Shadow MCP grows wherever the sanctioned path is the slow one.

Chegg learned the same lesson with app access. After rolling out Lumos self-service in Slack, with approvals delegated to managers and every request in audit logs, it cut time to resolution 99.6%, and adoption spread with almost no change management. As the team puts it, "people organically find the fastest path to get access."

Your policy can make its own path the fastest one. The experimental tier in clause 3 gives engineers a sanctioned place to try a server without production credentials, and an unapproved local server that shows up in your call history should prompt a request from the engineer running it. Publish a service level for the rest, such as a same-day decision on approved-with-conditions requests.

Call history speeds up the decision itself: if the reviewer pulls the server's recent calls before deciding, they can see which tools the engineer used and against what, then approve a read-only or group-scoped version in minutes. Set a target time to decision for server requests and publish it next to the policy. Then measure it, because the number engineers remember is the slowest approval they ever waited for.

What MCP audit evidence will auditors ask for?

Your auditor will ask three things about the MCP policy: who approved it, what changed, and whether it ran. The evidence for each is specific. You'll need policy versions with approvers and dates, server approval records per version, a decision log with the person and verdict on every call, the exception register with expiry dates, and quarterly review sign-offs.

That evidence holds up best next to the human access evidence your auditors already trust. In Lumos, agent activity sits in the same platform as access reviews, just-in-time access, and offboarding, so people, machines, and agents share one audit trail. Prosper shows why one place matters: it centralized compliance for all its apps with Lumos and completed access reviews in record time.

MCP audit logging covers only half the record. The other half is the policy's own history, because an auditor who sees a rule change in March will ask who approved it and what the log looked like before and after. Expect a sample request, too: an auditor will pick a handful of calls from the quarter and trace each one from the person behind it to the rule that decided it. Keep a dated history of each policy version next to the log, or record the version on each entry, so that trace has an answer.

Add the MCP server catalog and the rule set to the scope of your next quarterly access reviews. Reviewers should see only what changed since the last cycle, which keeps the review short enough to be a real one.

MCP governance has to run at the speed of every tool call

Auditors will read your MCP policy, and so will the engineers who have to live with it, but your agents never will. An agent meets the policy in one place only: the decision made in the milliseconds before it calls a tool, judged against the access of the person who set it running. Every clause in the policy, from server tiers to exceptions, matters to an agent only if something enforces it at that moment. A quarterly review still keeps the catalog and the rules honest, but an agent can make hundreds of calls in an afternoon, so the check on each one has to move as fast as the calls do.

So start where the agents already are. Turn on observation this week, and let two weeks of real tool calls show you which servers, write paths, and laptop installs your teams depend on. Publish the ten clauses next month with an owner on each, then turn on enforcement one rule at a time, starting with the calls that would be hardest to undo. A policy your agents can't read has to be one they can't skip, and every rule you switch on closes one more path around it.

Lumos MCP Governance gives you that decision point in a single install, with no gateway to route traffic through and no MCP server to reconnect. Each check targets under 50 milliseconds, covers MCP calls, shell commands, and file edits, and ties every call to the person behind it and the access that person holds in Lumos. You can watch the servers and tool calls across your teams first, then turn on blocking only where the call history shows you need it. Book a demo to see what your agents are calling today and which of those calls your policy would stop.

‍

See how our non-human identity security works

Request a demo to see how Lumos can help you discover non-human identities, assign owners, and reduce excessive access across your cloud and SaaS environments.

Request a demo →

FAQ

What should an MCP governance policy for enterprise teams include?

It should include ten clauses: scope, ownership, server tiers, credentials, tool-call rules, exceptions, logging, fail mode, lifecycle, and review. Each clause needs a named owner, an enforcement point that can see the activity it governs, and evidence an auditor can check. The ten-clause table above is a starting draft you can edit for your own environment.

Do you need an MCP gateway to enforce an MCP governance policy?

A gateway helps, but it can't enforce the whole policy alone. An MCP gateway enforces rules on remote traffic routed through it, and it can't see locally run servers, shell commands, file edits, or browser sessions. The policy also needs a decision point inside the agent's runtime, where every call can be checked against the same rules.

How do you govern MCP servers that employees install locally?

Discover them at the client, where the agent makes the call, since no vendor API can list a server that runs on a laptop. Put each one in the experimental tier with no production credentials and an expiry date. If the team still needs it when the tier expires, route it through the server approval process like any other request.

What should MCP audit logs record?

MCP audit logs should record the server, tool, person behind the agent, time, verdict, and policy version for every call, plus call arguments where privacy rules allow. Add approvals and exceptions with their expiry dates. Leave prompts, model responses, and tool results out, since a decision log answers the auditor's question without creating a new store of sensitive data.

How does MCP governance relate to non-human identity governance?

Non-human identity governance covers the identities and credentials agents use, such as service accounts, API keys, and tokens. MCP governance covers the calls agents make with that access. The two belong in one program and one audit trail, because an agent's call is only as safe as the non-human identity and human access behind it.

‍

Get Started

Don't let any identity become your next breach.

Govern every human, machine, and AI in your business with a free identity assessment today.

Book a Demo