Overview
Twenty exposes an MCP server so that AI assistants — Claude Desktop, Claude Code, Cursor, ChatGPT, and others — can read and write your CRM data through natural language. Use your workspace URL (the URL you use to access Twenty) as the MCP endpoint. On Twenty Cloud, your workspace URL might behttps://{mycompany}.twenty.com or a custom domain. The server is available at:
Authentication Methods
You have two ways to authenticate your MCP client: OAuth (recommended) or API Key.Option A — OAuth (Recommended)
With OAuth, your MCP client opens a browser window for you to log in. No secrets are stored in config files, and tokens refresh automatically.OAuth requires an MCP client that supports the MCP Authorization specification. Claude Desktop, Claude Code, Cursor, and ChatGPT support it.
{your-workspace-url} with your workspace host (e.g. mycompany.twenty.com):
- Discover Twenty’s OAuth metadata via
/.well-known/oauth-protected-resourceand/.well-known/oauth-authorization-server - Register itself as an OAuth client via dynamic client registration (RFC 7591)
- Open your browser to authorize access
- Receive tokens and connect to the MCP server
Option B — API Key
If your MCP client does not support OAuth, or you prefer static credentials, pass an API key in theAuthorization header:
Quick Start
1. Copy the config
Go to Settings → AI → MCP in Twenty. Choose your authentication method (OAuth or API Key), copy the JSON snippet (it will already use your workspace URL), and paste it into your MCP client’s config file.2. Connect
Restart your MCP client (or reload the config). If using OAuth you will be redirected to Twenty to authorize access. If using an API key the connection is immediate.3. Start using it
Ask your AI assistant to interact with your CRM:- “Show me the 5 most recently created companies”
- “Create a new person named Jane Doe at Acme Corp”
- “Find all open opportunities worth more than $10k”
Available Tools
Once connected, the MCP server lists the same tools in every workspace:- Record tools take the object as an argument:
find_records,group_records,create_records,update_record,update_records,upsert_records,delete_recordsandmerge_records. For example,find_records({ objectName: "company", select: ["name"] }). - Discovery tools tell the assistant what your workspace contains:
list_object_metadata_namesfor objects andget_field_metadatafor the fields of an object. - Metadata tools to read and change the data model, such as
get_object_metadataorcreate_field_metadata. - Meta-tools reach everything else, including workflows, views, dashboards, email and the functions of your installed apps:
get_tool_catalogto browse a category,learn_toolsfor input schemas andexecute_toolto run a tool.
Direct mode
Connect to/mcp?mode=direct to list one tool per object and operation instead, each with the exact input schema of that object: find_many_companies, create_one_person, and several hundred more. Tools for objects created while you are connected appear after reconnecting.
This needs a client that loads tools on demand, as Claude, Claude Code, Codex and OpenCode do by default. A client that loads every tool definition up front, including Claude Code with tool search turned off, can run out of context.
Meta mode
Connect to/mcp?mode=meta to list only a few meta-tools:
learn_tools— get the input schema for specific toolsexecute_tool— run a tool
find_many_companies, find_one_person, update_one_opportunity. If a name is wrong, learn_tools reports it under notFound along with the closest matching names.
For anything else, get_tool_catalog browses the remaining tools one category at a time. It is a fallback: an unfiltered call returns hundreds of operations and most assistants will truncate the response.
Permissions
MCP connections inherit the permissions of the authenticated user (OAuth) or the role assigned to the API key. To restrict what the MCP server can do:- OAuth: The user’s workspace role applies.
- API Key: Assign a role to the API key under Settings → Members → Roles. See Permissions.
Self-Hosted Configuration
For self-hosted instances, replace{your-workspace-url} with your server URL. Make sure SERVER_URL in your environment matches the public URL of your Twenty instance — this is used to generate the OAuth discovery metadata.
Troubleshooting
“Unauthorized” or 401 errors- OAuth: re-authorize by clearing the stored tokens in your MCP client and reconnecting.
- API Key: verify the key is valid and hasn’t expired. Regenerate it if needed.
- Ensure your MCP client supports MCP Authorization. Fall back to the API Key method if it doesn’t.
- Confirm the MCP endpoint URL is reachable from your machine. For self-hosted instances, check that the server is running and
SERVER_URLis set correctly.