• Customermates logo
    CustomermatesDocumentation
  • Introduction
  • Comparison
Getting Started
  • Quickstart
  • Core Concepts
  • From Pipedrive
Connect your AI
  • Connect Claude Code
  • Connect Claude Desktop
  • Connect Codex
  • Connect Cursor
  • Connect Gemini
  • Connect ChatGPT
Integrations
  • MCP
  • Webhooks
  • OpenAPI 3.1.0
  • N8N
Self-Hosting
  • Get Started
  • Architecture & Security
Reference
  • MCP Tool Catalog
  • Filter Syntax
  • API Keys
  • Go back
  1. Introduction
  2. Connect Cursor

Connect Cursor

Add Customermates to Cursor in two clicks via the Settings UI. No file edit needed.

Cursor has a built-in MCP server picker. Two clicks to add, then paste the setup prompt.

1. Create an API key

In Customermates: Profile → API Keys → New key. Name it for the client (e.g. Cursor). Copy the 64-character string immediately — it's shown once.

2. Add the server in Cursor

Open Settings → Tools & MCP → Add new MCP server. Paste this, replacing YOUR_KEY:

{  "customermates": {    "url": "https://customermates.com/api/v1/mcp",    "headers": {      "x-api-key": "YOUR_KEY"    }  }}

Self-hosting? Swap the URL for your instance.

Cursor hot-reloads — no restart needed. The Customermates tools appear in Composer right away.

3. Paste this setup prompt into Composer

Open Composer and send this as your 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 and wait for direction.

Why run Customermates in Cursor

The CRM state is context. "Show me the deals blocked on engineering" while you're in a ticket, or "log this call" while you're reading the customer's repo, keeps you in flow. The agent reads or writes without you leaving the editor.

Try your first real prompt

  • "Move the Acme deal to stage 'Won' and add a note that the contract was signed today."
  • "Find contacts at the org for the repo I'm currently in."
  • "Log a task to follow up on the bug report we just discussed."

Manual config (alternative)

If you prefer editing the file directly, the same block goes in ~/.cursor/mcp.json (global) or <project>/.cursor/mcp.json (per-project) wrapped under mcpServers:

{
  "mcpServers": {
    "customermates": {
      "url": "https://customermates.com/api/v1/mcp",
      "headers": { "x-api-key": "YOUR_KEY" }
    }
  }
}

Troubleshooting

SymptomFix
Server not listedOpen Settings → Tools & MCP, confirm the entry exists; reload window if needed
"Invalid API key"Regenerate in Profile → API Keys
Tool calls time outSet HTTPS_PROXY in the shell you launched Cursor from

Next

  • MCP tool catalog
  • Connect Claude Desktop
  • Connect Claude Code
1. Create an API key
2. Add the server in Cursor
3. Paste this setup prompt into Composer
Why run Customermates in Cursor
Try your first real prompt
Manual config (alternative)
Troubleshooting
Next