{"slug": "how-to-connect-claude-to-your-crm-with-mcp", "title": "How to Connect Claude to Your CRM with MCP", "summary": "Relaticle released an MCP server at mcp.relaticle.com that lets Claude search, read, create, update, and soft-delete companies, people, opportunities, tasks, and notes in a single authorized workspace, with OAuth 2.1 and Dynamic Client Registration handling setup for Claude.ai and Claude Desktop and personal access tokens used for Claude Code. OAuth access tokens last 30 days and refresh tokens 90 days, and the workspace chosen during consent is permanent for that connector. The server also exposes per-entity schema resources so Claude reads exact field codes and option values before writing, and its search and fetch tools are built to pair with ChatGPT's Company Knowledge feature.", "body_md": "# How to Connect Claude to Your CRM with MCP\n\nYou can have Claude reading and writing your Relaticle CRM in about two minutes on Claude Code, or a few minutes more when connecting Claude.ai or Claude Desktop through OAuth. Once connected, Claude can search your companies, people, opportunities, tasks, and notes; read full record detail; and create, update, or delete records directly, using the same custom fields your team already configured. This is the setup guide: what the connection actually gives you, how to wire it up from each client, what the available tools can do, and, the part most guides skip, exactly how writes behave once Claude has access.\n\nThe canonical reference for every detail below lives at [relaticle.com/developers/mcp](https://relaticle.com/developers/mcp). This post is the narrative walkthrough; that page is the one to bookmark for exact tool schemas and troubleshooting.\n\n## \n\n[MCP (Model Context Protocol)](https://modelcontextprotocol.io/) is the open standard that lets an AI assistant call real tools against a real system, instead of you pasting data back and forth between a chat window and your CRM. Relaticle runs an MCP server at `mcp.relaticle.com` that exposes your workspace to any MCP-capable client.\n\nOnce you connect it, Claude can:\n\n- Search and list companies, people, opportunities, tasks, and notes, with filtering, sorting, and pagination\n- Fetch a single record with full detail and its relationships (a company's contacts, an opportunity's linked tasks, and so on)\n- Create, update, and soft-delete records in any of those five entity types\n- Read and write your workspace's custom fields, not just the built-in ones\n- Attach or detach tasks and notes to companies, people, and opportunities, and assign tasks to workspace members\n- Read a schema resource per entity so it knows your exact field codes and option values before it writes anything\n\nEvery one of those operations is scoped to a single workspace: the one you picked when you authorized the connection. Claude cannot see or touch a different workspace's data through the same token.\n\n## \n\nRelaticle's MCP server supports two authentication methods, and which one you use depends on the client.\n\n**OAuth (recommended for Claude.ai and Claude Desktop).** Add Relaticle as a custom connector using the MCP endpoint URL, `https://mcp.relaticle.com`, or your own domain if you're self-hosting. Because the server supports OAuth 2.1 with Dynamic Client Registration, Claude registers itself automatically and walks you through a one-click consent screen: you pick the workspace this connector should use, approve access, and you're connected. There's no token to copy or paste.\n\nThat workspace choice is permanent for the connector. If you need it pointed at a different workspace, revoke the connector and reconnect rather than trying to switch it in place. Access tokens issued this way last 30 days and refresh tokens last 90; Claude refreshes them in the background, so you shouldn't notice the expiry once it's set up.\n\n**Personal access token for Claude Code.** Create one in Relaticle's Access Tokens page, choose its workspace and permissions, then copy the token. Follow the Claude Code command below. For Claude Desktop, add this remote server through **Settings → Connectors** using OAuth. A remote URL in `claude_desktop_config.json` does not establish this connection. See [Anthropic's connector documentation](https://support.claude.com/en/articles/11503834-building-custom-connectors-via-remote-mcp-servers).\n\nOAuth connections appear under **Access Tokens → AI Connectors**, where you can revoke them. Personal access tokens appear in the token list on that page.\n\n**ChatGPT**, briefly: its custom connectors also support OAuth Dynamic Client Registration, so the setup is the same shape as Claude.ai. Relaticle's `search` and `fetch` tools are built specifically to pair with ChatGPT's Company Knowledge feature. `search` returns canonical URLs, and `fetch` resolves one of those URLs back into a full record, which is the exact contract that feature expects.\n\n## \n\nClaude Code doesn't need a config file edit. Create a personal access token the same way as above (**Settings → Access Tokens → Create**), then run:\n\n```\nclaude mcp add relaticle \\\n  --transport http \\\n  https://mcp.relaticle.com \\\n  --header \"Authorization: Bearer YOUR_TOKEN\"\n```\n\nThat's the whole setup. Claude Code will list `relaticle` among its available MCP servers, and the same server tools used by Claude.ai and Desktop are available in your terminal sessions.\n\n| Client | Connection method | Typical setup time | \n|---|---|---|\n| Claude.ai (web) | OAuth custom connector, Dynamic Client Registration | ~2 minutes | \n| Claude Desktop | OAuth custom connector through Settings → Connectors | ~2-5 minutes | \n| Claude Code | `claude mcp add` CLI plus personal access token | ~2 minutes | \n| ChatGPT | OAuth custom connector, Dynamic Client Registration | ~2 minutes | \n\n## \n\nThe server exposes 39 tools, checked September 22, 2026. One is identity (`who-ami-tool`, which returns the authenticated user, current workspace, workspace members, and the token's abilities, a useful first call to sanity-check a new connection). Two are cross-entity discovery (`search` and `fetch`, described above). Five work at the workspace level rather than on a single record: `get-crm-schema-tool` and `list-custom-fields-tool` for field discovery, `get-crm-summary-tool` for record counts and pipeline totals, `aggregate-opportunities-tool` for pipeline amounts grouped by stage or company, and `list-activity-tool` for who changed which record and what the field-level difference was. The upload tools support storing files. `upload-file` returns Markdown for rich-editor fields; `create-upload-url` prepares a signed upload. The remaining 29 tools cover CRUD and relationships across five entities:\n\n- **Companies** : list/search, get, create (requires`name` ), update, delete\n- **People (contacts)** : list/search, get, create (requires`name` , optional`company_id` ), update, delete\n- **Opportunities (deals)** : list/search, get, create (requires`name` , optional`company_id` /`contact_id` ), update, delete\n- **Tasks** : the standard five, plus`attach-task-to-entities-tool` and`detach-task-from-entities-tool` to link a task to companies, people, and opportunities, or assign/unassign workspace members, without clearing existing links\n- **Notes** : the standard five, plus attach/detach to companies, people, and opportunities\n\nList tools accept `search`, `filter` (including your custom fields, with operators like `eq`, `gt`, `contains`, and `in`), `sort`, `per_page`, and `page`. Create and update tools accept a `custom_fields` object for anything beyond the built-in fields. Relaticle's opportunity records, for example, ship with `stage`, `amount`, and `close_date` as custom fields out of the box, which is exactly the kind of thing a \"review my pipeline\" prompt needs to filter and sort on.\n\nCustom fields are where the five schema resources come in. Before writing to an entity, Claude reads `relaticle://schema/company` (or `/people`, `/opportunity`, `/task`, `/note`) to learn the exact field codes and option values your team has configured. Get this wrong and the write is rejected outright: unknown field codes don't get silently dropped, they fail validation. There's also a built-in **CRM Overview** prompt that returns record counts and recently created companies and people, a reasonable way to start a session before asking for anything more specific.\n\n## \n\nThis is the part worth getting right before you connect anything with write access.\n\nRelaticle has two different places an AI can write to your CRM, and they behave differently. Inside the app, the dashboard chat assistant proposes writes: when you ask it to create or update a record, it builds a proposal card and waits for you to click approve before anything is saved to the database. That's a `PendingAction`, a real row that sits in a pending state until a human acts on it.\n\nMCP is not that. When Claude calls a CRM write tool, Relaticle validates the request and invokes the relevant action. Successful writes commit directly. There's no proposal, no card, no separate approval step sitting in between. The safety net for MCP writes is the same one you'd expect from any API you hand to an agent: validation, authorization checks against Relaticle's normal policies, and the scope of the token you gave it, not a human-in-the-loop gate baked into the protocol.\n\nThat distinction matters for how you think about connecting Claude at all. A few things soften it in practice:\n\n- **Delete is soft.** Every delete tool soft-deletes; nothing is permanently gone, and records can be recovered. Delete tools are also flagged as destructive in their MCP metadata, which a well-behaved client can use to add its own confirmation step. Worth checking your client's settings if you want that extra prompt.\n- **MCP-created records carry a source.** Records created through MCP receive the \"MCP Agent\" creation source. Updating an existing record does not replace its creation source.\n- **Token scope is where you actually control this.** OAuth connectors (Claude.ai, Claude Desktop's one-click flow, ChatGPT) get a single scope that authorizes the whole toolset. The finer control there is which workspace the connector can reach, chosen once at consent and fixed until you revoke it. Personal access tokens are more granular: when you create one, you check off which abilities it gets (read, create, update, delete), so a token meant for a read-only reporting workflow can be minted without write access at all, separately from a token you trust with full CRUD.\n\nIf you want Claude to have full read and write access to run real workflows, that's exactly what this is built for. If you'd rather it only look and never touch, create a token scoped to `read` only and use that instead. The same tools work; the write ones just get rejected.\n\n## \n\nNone of this is cloud-only. A self-hosted Relaticle install runs the identical MCP server, the same tools, with no separate deploy step or feature to turn on. If you haven't set `MCP_DOMAIN`, the server is reachable at `{APP_URL}/mcp` right out of the Docker image; set that variable if you'd rather serve it at its own subdomain. Personal access tokens work exactly as described above, and OAuth runs the same Passport-backed flow against your own domain once you've configured it.\n\nThe only thing that changes on a self-hosted instance is which URL you point your client at. Swap `https://mcp.relaticle.com` for your own `{APP_URL}/mcp` in the config snippets above, or for your `MCP_DOMAIN` if you set one. Everything else, including the direct-write behavior described in the previous section, is identical to Relaticle's hosted plan. For the full deploy walkthrough, see the [self-hosting guide](https://relaticle.com/developers/self-hosting), or our blog walkthrough on [self-hosting an AI-native CRM](https://relaticle.com/blog/self-hosting-an-ai-native-crm-in-2026) covering Docker, Coolify, and Dokploy.\n\n## \n\nA few things worth trying once you're connected, all built from tools the server actually has:\n\n1. **Pipeline review.** \"Show me every opportunity in the Negotiation/Review stage, sorted by amount, and flag any that don't have a close date set.\" Use`list-opportunities-tool` with the stage filter and amount sort. Follow pagination until`has_more` is false, then inspect each returned close date.\n2. **Data entry after a call.** \"I just got off a call with Acme Corp. Create the company, add Jane Doe as a contact with the job title VP of Sales, and log a note summarizing what we discussed.\" Three tool calls:`create-company-tool` , then`create-people-tool` with`company_id` and the`job_title` custom field, then`create-note-tool` with`company_ids` and`people_ids` set directly, since note creation accepts those links up front and no separate attach call is needed.\n3. **Unblocking a stalled deal.** \"Look at the notes on the Acme opportunity and tell me what's holding it up, then update the close date if we agreed on one in the call.\" Reads through`list-notes-tool` /`get-note-tool` , writes back through`update-opportunity-tool` .\n4. **Weekly summary.** \"Give me an overview of the CRM, then list any companies created this week and tasks that are overdue.\" Starts from the built-in CRM Overview prompt, follows up with filtered`list-companies-tool` and`list-tasks-tool` calls.\n5. **Follow-up tasks.** \"Create a task to follow up with John next week, assign it to me, and link it to the Acme company and opportunity.\" One`create-task-tool` call, then`attach-task-to-entities-tool` with`assignee_ids` ,`company_ids` , and`opportunity_ids` in the same request.\n6. **Reassigning overdue work.** \"Find tasks that are more than a week overdue and move them from Sarah to me.\" A filtered`list-tasks-tool` call, then`detach-task-from-entities-tool` to remove the old assignee and`attach-task-to-entities-tool` to add the new one.\n\nNone of these need you to explain your schema first. Claude reads it from the schema resources the first time it needs a field code. If something doesn't work the way you expect, or you want the full tool reference, [relaticle.com/developers/mcp](https://relaticle.com/developers/mcp) has the complete list, and [relaticle.com/help](https://relaticle.com/help) covers general account and workspace questions that aren't MCP-specific.\n\n## Related posts\n\n        [Guides](https://relaticle.com/blog/the-real-cost-of-self-hosting-a-crm)\n    \n\n## The Real Cost of Self-Hosting a CRM\n\nSelf-hosting a CRM can be cheap, but it is not free. Here is the infrastructure, time, and SaaS comparison math.\n\n        [Guides](https://relaticle.com/blog/migrating-from-hubspot-or-attio-to-a-self-hosted-crm)\n    \n\n## Migrating from HubSpot or Attio to a Self-Hosted CRM\n\nPlan a HubSpot or Attio migration: export records and notes, map relationships, test imports, and identify the history and files needing separate work.\n\n        [Guides](https://relaticle.com/blog/let-claude-code-run-your-sales-pipeline)\n    \n\n## Let Claude Code Run Your Sales Pipeline\n\nFive real Claude Code sessions against Relaticle's MCP server: pipeline review, data entry, task cleanup, custom fields, and a delete it wouldn't rush.", "url": "https://wpnews.pro/news/how-to-connect-claude-to-your-crm-with-mcp", "canonical_source": "https://relaticle.com/blog/how-to-connect-claude-to-your-crm-with-mcp", "published_at": "2026-08-28 09:00:00+00:00", "updated_at": "2026-09-22 21:54:39.607620+00:00", "lang": "en", "topics": ["agent-protocols", "ai-agents", "ai-tools", "ai-products"], "entities": ["Relaticle", "Claude", "Anthropic", "Claude Code", "Claude Desktop", "Claude.ai", "ChatGPT", "Model Context Protocol"], "alternates": {"html": "https://wpnews.pro/news/how-to-connect-claude-to-your-crm-with-mcp", "markdown": "https://wpnews.pro/news/how-to-connect-claude-to-your-crm-with-mcp.md", "text": "https://wpnews.pro/news/how-to-connect-claude-to-your-crm-with-mcp.txt", "jsonld": "https://wpnews.pro/news/how-to-connect-claude-to-your-crm-with-mcp.jsonld"}}