---
title: "Claude Desktop"
description: "Connect via the mcp-remote bridge in claude_desktop_config.json (API-key auth)."
url: https://www.unitpost.com/guides/mcp/claude-desktop
section: MCP
updated: 2026-07-24
---
# Claude Desktop

## Connection settings

- **Server URL**: https://mcp.unitpost.com/mcp
- **Transport**: Streamable HTTP
- **Auth header**: Authorization: Bearer pk_live_YOUR_KEY (production key from www.unitpost.com)
- **Tools**: one per API operation (emails_send, campaigns_send, …)

## Claude Desktop

> Connect via the mcp-remote bridge in claude_desktop_config.json (API-key auth).

Claude Desktop's Add custom connector dialog (URL + OAuth only) cannot send a Bearer API key. Use the local mcp-remote bridge instead.

### 1. Create a production API key

Open https://www.unitpost.com → Settings → API keys → create a scoped key. Copy the full `pk_live_…` value (shown once). In every snippet below, replace `pk_live_YOUR_KEY` with that value.

> Must be production. Keys from unitpost.dev only work on the dev API. This MCP URL is production (`mcp.unitpost.com`) — a .dev key returns 401 Invalid API key on tool calls even if the server appears connected.

### 2. Open Edit Config

In Claude Desktop: Settings → Desktop app → Developer → Edit Config. That opens `claude_desktop_config.json`.

### 3. Paste mcpServers at the top level

Merge the block below into the file. `mcpServers` must be a top-level key (sibling of `preferences`), not nested inside `preferences`. Replace `pk_live_YOUR_KEY` in `AUTH_HEADER` — keep `Bearer ` and the space.

```json
{
  "mcpServers": {
    "unitpost": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.unitpost.com/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer pk_live_YOUR_KEY"
      }
    }
  }
}
```

> Deliberately no space after `Authorization:` in `args` — Claude Desktop mangles spaces there; the value lives in `env` instead. Requires Node.js 18+. If `npx` is not found, set `"command"` to your absolute npx path (e.g. `/opt/homebrew/opt/node@22/bin/npx`). Grant only the scopes the agent needs (e.g. `emails:send` for `emails_send`). Prefer a revocable key dedicated to the agent.

### 4. Fully quit and reopen

Save the file, then ⌘Q (Quit) Claude Desktop — closing the window is not enough. Reopen and check Settings → Developer: unitpost should appear under Local MCP servers.

### 5. Send a test

Ask Claude to send an email from a verified domain and confirm it in Unitpost Activity.

### 6. Skip: Add custom connector (unless you see Request headers)

Most plans only show Name + Remote MCP server URL + OAuth Client ID/Secret. That cannot authenticate Unitpost. Only if your dialog has Request headers: set URL to the value below, add header `Authorization` = `Bearer pk_live_…` (include `Bearer `). Never put the API key in OAuth Client ID/Secret.

- Remote MCP server URL: https://mcp.unitpost.com/mcp
- Request header value: Bearer pk_live_YOUR_KEY

> mcp-remote is local to Claude Desktop. Custom connectors (when header auth exists) are cloud-brokered and also work on claude.ai / mobile.

## Related

- [Codex](https://www.unitpost.com/guides/mcp/codex): Add the Unitpost MCP server to OpenAI Codex CLI.
- [GitHub Copilot](https://www.unitpost.com/guides/mcp/copilot): Use the Unitpost MCP server with VS Code agent mode / Copilot MCP.
- [Gemini CLI](https://www.unitpost.com/guides/mcp/gemini): Register Unitpost as an MCP server for the Gemini CLI.
