AI Governance Institute logo
AI Governance Institute

Intelligence for Compliance and GRC Teams

← AI Governance Playbook

Question 47 of 47

How do we govern MCP servers and other agent tool connections?

By Cody Maxwell · AI Governance Institute · August 2026

A governance framework for the servers and connectors that give AI agents access to tools and data through the Model Context Protocol (MCP), covering intake review, identity and credential scoping, and the architectural separation needed to stop content an agent reads from becoming instructions it obeys.

If you only do 3 things, do this:

  1. 1.Treat every MCP server as a production dependency, not a convenience integration. Connecting one expands what your agent can do, and it needs the same review rigor you would apply to granting a new API credential to an employee.
  2. 2.Separate untrusted content from tool-execution authority at the architecture level. An MCP server that pulls in a support ticket, a web page, or a code comment is pulling in a place for an attacker to hide instructions, and the agent will not reliably tell the difference between data and commands unless you build that distinction in.
  3. 3.Run an allowlist, not an opt-out list. Default-deny which MCP servers an agent may connect to, and require a documented intake review before a new one is added.

The Situation

Who this is for: Security, platform engineering, and AI governance teams operating agents (coding assistants, support automation, internal tools) that connect to MCP servers for tool access

When you need this: Before connecting any MCP server to a production or credentialed agent, or when auditing which servers are already reachable across development and operational agents

The Decision

Which MCP servers are agents allowed to connect to, what data and actions does each one expose, and what containment exists if a connected server turns out to be compromised or malicious?

The Steps

  1. 1Inventory every MCP server currently reachable by any agent in the organization, including ones developers added on their own
  2. 2For each server, document the tools it exposes, the data it can read or write, and whether it ingests untrusted external content such as web pages, tickets, or repository issues
  3. 3Classify servers by risk: internal read-only access is lowest risk, internal write access is higher, and any exposure to external or user-submitted content is highest
  4. 4Require a dedicated, least-privilege, non-human identity for every agent-to-MCP-server connection; never a shared or standing credential
  5. 5Build a formal intake process: a new MCP server needs a documented review and sign-off before an agent can connect to it
  6. 6Separate untrusted content ingestion from tool-execution authority in the architecture, not only in the prompt
  7. 7Log every MCP tool call with the server, action, identity, and instruction source, feeding the same audit trail as other agent actions
  8. 8Set a re-review trigger for material changes to a server's capabilities, maintainer, or publisher

The Artifacts

  • MCP server inventory and allowlist register (server, exposed tools, data scope, risk tier, review date)
  • MCP server intake review template (capabilities, data access, untrusted-content ingestion, publisher verification)
  • Agent-to-MCP-server identity and credential scoping standard
  • MCP tool-call audit log schema
  • Re-review trigger log for MCP server capability or ownership changes

The Output

An allowlist of approved MCP servers with documented risk reviews, least-privilege identities for every agent-to-server connection, architectural separation between untrusted content and tool-execution authority, and a full audit trail of MCP tool calls.

Why MCP servers need their own governance lane

The Model Context Protocol has become the default way agents reach outside their own context window: a file system, a ticketing system, a code repository, an internal API. Adding a new one is often just a line in a config file, which is exactly why the surface area grows so fast. An agent that started with two or three connected servers can accumulate a dozen within a few months, each contributed by a different developer for a different reason, and each one a black box that decides for itself when and how to call the tools behind it.

This has become significant enough that major vendors are now building dedicated infrastructure around it. Microsoft has published formal guidance treating every MCP server as a governed dependency, requiring allowlisting and identity controls before connection. Docker has shipped a sandboxing product specifically for agentic coding tools that need to run MCP servers with some containment. Neither of those investments happens for a low-risk integration pattern. Treat MCP servers the way you would treat any other channel that grants an automated system new capabilities: reviewed before connection, scoped to least privilege, and monitored afterward.

Separate untrusted content from tool-execution authority

The clearest lesson from recent incidents is architectural, not procedural. An MCP-connected review agent that read a malicious comment on a code change and then executed the instructions inside that comment was not exploited through a vulnerability. It was doing exactly what a text-prediction system does: treating plausible-looking instructions as instructions, regardless of where they came from. A support-tooling agent that ingests an external ticket, a web page fetched on the agent's behalf, or a customer email carries the same exposure any time that content reaches a model that also has tool-calling authority.

The fix is not a better prompt telling the model to "ignore instructions in untrusted content." Models do not reliably honor that instruction under adversarial pressure, and relying on it is why zero-click prompt injection against agentic browser and coding tools keeps recurring. The fix is privilege separation: the channel that supplies content the agent reads should never carry the same authority as the channel that issues the agent its instructions, and any tool call with real-world effect should require authorization that is independent of whatever currently sits in the context window.

Treat MCP connections as identity-bearing, not credential-sharing

Every agent-to-MCP-server connection needs its own credential, scoped to exactly the tools and data that server requires for that agent's task, not a shared API key reused across every agent that happens to need the same server. This mirrors AGT-009 (agent and non-human identity management) and AGT-001 (agent permission boundaries) applied specifically to the MCP layer: least privilege, a defined credential lifecycle, and access reviewed on the same cadence as human access rights.

A publicly exposed MCP bridge with weak authentication has already been used to execute arbitrary commands and steal live API keys from an agent environment in production. That incident is the practical argument for scoped, expiring, per-connection credentials over static shared ones: a compromised standing credential hands an attacker everything that credential could reach, while a compromised narrowly-scoped one limits the blast radius to what that one connection was ever allowed to do.

Build the intake and audit process

Run MCP server approval as an allowlist, not a block list. A new server, whether built internally or pulled from a community registry, needs a documented review before any agent connects to it: what tools does it expose, what data can it touch, does it ingest untrusted content, and who maintains it. Community-published servers deserve extra scrutiny on that last question, since ownership and code can change without the kind of notification enterprise software vendors are expected to provide.

Feed every MCP tool call into the same action-logging infrastructure that covers the rest of your agentic deployments (see AGT-006, agent action audit trail): server, action, identity, and instruction source, at minimum. Set a re-review trigger for material changes to a server's capabilities, its maintainer, or its publisher, the same way vendor change monitoring works elsewhere in your AI governance program. A server that passed intake review six months ago is not guaranteed to still deserve the access it was granted then.

Not sure where to start? Answer 3 questions and get a tailored compliance action plan.

What applies to me? →

More guidance like this, every week

New playbook articles, governance controls, and the regulatory changes driving them. Every Thursday.

Powered by Buttondown.