Skip to main content
Version: Latest

MCP Gateway

Every environment ships with a gateway — the thing your MCP clients (Claude Code, Cursor, and the rest) actually connect to. It sits in front of whatever resources you connected in Step 4 and enforces a policy decision on every tool call.

How it works, roughly

MCP client → gateway → PolicyArc policy decision → your backend (Drive, Jira, GitHub, ...)
  1. Your client calls a tool. The gateway checks the token it's carrying.
  2. The gateway asks the Authorization Server whether this token, this scope, and this resource are allowed right now.
  3. Allowed → the call goes through to the real backend and the result comes back. Denied → the client gets a clean rejection, not a broken connection.

Every call is logged — user, agent, tool, scope, decision — in the environment's Audit Log, whichever client made it.

One gateway URL per environment. Every client below points at the same URL and registers itself automatically on first use — there's no separate client secret to generate or hand out.

For the full request-flow and security-model detail (fail-closed behavior, discovery endpoints, per-user upstream credentials), see Gateway Overview and MCP Protocol Flows.

Pick your client

  • Claude Code — terminal-first, registered with claude mcp add
  • Claude Desktop — desktop app, JSON config file
  • Cursor — IDE, MCP settings UI
  • VS Code (with GitHub Copilot Chat) — command palette + MCP user config
  • OpenCode(instructions coming soon)