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

# MCP clients

> Configure Claude, Cursor, and Codex to use the Chief MCP server.

First install the `chief-mcp` binary — see
[MCP server → Install](/mcp/overview#install).

The quickest way to configure a client is the [`chief` CLI](/tools/cli/overview)
(install it too), which fills in the installed binary path and your credentials:

```bash theme={null}
chief mcp config claude   # Claude Code / Claude Desktop
chief mcp config cursor   # Cursor
chief mcp config codex    # Codex
```

It prints where each client expects the snippet:

* **[Claude Code](https://docs.claude.com/en/docs/claude-code/overview)** —
  `.mcp.json` (project) or `~/.claude.json` (user), or run
  `claude mcp add chief -- chief-mcp stdio`
* **[Cursor](https://cursor.com)** — `.cursor/mcp.json` (project) or
  `~/.cursor/mcp.json` (global)
* **[Codex](https://github.com/openai/codex)** — `~/.codex/config.toml` (emitted
  as TOML)

No `chief` CLI? Every snippet below also works pasted in by hand — you only need
the `chief-mcp` binary.

To configure a client by hand, use the snippets below. Replace `<api-key>` and
`<project-id>` with your values.

## Stdio transport

Use stdio when the agent runs the server locally as a subprocess.

<Tabs>
  <Tab title="Claude Code">
    ```bash theme={null}
    claude mcp add chief \
      -e CHIEF_API_KEY=<api-key> \
      -e CHIEF_PROJECT_ID=<project-id> \
      -- chief-mcp stdio
    ```
  </Tab>

  <Tab title="Claude Desktop">
    Open **Settings → Developer → Edit Config** and add:

    ```json theme={null}
    {
      "mcpServers": {
        "chief": {
          "command": "chief-mcp",
          "args": ["stdio"],
          "env": {
            "CHIEF_API_KEY": "<api-key>",
            "CHIEF_PROJECT_ID": "<project-id>"
          }
        }
      }
    }
    ```
  </Tab>

  <Tab title="Cursor">
    Open the command palette → **Cursor Settings → MCP → Add new global MCP
    server**, then add:

    ```json theme={null}
    {
      "mcpServers": {
        "chief": {
          "command": "chief-mcp",
          "args": ["stdio"],
          "env": {
            "CHIEF_API_KEY": "<api-key>",
            "CHIEF_PROJECT_ID": "<project-id>"
          }
        }
      }
    }
    ```
  </Tab>

  <Tab title="Codex">
    Add to `~/.codex/config.toml`:

    ```toml theme={null}
    [mcp_servers.chief]
    command = "chief-mcp"
    args = ["stdio"]
    env = { CHIEF_API_KEY = "<api-key>", CHIEF_PROJECT_ID = "<project-id>" }
    ```
  </Tab>

  <Tab title="VS Code">
    Create `.vscode/mcp.json` in your workspace (or add it to your user settings):

    ```json theme={null}
    {
      "servers": {
        "chief": {
          "type": "stdio",
          "command": "chief-mcp",
          "args": ["stdio"],
          "env": {
            "CHIEF_API_KEY": "<api-key>",
            "CHIEF_PROJECT_ID": "<project-id>"
          }
        }
      }
    }
    ```
  </Tab>
</Tabs>

Windsurf and other clients that read an `mcpServers` block use the same snippet
as Cursor.

## HTTP transport

Use HTTP for remote or web-based integrations. Start the server, then point the
client at its endpoint with credentials in the request headers.

```bash theme={null}
chief-mcp http --addr :8080 --path /mcp
```

The server listens on `http://localhost:8080` and exposes the MCP endpoint at
`/mcp` using Streamable HTTP.

<Tabs>
  <Tab title="Claude Code">
    ```bash theme={null}
    claude mcp add chief --transport http http://localhost:8080/mcp \
      --header "Authorization: Bearer <api-key>" \
      --header "X-Project-Id: <project-id>"
    ```
  </Tab>

  <Tab title="Cursor">
    ```json theme={null}
    {
      "mcpServers": {
        "chief": {
          "url": "http://localhost:8080/mcp",
          "headers": {
            "Authorization": "Bearer <api-key>",
            "X-Project-Id": "<project-id>"
          }
        }
      }
    }
    ```
  </Tab>
</Tabs>

## Verify the connection

After configuring a client, restart its session — MCP servers are long-lived
stdio processes that don't hot-reload.

<Frame caption="In Claude Code, /mcp shows the Chief server connected with all 44 tools.">
  <img src="https://mintcdn.com/chief-2d405d1a/QGBlzHNeqRlizFjv/images/demos/agent-mcp-connected.png?fit=max&auto=format&n=QGBlzHNeqRlizFjv&q=85&s=e057ed86faf0bbfb6de951baa2fe6cdb" alt="Claude Code's /mcp panel showing the chief server connected with 44 tools" width="2000" height="870" data-path="images/demos/agent-mcp-connected.png" />
</Frame>

Then ask the agent to list its tools, or
test the server directly with the
[MCP Inspector](https://github.com/modelcontextprotocol/inspector) (requires
[Node.js](https://nodejs.org)):

```bash theme={null}
npx @modelcontextprotocol/inspector chief-mcp stdio
```

Click **Connect**, then **List tools** to confirm the server responds.
