CAIN-42 CAIN Studio
CAIN-42 Academy

CMSE · Module 5 of 5 · 12 min

Running MCP behind a deciding boundary

Static scanning happens before deployment; attacks also happen at runtime through tool returns and manipulated arguments. A runtime boundary decides each call as it happens.

MCPGate sits on the path between agent and server: it checks identity, policy, risk and the capability token for every call, and records the decision. A refused call never reaches the server.

Operate it like any security control: alert on spikes of refusals, review held calls, and keep the evidence.

Key points

  • Scan before deploy; decide at runtime.
  • Every call: identity, policy, risk, token.
  • Refused calls never reach the server.
  • Watch refusal spikes.

In the CAIN-42 codebase

  • cain/mcp_proxy.py — the runtime boundary
  • cain/telemetry.py — SIEM export of decisions

Practice check

Practice 1 · true or false

“Static scanning alone covers runtime attacks through tool returns.”

Practice 2 · choose one

A refused MCP call…