> ## Documentation Index
> Fetch the complete documentation index at: https://developers.perform.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Install the Perform.AI MCP server

> Connect the Perform.AI MCP server to Claude, ChatGPT, Microsoft Copilot, or your own MCP client.

Everything below uses one URL:

```
https://mcp.perform.ai/mcp
```

<Warning>
  No trailing slash — use `.../mcp`, not `.../mcp/`.
</Warning>

Authentication is OAuth: on first connection your client opens a Perform.AI sign-in page — sign in with your Perform.AI username and password, or with **Sign in with Google**. You need a Perform.AI account belonging to at least one organization; after signing in, [select the organization](/mcp/overview#organization-scoping) the session should act on.

<Info>
  Directory listings for Claude and ChatGPT are under review — once approved, the connector becomes discoverable in-app and the manual steps below become optional. See [availability](/mcp/overview#availability).
</Info>

## Claude

**Claude (web, desktop, and mobile):**

1. Go to **Settings → Connectors** and select **Add custom connector**.
2. Name it `Perform.AI` and enter the server URL: `https://mcp.perform.ai/mcp`.
3. Select **Add**, then **Connect** — the Perform.AI sign-in opens; sign in and approve.
4. In a chat, enable the connector from the tools menu and try: *"Which carriers do we have configured?"*

**Claude Code (CLI):**

```bash theme={null}
claude mcp add --transport http perform-ai https://mcp.perform.ai/mcp
```

Then run `/mcp` inside a session to complete the sign-in.

## ChatGPT

Connectors require a ChatGPT plan with connector support (Plus, Pro, Team, or Enterprise; Team/Enterprise may need an admin to enable custom connectors).

1. Enable **Settings → Connectors → Advanced → Developer mode** (required for custom MCP connectors while our listing is under review).
2. Under **Settings → Connectors**, select **Create** / **Add custom connector**.
3. Name it `Perform.AI`, set the MCP server URL to `https://mcp.perform.ai/mcp`, and choose **OAuth** as the authentication method.
4. Save, then complete the Perform.AI sign-in when prompted.
5. In a conversation, add the connector via the composer's tools menu.

## Microsoft Copilot

A first-party Copilot listing is **planned**. Meanwhile, MCP-capable Microsoft surfaces can connect manually:

**Copilot Studio (custom agents):** add a new **Tool → Model Context Protocol**, set the server URL to `https://mcp.perform.ai/mcp` with OAuth authentication, and sign in with your Perform.AI account.

**VS Code (GitHub Copilot agent mode):** add to your `mcp.json`:

```json theme={null}
{
  "servers": {
    "perform-ai": {
      "type": "http",
      "url": "https://mcp.perform.ai/mcp"
    }
  }
}
```

VS Code handles the sign-in on first use.

## Clients without remote-server support

Some MCP clients only launch local servers and can't connect to a remote URL with OAuth directly. For those, the open-source `mcp-remote` bridge runs locally, handles the OAuth flow, and presents Perform.AI to the client as a local server.

Install it once (recommended, so first connection doesn't stall on a download):

```bash theme={null}
npm install -g mcp-remote
```

Then register it in the client's MCP configuration — for example in a `claude_desktop_config.json`-style file (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`; Windows: `%APPDATA%\Claude\claude_desktop_config.json`):

```json theme={null}
{
  "mcpServers": {
    "perform-ai": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.perform.ai/mcp"]
    }
  }
}
```

Save, then **fully restart the client** (quit — don't just close the window). The first tool call opens a browser window for the Perform.AI sign-in. Requires Node.js LTS (`node --version` to check).

## Custom applications

The server speaks standard MCP over **Streamable HTTP** with OAuth 2.1 — including metadata discovery and **dynamic client registration**, so a spec-compliant client needs no pre-registered credentials:

* Discovery: `https://mcp.perform.ai/.well-known/oauth-authorization-server`
* Grant types: `authorization_code` (with PKCE) and `refresh_token`

With the official MCP SDKs, point the client at the server URL and let the SDK's OAuth support drive the flow:

```typescript TypeScript theme={null}
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://mcp.perform.ai/mcp")
  // supply an OAuth client provider per the MCP SDK auth documentation
);
const client = new Client({ name: "your-app", version: "1.0.0" });
await client.connect(transport);
const tools = await client.listTools();
```

<Note>
  **Redirect URIs:** client registrations must use HTTPS redirect URIs (loopback URIs for desktop clients are always accepted). If your client redirects to a domain Perform.AI doesn't recognize, users see a consent screen naming the destination before the redirect proceeds — to allowlist your redirect domains, contact your Key Account Manager or [cs@perform.ai](mailto:cs@perform.ai). Claude Desktop and Claude Code users never see this screen.
</Note>

## Troubleshooting

| Symptom                                              | Fix                                                                                                              |
| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| The client can't connect at all                      | Confirm the URL is exactly `https://mcp.perform.ai/mcp` — with the `/mcp` path and **no trailing slash**.        |
| `401 invalid_token` when calling the server directly | Expected without a completed OAuth flow — connect through an MCP client rather than raw HTTP.                    |
| The sign-in window doesn't appear                    | Check pop-up blocking; with the `mcp-remote` bridge, fully quit and restart the client after editing the config. |
| Connected, but no data                               | Select an organization first, and note the server only ever shows what your own Perform.AI login can see.        |
