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, ...)
- Your client calls a tool. The gateway checks the token it's carrying.
- The gateway asks the Authorization Server whether this token, this scope, and this resource are allowed right now.
- 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)