Twenty CRM MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Twenty CRM MCP ServerShow me all companies in the technology sector"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π€ Twenty CRM MCP Server
Transform your CRM into an AI-powered assistant
A Model Context Protocol server that connects Twenty CRM with Claude and other AI assistants, enabling natural language interactions with your customer data.
π Quick Start β’ π οΈ Tools β’ π Search & Filtering β’ π³ Docker β’ π€ Contributing
β¨ Features
Complete CRUD for people, companies, opportunities, notes and tasks
Working search β built on Twenty's real
filtergrammar (ilikematching), not the nonexistentsearchparamCorrect composite-field mapping β flat inputs like
firstName/email/amountare converted to Twenty'sname/emails/amountcomposite shapes on writeCursor pagination (
startingAfter/endingBefore) plus rawfilter,orderByanddepthpassthrough on every list toolNotes & tasks attach to records β pass
personId/companyId/opportunityIdwhen creating and the target links are created for youBatch creates β up to 60 people or companies per call
Resilient client β 30s timeouts, automatic retry with backoff on 429/5xx (honors
Retry-After), structured error messagesSchema discovery β metadata tools expose your workspace's objects, fields and enum options, including custom objects
Related MCP server: Twenty MCP Server
π Installation
Prerequisites
Node.js 18 or higher
A Twenty CRM instance (cloud or self-hosted)
Claude Desktop, Claude Code, or any MCP-compatible client
Setup
Get your Twenty CRM API key: in Twenty, go to Settings β API & Webhooks (under Developers) and generate a key.
Configure your MCP client.
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"twenty-crm": {
"command": "npx",
"args": ["-y", "github:mhenry3164/twenty-crm-mcp-server"],
"env": {
"TWENTY_API_KEY": "your_api_key_here",
"TWENTY_BASE_URL": "https://api.twenty.com"
}
}
}
}Claude Code:
claude mcp add twenty-crm -e TWENTY_API_KEY=your_api_key_here -e TWENTY_BASE_URL=https://api.twenty.com -- npx -y github:mhenry3164/twenty-crm-mcp-serverOr clone and run from source:
git clone https://github.com/mhenry3164/twenty-crm-mcp-server.git
cd twenty-crm-mcp-server
npm installthen point your client at node /path/to/twenty-crm-mcp-server/index.js.
Environment variables
Variable | Required | Default | Description |
| β | β | API key from Settings β API & Webhooks |
|
| Your instance URL if self-hosted | |
|
| Currency code used when none is given for money fields |
π¬ Usage
Once configured, use natural language to interact with your Twenty CRM:
"List the first 10 people in my CRM"
"Create a new person named John Doe with email john@example.com at Acme (company id ...)"
"Create a $12,000 opportunity called 'Acme renewal' in PROPOSAL stage"
"Add a note about today's call and attach it to the Acme company record"
"Create a follow-up task due Friday assigned to Sam, linked to the deal"
"Search people, companies and opportunities for 'blockchain'"π οΈ Tools
Category | Tools |
People |
|
Companies |
|
Opportunities |
|
Notes |
|
Tasks |
|
Batch |
|
Workspace |
|
Metadata |
|
Search |
|
Composite fields, handled for you
Twenty stores identity/contact/money data in composite fields. This server accepts flat parameters and maps them to the shapes the API expects:
You pass | Twenty receives |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Anything else β including your workspace's custom fields β passes through untouched.
Note on company revenue: the field is
annualRecurringRevenueon most deployed Twenty versions andannualRevenueon Twenty v2.x+. Both parameters are supported; use the one that matches your instance (checkget_object_metadataforcompaniesif unsure).
π Search, filtering & pagination
Twenty's REST API has no search or offset query params β this server builds real filters instead:
searchon list tools becomes a case-insensitiveilikefilter across sensible fields per object (people: first/last name + email; companies: name + domain; opportunities/notes/tasks: name/title).filteraccepts Twenty's raw filter grammar for anything more specific:createdAt[gte]:2026-01-01or(city[eq]:Austin,city[eq]:Dallas)emails.primaryEmail[ilike]:%@acme.comComparators:
eq, neq, in, containsAny, is, gt, gte, lt, lte, startsWith, endsWith, like, ilike; combine withand(...),or(...),not(...). Usefield[is]:NULL/NOT_NULLfor empty checks.
orderBy: e.g.createdAt[DescNullsLast](directions:AscNullsFirst,AscNullsLast,DescNullsFirst,DescNullsLast).Pagination is cursor-based: results include
pageInfo.endCursorβ pass it asstartingAfterfor the next page.limitmax is 200.depth:0(default) or1to include first-level related records.
π³ Docker
docker build -t twenty-crm-mcp-server .{
"mcpServers": {
"twenty-crm": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "TWENTY_API_KEY", "-e", "TWENTY_BASE_URL", "twenty-crm-mcp-server"],
"env": {
"TWENTY_API_KEY": "your_api_key_here",
"TWENTY_BASE_URL": "https://api.twenty.com"
}
}
}
}π§ͺ Development
npm install
npm test # unit tests (node --test, no network needed)
npm start # run the stdio serverβ¬οΈ Upgrading from v1.x
v2.0.0 fixes writes and search against the actual Twenty API. Breaking changes:
offsetwas removed from list tools (Twenty's REST API never supported it) β use cursor pagination (startingAfter).Note/task
bodynow maps tobodyV2.markdown;positionparams were dropped.Updates now use
PATCH(Twenty's documented verb) instead ofPUT.List results are returned as
{ records, pageInfo, totalCount? }instead of the raw API envelope.
π€ Contributing
This project is community-supported β the maintainer no longer runs Twenty day-to-day, so bug reports and PRs from active Twenty users are especially welcome and get reviewed and merged. See CONTRIBUTING.md.
v2.0.0 builds on excellent community work: composite-field mapping (#4 by @zaks), filter-based search (#6 by @studio7A, #8 by @InDebted-Growth), opportunity tools (#7 by @tarikhennen), and patterns from the forks by @BCJonkhout, @archie1492, @ndrkltsk and @atilladeniz.
π License
MIT β see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Twenty CRM through a Model Context Protocol server. Provides comprehensive CRM operations including managing people, companies, opportunities, notes, tasks, and custom objects with support for filtering, pagination, and AI-powered automations.30MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Twenty CRM for managing contacts, companies, opportunities, tasks, and activities through natural language commands with full TypeScript support and OAuth 2.1 authentication.35048MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Twenty CRM data through GraphQL and REST APIs to manage persons, companies, opportunities, and tasks. It supports both core entities and custom objects, providing a comprehensive interface for CRM automation.30MIT
- AlicenseNot gradedqualityDmaintenanceEnables integration with Twenty CRM, allowing users to manage contacts, tasks, notes, and other CRM data through natural language commands.35012MIT
Related MCP Connectors
Connect AI to your Attio CRM. Manage contacts, companies, deals, and sales pipelines. Create tasksβ¦
Streamline your Attio workflows using natural language to search, create, update, and organize comβ¦
An AI-first personal CRM you run in natural language: contacts, reminders, notes, and more.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mhenry3164/twenty-crm-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server