> ## Documentation Index
> Fetch the complete documentation index at: https://docs.2extract.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Claude Desktop

> Connect the 2extract MCP server to the Claude desktop app by editing its configuration file.

Claude Desktop reads its MCP servers from a JSON file on disk. Edit it, restart the app, and the tools appear.

***

## Where the config lives

| Platform | Path                                                              |
| :------- | :---------------------------------------------------------------- |
| macOS    | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Windows  | `%APPDATA%\Claude\claude_desktop_config.json`                     |

You can also open it from the app: **Settings** → **Developer** → **Edit Config**.

If the file does not exist yet, create it with the contents below.

***

## Add the server

```json claude_desktop_config.json icon="brackets-curly" theme={null}
{
  "mcpServers": {
    "2extract": {
      "type": "http",
      "url": "https://mcp.2extract.com/mcp",
      "headers": {
        "Authorization": "Bearer 2xt_YOUR_API_KEY"
      }
    }
  }
}
```

If you already have other servers, add `2extract` as another key inside the existing `mcpServers` object rather than replacing it.

<Warning>
  **Restart Claude Desktop completely.** Closing the window is not enough on macOS - quit the app from the menu bar or with `Cmd+Q`. A new conversation in a running app will not pick up config changes.
</Warning>

***

## Verify

Open a new conversation and ask:

> What is my 2extract balance?

<Check>
  Claude asks permission to use a 2extract tool, then reports your balance.
</Check>

You can also check the tools icon in the message composer - `2extract` should be listed with its tools.

***

## Older versions

Some builds of Claude Desktop only launch local servers over stdio and ignore `type: "http"`. If your version does nothing with the config above, bridge to the remote server with `mcp-remote`:

```json claude_desktop_config.json icon="brackets-curly" theme={null}
{
  "mcpServers": {
    "2extract": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.2extract.com/mcp",
        "--header",
        "Authorization: Bearer 2xt_YOUR_API_KEY"
      ]
    }
  }
}
```

This needs Node.js on your machine. Prefer the direct HTTP form when your version supports it - it is faster and has no dependency.

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="No 2extract tools after editing the config">
    In order of likelihood:

    1. The app was not fully restarted. Quit it, do not just close the window.
    2. The JSON is malformed - a trailing comma or a missing brace. Paste it into any JSON validator; the app fails silently on syntax errors.
    3. The file is in the wrong place. Use **Settings** → **Developer** → **Edit Config** to open the one the app actually reads.
  </Accordion>

  <Accordion title="Tools appear but every call is unauthorized">
    Check the `Authorization` value. It must be the word `Bearer`, one space, then the key - `Bearer 2xt_...`. A stray newline from copy-pasting will also break it.
  </Accordion>

  <Accordion title="Claude asks permission on every single call">
    That is the app's own approval flow, not something the server controls. You can allow a tool for the rest of the conversation in the permission dialog.
  </Accordion>
</AccordionGroup>

***

## Next steps

<CardGroup cols={2}>
  <Card title="Prompts" icon="list-check" href="/ai/mcp-server/prompts">
    Guided workflows, available as slash commands.
  </Card>

  <Card title="Usage Examples" icon="terminal" href="/ai/mcp-server/usage-examples">
    Sessions from request to connection string.
  </Card>
</CardGroup>
