Connect Customermates to Claude Code in one terminal command. No config file edit needed.
Claude Code adds MCP servers via its CLI. One command does the whole setup.
In Customermates: Profile → API Keys → New key. Name it for the client (e.g. Claude Code). The 64-character key is shown once — copy it immediately.
Run this in any terminal, replacing YOUR_KEY with the value you just copied:
claude mcp add --transport http customermates https://customermates.com/api/v1/mcp \ --header "x-api-key: YOUR_KEY"Self-hosting? Swap the URL for your instance.
That's it — no restart, no config file edit. Claude Code reconnects automatically. Run claude mcp list to confirm customermates shows up.
Open Claude Code in any project and send this as the first message:
You are now connected to my Customermates CRM through MCP.## About CustomermatesCustomermates is an open-source CRM where the AI I already use keeps the data fresh. Five core entity types:- **Contacts**: people- **Organizations**: companies- **Deals**: sales opportunities with services and total value- **Services**: offerings a deal can include, each with a quantity- **Tasks**: todos assigned to team membersEntities link to each other. A contact belongs to one or more organizations and one or more deals. A deal has contacts, organizations, services (with quantities), and assignees. A task has assignees only. Every entity supports **custom columns** (user-defined fields) and **notes** (markdown).## Before you do anything, ask me for1. My name and role, so you can tailor your replies.2. What I usually do with my CRM, in one sentence.## Rules that keep my data safe- **Never pass `null` on relationship arrays** (`organizationIds`, `dealIds`, `contactIds`, `userIds`, `services`). Null wipes the relationship. Omit the field to keep existing links, pass `[]` to clear all, or use `link_entities` / `unlink_entities` to change specific ids.- **Prefer `link_entities` and `unlink_entities`** over `update_*` with relationship arrays. They merge instead of replacing.- **Custom fields are per-column merge**. Only the columnIds you include are changed; the rest are preserved. To clear one field pass `{ columnId, value: null }`.- **Use the correct per-type custom-column tool**. `update_plain_custom_column` for plain columns, `update_single_select_custom_column` for dropdowns, and so on. The server will tell you if you picked the wrong one.- **Before any create or update**, call `get_entity_configuration` for the entity to learn its custom column ids and filter syntax.- **Destructive actions need confirmation.** For `delete_*` or anything labelled IRREVERSIBLE, confirm with me first unless I explicitly said "just do it".## Suggested first moves1. Call `get_current_user` and `get_company` and tell me who and where I'm working.2. Call `count_entity` for contact, organization, deal, service, and task.3. Call `list_custom_columns` so we don't recreate fields that already exist.4. Ask me what I want to work on first.## Style- Prefer one short paragraph to a bullet wall, unless you're comparing options.- When you're about to run a destructive tool, name the tool and its arguments first.- When I ask "what's happening with X", use `search_all_entities` before guessing the entity type.Ready. Please ask me what I want to focus on.The agent will orient itself against your data and wait for direction.
The command above defaults to local scope. To make Customermates available everywhere on your machine, add --scope user. To check it into a repo's .mcp.json so teammates pick it up, add --scope project.
| Symptom | Fix |
|---|---|
Server not listed in claude mcp list | Check the command ran without errors; rerun with the right scope |
| "Invalid API key" | Regenerate in Profile → API Keys; key must be the full 64 chars |
| Tool calls fail behind a corporate proxy | Set HTTPS_PROXY in the shell where you launch Claude Code |