MCP Interceptor · node9 documentation

MCP Interceptor

JSON-RPC 2.0 adapter for Cursor, Windsurf, and any MCP-compatible IDE.

What is the MCP Interceptor?
The MCP Interceptor is a JSON-RPC 2.0 endpoint that sits between your IDE and any MCP server. Instead of your IDE calling the MCP server directly, it calls Node9 first. Node9 evaluates your policies and either approves the call (forwarding it on), blocks it, or suspends it for human approval — all in real time.
1Configure your IDE
In Cursor or Windsurf, set the Interactivity Request URL to your Node9 endpoint:
https://api.node9.ai/intercept/mcp
For local development:
http://localhost:4000/intercept/mcp
2Authenticate
Pass your Node9 API key as a Bearer token in the Authorization header. The IDE handles this automatically once you add your key to its MCP settings:
Authorization: Bearer n9_live_your_api_key_here
3Request format
The interceptor speaks standard JSON-RPC 2.0. Your IDE sends:
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "bash",
    "arguments": { "command": "rm -rf /tmp/build" }
  }
}
4Response format
Node9 responds with one of three outcomes:
// Approved — forward the call to the MCP server
{ "jsonrpc": "2.0", "id": 1, "result": { "approved": true } }

// Blocked — do not execute
{ "jsonrpc": "2.0", "id": 1,
  "error": { "code": -32001, "message": "Action blocked by Node9 policy" } }

// Pending — awaiting human approval via Slack/dashboard
{ "jsonrpc": "2.0", "id": 1,
  "result": { "approved": false, "pending": true, "requestId": "req_abc123" } }
Pass-through for non-tool methods
Non-tool-call methods (initialize, ping, notifications/*) are passed through automatically with { "approved": true }. Node9 only evaluates actual tools/call invocations.
Polling for pending decisions
When a request is pending, the IDE should poll GET /intercept/status/:requestId until the status changes to APPROVED or DENIED. The node9-proxy handles this automatically.
Supported IDEs
  • Cursor — set Node9 as the Interactivity Request URL in MCP server settings
  • Windsurf — same configuration under MCP integrations
  • Any MCP-compatible host — the endpoint is standard JSON-RPC 2.0