Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.igrisecurity.com/llms.txt

Use this file to discover all available pages before exploring further.

MCP Client Config

The SDK’s connectHttp() generates a URL + headers that work with any MCP client supporting HTTP transport.

SDK Usage (Programmatic)

For apps that create MCP connections dynamically:
import { Igris } from "@igris-security/sdk";

const igris = new Igris({ apiKey: process.env.IGRIS_API_KEY! });

const config = igris.connectHttp("github-prod", {
  user: currentUser.email,
  metadata: { role: currentUser.role },
});

// config = { baseUrl, apiKey, headers }
// Pass baseUrl + headers to your MCP client, and add the Authorization header
// from config.apiKey:
const client = new McpClient({
  transport: new StreamableHttpTransport(config.baseUrl, {
    headers: {
      Authorization: `Bearer ${config.apiKey}`,
      ...config.headers,
    },
  }),
});

const tools = await client.listTools();
const result = await client.callTool("create_branch", { name: "feat/new" });
For direct, programmatic tool calls without wiring up an external MCP client, use the igris.mcp resourceinitialize, listTools, and callTool.

Claude Desktop

Add to your Claude Desktop config (~/.claude/claude_desktop_config.json):
{
  "mcpServers": {
    "github": {
      "url": "https://api.igrisecurity.com/v1/mcp/github-prod",
      "headers": {
        "Authorization": "Bearer ig_your_api_key",
        "X-Igris-User": "alice@company.com",
        "X-Igris-Metadata": "{\"role\":\"developer\"}"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project:
{
  "mcpServers": {
    "github": {
      "url": "https://api.igrisecurity.com/v1/mcp/github-prod",
      "headers": {
        "Authorization": "Bearer ig_your_api_key",
        "X-Igris-User": "alice@company.com",
        "X-Igris-Metadata": "{\"role\":\"developer\"}"
      }
    }
  }
}

Claude Code

Add to ~/.claude.json or .mcp.json:
{
  "mcpServers": {
    "github": {
      "type": "url",
      "url": "https://api.igrisecurity.com/v1/mcp/github-prod",
      "headers": {
        "Authorization": "Bearer ig_your_api_key",
        "X-Igris-User": "alice@company.com",
        "X-Igris-Metadata": "{\"role\":\"developer\"}"
      }
    }
  }
}

VS Code

Add to .vscode/mcp.json:
{
  "servers": {
    "github": {
      "type": "sse",
      "url": "https://api.igrisecurity.com/v1/mcp/github-prod",
      "headers": {
        "Authorization": "Bearer ig_your_api_key",
        "X-Igris-User": "alice@company.com",
        "X-Igris-Metadata": "{\"role\":\"developer\"}"
      }
    }
  }
}
X-Igris-User and X-Igris-Metadata are optional. They’re useful when you want per-user policy decisions and per-user audit attribution. The Authorization header is required.

Multiple Connections

You can use multiple connections — each points to a different upstream MCP server:
const github = igris.connectHttp("github-prod", { user: "alice" });
const slack = igris.connectHttp("slack-prod", { user: "alice" });
const notion = igris.connectHttp("notion-prod", { user: "alice" });
Each gets its own gateway URL, policies, and audit trail.

Self-Hosted

For self-hosted Igris deployments, set the baseUrl:
const igris = new Igris({
  apiKey: "ig_...",
  baseUrl: "https://igris.your-company.internal",
});
The gateway URL will use your domain: https://igris.your-company.internal/v1/mcp/github-prod