Claude Desktop
Claude Desktop's **Add custom connector** dialog (URL + OAuth only) cannot send a Bearer API key. Use the local mcp-remote bridge instead.
What are the connection details?
| 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, …) |
How do I connect Claude Desktop?
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, replacepk_live_YOUR_KEYwith 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.Open Edit Config
In Claude Desktop: Settings → Desktop app → Developer → Edit Config. That opens
claude_desktop_config.json.Paste mcpServers at the top level
Merge the block below into the file.
mcpServersmust be a top-level key (sibling ofpreferences), not nested insidepreferences. Replacepk_live_YOUR_KEYinAUTH_HEADER— keepBearerand 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:inargs— Claude Desktop mangles spaces there; the value lives inenvinstead. Requires Node.js 18+. Ifnpxis 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:sendforemails_send). Prefer a revocable key dedicated to the agent.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.
Send a test
Ask Claude to send an email from a verified domain and confirm it in Unitpost Activity.
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_…(includeBearer). 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.