MCP Governance¶
A security team needs to know every MCP server the agent fleet depends on, pin versions, scan results for prompt injection, and quarantine anything suspicious — without touching the SDKs each team uses.
Symptoms¶
- A new MCP server adopted by one team is silently picked up by three others.
- An MCP server publishes a schema change overnight; agents start failing in unexpected ways.
- A tool result returns attacker-controlled text that the agent treats as instructions.
- An incident requires answering "which agents talked to this server in the last 24 hours" within minutes.
What Joch does¶
The MCP Gateway registers, pins, scans, and proxies every MCP server. Each interaction emits AOS hooks (protocols/MCP outbound and inbound) and trace events.
Walkthrough¶
1. Register a server¶
joch mcp add github --endpoint https://mcp.example.com/github --auth oauth2
joch mcp pin github --to 1.2.0
The corresponding MCPServer record carries discovery, pinning, sandboxing, and policy settings.
2. Inspect capabilities¶
The discovery output lists tools, resources, and prompts the server exposes, along with the trust score and any schema drift.
3. Apply policies¶
apiVersion: joch.dev/v1alpha1
kind: Policy
metadata:
name: mcp-tool-safety
spec:
appliesTo:
agents: { selector: { matchLabels: { env: prod } } }
rules:
- when:
mcpServer.trustScore: "<0.75"
action: { deny: true, reason: trust-score-too-low }
- when:
mcpServer.schemaDrift: true
action: { deny: true, reason: schema-drift-detected }
- when:
mcpResult.injectionScan.hit: true
action: { modify: redact, reason: prompt-injection-stripped }
4. Quarantine and investigate¶
joch mcp quarantine suspicious-server --reason "schema drift detected at 03:14"
joch get toolcalls --mcpserver suspicious-server --since 24h
joch trace exec-20260510-001
joch denials ls --policy mcp-tool-safety --since 24h
A quarantined server is taken out of rotation immediately, fleet-wide. The trace history reconstructs every interaction.
5. Audit the dependency graph¶
AgBOM diffs make MCP changes auditable: which version was pinned, when, by whom, with what trust score.
Resources involved¶
Outcome¶
The security team operates a single MCP control plane: registry, version pinning, scanning, sandboxing, drift detection, and quarantine. Application teams continue to use their SDKs unchanged; the gateway is invisible to them until a policy denies or modifies a request.