Skip to main content
Portkey MCP Gateway works with any MCP client. Connect your agents using a URL and API key.

Find your connection URL

Go to MCP in your workspace sidebar. Click on a server to see its connection details. Each server has a URL:
https://mcp.portkey.ai/{server-slug}/mcp
Copy this URL to use in your agent configuration.
For self-hosted deployments, replace mcp.portkey.ai with your gateway URL.

Claude Desktop

Add to your Claude Desktop config file. macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "linear": {
      "url": "https://mcp.portkey.ai/linear/mcp",
      "headers": {
        "x-portkey-api-key": "YOUR_PORTKEY_API_KEY"
      }
    }
  }
}
Restart Claude Desktop after saving. The tools appear in your conversation. If the server uses OAuth, Claude prompts you to authenticate when you first use a tool.

Cursor

Open Cmd/Ctrl + Shift + P > Cursor Settings: Open MCP Settings.
{
  "mcpServers": {
    "linear": {
      "url": "https://mcp.portkey.ai/linear/mcp",
      "headers": {
        "x-portkey-api-key": "YOUR_PORTKEY_API_KEY"
      }
    }
  }
}
The tools are available in Cursor’s agent mode.

VS Code

With GitHub Copilot and the MCP extension:
{
  "mcp.servers": {
    "linear": {
      "url": "https://mcp.portkey.ai/linear/mcp",
      "headers": {
        "x-portkey-api-key": "YOUR_PORTKEY_API_KEY"
      }
    }
  }
}

Python

pip install mcp
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

url = "https://mcp.portkey.ai/linear/mcp"
headers = {"x-portkey-api-key": "YOUR_PORTKEY_API_KEY"}

async with streamablehttp_client(url, headers=headers) as (read, write, _):
    async with ClientSession(read, write) as session:
        await session.initialize()
        
        # List tools
        tools = await session.list_tools()
        for tool in tools.tools:
            print(f"{tool.name}: {tool.description}")
        
        # Call a tool
        result = await session.call_tool(
            "create_issue",
            {"title": "Bug report", "priority": "high"}
        )
        print(result)

TypeScript

npm install @modelcontextprotocol/sdk
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://mcp.portkey.ai/linear/mcp"),
  {
    requestInit: {
      headers: { "x-portkey-api-key": "YOUR_PORTKEY_API_KEY" }
    }
  }
);

const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(transport);

const tools = await client.listTools();
console.log(tools);

const result = await client.callTool({
  name: "search_issues",
  arguments: { query: "bug" }
});
console.log(result);

API keys

Create API keys in Settings > API Keys. Keys are scoped to teams, so the key determines which MCP servers your agent can access.
When creating your workspace API key, ensure it has MCP Invoke permissions enabled.

Handling OAuth

If an MCP server uses OAuth for per-user authentication, users need to complete OAuth consent before using tools. The first time a user calls a tool, Portkey returns an error with an authorization URL. Redirect the user to complete OAuth. After consent, retry the request.
try:
    result = await session.call_tool("get_repos", {})
except Exception as e:
    if "authorization_url" in str(e):
        # Redirect user to authorize
        print(f"Please authorize: {authorization_url}")
After authorization, Portkey stores the user’s tokens and handles refresh automatically.

AI Gateway integration

If you use Portkey’s AI Gateway for LLM calls, MCP integrates automatically:
  • Unified dashboard for LLM and MCP activity
  • Traces span model calls and tool use
  • Single API key for both services
Last modified on February 13, 2026