Set up the MCP server
The MCP server lets Claude and other Model Context Protocol clients use your CRM through a fixed set of tools — listing leads, importing lists, building campaigns, reading analytics. It runs as a second container next to the app and is off until you start it. See every tool.
1. Add two tokens
Generate two random values and add them to .env:
openssl rand -hex 32 # run twiceMCP_SERVICE_TOKEN=<first value>
MCP_BEARER_TOKEN=<second value>MCP_SERVICE_TOKENlets the MCP server call the Outbound OS API. Both containers read it from the same.env.MCP_BEARER_TOKENis what AI clients present. It is also the password on the sign-in step when claude.ai connects, unless you set a separateOAUTH_PASSWORD.
2. Start the MCP server
docker compose --profile mcp up -dIt listens on port 3010 (change it with OUTBOUNDOS_MCP_PORT). Check it is up with curl http://localhost:3010/healthz.
3. Give it an HTTPS address
Remote clients such as claude.ai need HTTPS. Add a second site to your reverse proxy, for example with Caddy:
mcp.example.com {
reverse_proxy localhost:3010
}4a. Connect Claude Code
claude mcp add --transport http outbound-os \
https://mcp.example.com/mcp \
--header "Authorization: Bearer <MCP_BEARER_TOKEN>"Then ask something like “list my newest leads” and approve the tool call.
4b. Connect claude.ai or the Claude apps
- In Claude, open Settings → Connectors and add a custom connector.
- Enter
https://mcp.example.com/mcpas the URL and press Connect. - A sign-in page from your server opens. Enter
OAUTH_PASSWORD(orMCP_BEARER_TOKENif you did not set one). Access lasts 30 days and refreshes automatically.
5. Decide what needs approval
Every tool acts with the MCP server’s service credential, so a connected client can do what an admin can through those tools. Most clients can ask before each call; keep that on for anything that changes state:
| Kind | Tools |
|---|---|
| Sends messages | send_whatsapp, send_email, start_campaign |
| Deletes | delete_lead, delete_campaign, bulk_lead_action |
| Controls sending | system_pause_resume, pause_campaign, lead_toggle_pause |
| Read only | list_leads, get_lead, lead_timeline, list_messages, analytics and status tools |
Keeping it safe
- Only expose the MCP server over HTTPS, and only if you use a remote client.
- Rotate
MCP_BEARER_TOKENif it leaks; restart the MCP container to apply it. - Results of each tool call go to the model you are using. Connect only clients whose data handling you accept for your leads.