Skip to main content
This page covers all supported ways to connect to SenderKit’s MCP server: OAuth (for clients that handle auth themselves), the hosted API-key endpoint, and the local stdio server bundled in the CLI.

Connect via OAuth

If your client handles auth through OAuth rather than a manual API key (Claude on the web, desktop, or mobile; ChatGPT custom connectors; or any other OAuth-compatible MCP client), you don’t need an API key — the client drives the auth flow through SenderKit’s OAuth 2.1 authorization server.
1

Find the custom connector / MCP section in your client

In Claude, this is typically Customise → Add custom connector. Other clients have similar settings screens.
2

Add `https://mcp.senderkit.com` as the server URL

The client will discover SenderKit’s OAuth endpoints automatically.
3

Sign in with your SenderKit account

You’ll be redirected to senderkit.com to authenticate.
4

Choose a workspace and mode on the consent screen

Pick which workspace the agent should act on, and whether it should use live mode (real delivery) or test mode (recorded but not sent). You can revoke the connection at any time from Dashboard → Settings → Connected Apps.
The workspace and mode you choose at consent time are fixed for that connection. To switch, revoke and reconnect. Call senderkit_context from within a session to confirm which workspace and mode are active.

Prerequisites (API-key connection)

  • A SenderKit API key. Create one in the dashboard; see Authentication. The same key prefix (sk_live_ / sk_test_) controls live vs test mode.
  • For local stdio mode: @senderkit/cli installed and on your PATH.

Hosted or local?

HostedLocal stdio
Endpointhttps://mcp.senderkit.comsenderkit mcp subprocess
AuthAuthorization: Bearer <key> headerSENDERKIT_API_KEY env var
Network hopyesnone
Requires Node.jsnoyes (via the CLI)
The tools and behavior are identical. Pick whichever fits your setup.

Auto-install with the CLI

If you have the CLI installed, senderkit mcp install writes the config for you. By default it configures the hosted endpoint with OAuth — no API key is stored; your client handles sign-in. Pass --client <name> to target a single client instead of every detected one.
# Hosted OAuth config for every detected client (default — no API key stored)
senderkit mcp install

# Hosted with API key bearer auth instead of OAuth
senderkit mcp install --api-key-auth

# Local stdio subprocess config
senderkit mcp install --local

# Target one client
senderkit mcp install --client cursor

# Print the config to stdout instead of writing
senderkit mcp install --client claude-desktop --print
Supported --client values: claude-code, claude-desktop, cursor, windsurf, vscode, zed, codex, opencode, or all (the default).

Manual configuration

If you’d rather edit configuration files by hand, the tabs below show the exact block per client.
Use claude mcp add — it writes to ~/.claude.json under projects.<cwd>.mcpServers.senderkit (local scope) or the top-level mcpServers.senderkit (user scope).
claude mcp add --transport http --scope user senderkit \
  https://mcp.senderkit.com \
  --header "Authorization: Bearer $SENDERKIT_API_KEY"
claude mcp add --scope user \
  --env SENDERKIT_API_KEY=$SENDERKIT_API_KEY \
  senderkit -- senderkit mcp
Verify with claude mcp list, or /mcp from inside a Claude Code session.

Self-hosting the HTTP server

If you’d rather not rely on the hosted endpoint, the CLI exposes the same server over Streamable HTTP. Point your client at it the same way you’d point at the hosted URL.
# Listens on http://localhost:3000/mcp
senderkit mcp --http --port 3000
Each request still needs Authorization: Bearer <key>. The server is stateless: every request authenticates independently, so a single process can serve multiple users or workspaces.

Troubleshooting

Most clients only load MCP servers at startup. Fully quit and restart the client after editing config. For Claude Code, run /mcp to see the live list; for Claude Desktop, restart from the menu rather than just closing the window.
For OAuth clients (Claude web/desktop/mobile, etc.): the connection may have been revoked. Go to Dashboard → Settings → Connected Apps, revoke the entry for your client, and reconnect.For hosted (API key), check that the Authorization header value is exactly Bearer sk_live_… or Bearer sk_test_… — no extra whitespace, no missing Bearer prefix. The server returns 401 for any missing or unrecognized key. Revoked keys also return 401; create a new key in the dashboard.For local stdio, the server reads SENDERKIT_API_KEY from the environment passed to the subprocess (the env block in your client config, or your shell if you launch the client from a terminal). If the key isn’t set, senderkit mcp exits at startup with No SenderKit API key found.
The local stdio config calls the senderkit binary directly. Install the CLI globally (npm install -g @senderkit/cli) and confirm it’s on your PATH with which senderkit. If your client launches outside your shell’s PATH (Claude Desktop on macOS often does), use the absolute path in the command field — e.g. /usr/local/bin/senderkit — or switch to the hosted variant.
mcp-remote requires Node.js 18+. Confirm with node --version. If npx is missing entirely, install Node from nodejs.org, or switch to a client with native remote MCP support (Claude Code, Cursor, VS Code, Zed, Codex, opencode).
Look at the tool’s error text — the server returns structured messages for invalid input (invalid_request: …), missing templates (template_not_found: …), rate limits (rate_limited: …), and 401s. The shape matches the REST API, so anything in the API troubleshooting guide applies.

Quickstart

The fastest path: Claude Code, hosted, in five minutes.

Tools

The full surface, parameter by parameter.