Secure your MCP servers
Put Intertrace in front of MCP servers — every tools/call is authorized at decision time; untrusted servers and dangerous tools are blocked before they execute.
What MCP guard is
MCP guard is Intertrace's enforcement layer for Model Context Protocol traffic. When you route MCP through Intertrace, the Go enforcer sidecar evaluates every tool call against your org policy before it reaches the upstream MCP server. In enforce mode, a denied call short-circuits with HTTP 403 — no bytes leave Intertrace toward the upstream. In monitor mode, the same call is allowed through but flagged for review.
Policy state lives in Supabase (mcp_servers.trust_tier, mcp_servers.metadata.blocked_tools, mcp_tools.status and mcp_tools.approved_schema_hash) and is pulled into the enforcer via the agent-context endpoint with a ~5 s cache. The production edge is the Fly agentgateway at https://intertrace.fly.dev.
Three ways to connect
- 1
Route MCP through the Intertrace edge (Fly /mcp)
This is the product path. Point MCP clients at
https://intertrace.fly.dev/mcpwith a runtime key and a server key. Cursor and Claude Desktop use a remote MCP entry inmcp.json. Full connect instructions and snippets: MCP servers and MCP console.{ "mcpServers": { "intertrace-secured": { "url": "https://intertrace.fly.dev/mcp", "headers": { "Authorization": "Bearer itr_rt_YOUR_RUNTIME_KEY", "X-Intertrace-MCP-Server": "YOUR_SERVER_KEY" } } } } - 2
Runtime SDK for agents
If your agent already uses the Intertrace Runtime SDK (
@intertrace-runtime/runtimeon npm), wrap each tool withprotectToolso authorize and an execution permit run before the tool body. Blocked (BLOCK) and approval-required (REQUIRE_APPROVAL) throw typed errors without running the executor. Enforce mode is fail-closed.This path is for agents that call tools in-process — not for MCP clients that speak the MCP wire protocol. If your agent talks to MCP servers over the wire, use path 1. SDKs.
- 3
stdio shim (legacy compatibility)
For local MCP hosts that only launch a stdio process (older Claude Desktop or Cursor configs), the
mcp-stdioshim bridges stdin/stdout to the wire proxy over HTTPS.
Trust tiers
Intertrace classifies every MCP server into one of three trust tiers. Set the tier on each server row in Dashboard → MCP → Servers.
| Tier | Production behavior |
|---|---|
trusted | No extra MCP-specific policy hit. Tools are allowed unless a separate org rule blocks them. |
restricted | Tools in metadata.blocked_tools are blocked (enforce) or reviewed (monitor). An empty blocklist still elevates to review in production. |
untrusted | Block in enforce mode, review in monitor mode. Use for new or unvetted servers. |
Schema pinning and drift detection
When you run Sync tools/list on a server, Intertrace pulls the upstream capability map into the mcp_tools table and computes a stable hash (sha256:canonical-json:v1) over each tool's name, description, and inputSchema.
Approve (or Approve all) pins approved_schema_hashfor each tool. On the next sync, if the upstream tool's hash changes, the status becomes drifted — a rug-pull or silent tool-swap signal.
Tool statuses: observed → approved → drifted / blocked / absent.
Blocking specific dangerous tools
Two mechanisms, used together:
- Per-server blocklist — add tool names to
metadata.blocked_toolson the MCP server row. Set the trust tier torestrictedso the blocklist is enforced. - Org rules — Dashboard → MCP → Rules. Maintain an org-level allowlist and blocklist. Start in Monitor (flag, never deny), then switch to Enforce when you are ready to block unknowns.
Verify a blocked call
After connecting, send a tools/call that should be blocked (a tool in your blocklist, or a call to an untrusted server in enforce mode). The response should be HTTP 403. Check Events for the allow / flag / block outcome on Fly /mcp.