Twenty MCP
Twenty MCP
Un servidor MCP (Model Context Protocol) remoto que conecta Claude a un espacio de trabajo de Twenty CRM, desplegado en Cloudflare Workers con OAuth para una instalación en equipo con un solo clic.
Qué hace
Expone 9 herramientas genéricas basadas en esquemas que funcionan con cualquier objeto de Twenty (Persona, Empresa, Oportunidad o cualquier objeto personalizado). El MCP realiza una introspección de la API de metadatos de Twenty en tiempo de ejecución; nunca necesitas actualizar el MCP cuando añades campos u objetos.
Herramientas
list_objects,describe_object— descubre qué hay en el CRMfind_records,get_record— consulta con filtros/ordenación/paginacióncreate_record,update_record,delete_record— mutaciones (solo cuando está conectado en modo escritura)run_graphql— vía de escape para metadatos/graphql sin procesarget_primer— contexto de dominio específico de la organización + instantánea del esquema en vivo
Recursos (cargados automáticamente por Claude al iniciar la sesión)
twenty://primer— contexto de la organización fusionado con una instantánea compacta del esquematwenty://api/info— estado del conector y ámbitos actuales
Related MCP server: twentycrm-graphql-mcp
Instalación (miembro del equipo)
En Claude → Ajustes → Conectores → Añadir conector personalizado
URL:
https://<tu-worker>.workers.dev/mcpClaude te redirige a una página de consentimiento donde necesitarás tu clave de API personal de Twenty. Para obtener una:
Inicia sesión en tu espacio de trabajo de Twenty en el navegador
Haz clic en el icono de engranaje (abajo a la izquierda) → Ajustes
Ve a Desarrolladores (bajo la sección Espacio de trabajo en la barra lateral)
Haz clic en + Crear clave de API, dale un nombre (p. ej., "Claude MCP") y copia la clave
Pega la clave de API en el formulario de consentimiento. Elige el permiso (solo lectura o lectura+escritura) y los ámbitos de objeto opcionales.
Listo. Tu clave se almacena cifrada en Cloudflare KV, vinculada a tu sesión.
Los cambios que realices en Twenty se atribuyen a tu usuario de Twenty, no a una cuenta de servicio compartida.
Despliegue (administrador, primera vez)
Requisitos previos
Una cuenta de Cloudflare (el plan gratuito funciona)
Node.js 18+
Una instancia de Twenty CRM en ejecución (autoalojada o en la nube)
Pasos
# 1. Clone the repo
git clone https://github.com/High-Impact-Athletes/hia-twenty-mcp.git
cd hia-twenty-mcp
npm install
# 2. Create the KV namespace
npx wrangler kv namespace create twenty-mcp-oauth
# Note the ID from the output (e.g. "3cd89a10677c4d2ba32c9e59482afa23")
# 3. Create your local config (not committed to git)
cp wrangler.jsonc wrangler.local.jsonc
# Edit wrangler.local.jsonc:
# - Set "account_id" to your Cloudflare account ID
# - Replace <OAUTH_KV_ID> with the KV namespace ID from step 2
# 4. Set secrets
npx wrangler secret put COOKIE_ENCRYPTION_KEY --config wrangler.local.jsonc
# Paste the output of: openssl rand -hex 32
# This is just a random string for encrypting OAuth cookies — not a Twenty secret.
npx wrangler secret put TWENTY_BASE_URL --config wrangler.local.jsonc
# Paste your Twenty instance URL, e.g. https://crm.example.com
# This is whatever URL you use to log into Twenty in your browser.
# 5. Deploy
npm run deployLa URL de tu Worker será https://hia-twenty-mcp.<tu-subdominio>.workers.dev. Comparte <url>/mcp con el equipo.
Para equipos gestionados por Claude: registra <url>/mcp una vez en la consola de administración del equipo de Claude; aparecerá en la lista de conectores de cada miembro del equipo. Cada miembro debe completar la página de consentimiento única para pegar su propia clave de API de Twenty.
Opcional: establecer un token de administrador
Permite los puntos finales /admin/* para cargar el contexto del "primer" específico de la organización (ver Personalizar el primer):
npx wrangler secret put ADMIN_TOKEN --config wrangler.local.jsonc
# Paste the output of: openssl rand -hex 32Personalizar el primer
El recurso twenty://primer proporciona a Claude contexto sobre tu CRM antes de cualquier llamada a herramientas. Contiene dos partes:
Contexto de la organización — un documento markdown que describe tu modelo de dominio, objetos personalizados, reglas de negocio y convenciones. Cosas que la introspección no puede capturar (p. ej., "El Objeto A y el Objeto B son independientes; no infieras uno del otro").
Instantánea del esquema — generada automáticamente desde la API de metadatos de Twenty, almacenada en caché durante 1 hora.
De forma predeterminada, la parte (1) es una plantilla genérica de Twenty. Para cargar el contexto específico de tu organización:
# Upload your context markdown:
curl -X PUT https://<your-worker>.workers.dev/admin/primer \
-H "Authorization: Bearer <your-admin-token>" \
-H "Content-Type: text/markdown" \
--data-binary @path/to/your-context.md
# Verify it's loaded:
curl https://<your-worker>.workers.dev/admin/primer \
-H "Authorization: Bearer <your-admin-token>"
# Revert to the bundled default:
curl -X DELETE https://<your-worker>.workers.dev/admin/primer \
-H "Authorization: Bearer <your-admin-token>"El markdown de contexto debe describir: qué hace tu organización, qué significa cada objeto personalizado y cómo se relacionan, modelos de clasificación, convenciones de nomenclatura y cualquier regla de "haz esto / no hagas aquello" para la IA. Consulta src/primer/default-context.md para ver la estructura de la plantilla.
Desarrollo local
npm install
cp .dev.vars.example .dev.vars
# Edit .dev.vars — set COOKIE_ENCRYPTION_KEY, TWENTY_BASE_URL, and optionally ADMIN_TOKEN
# Make sure you have wrangler.local.jsonc set up (see Deploy section)
npm run dev # wrangler dev on http://localhost:8787
npm run typecheckPara conectar un Claude Desktop local al worker de desarrollo, añade http://localhost:8787/mcp como conector.
Cómo funciona la autenticación
Twenty no tiene un proveedor de OAuth ascendente; la autenticación se realiza mediante claves de API por espacio de trabajo. Por lo tanto:
El Worker ejecuta su propio punto final OAuth 2.1 (requerido por los conectores de Claude).
Durante el paso de consentimiento de OAuth, el usuario pega su clave de API de Twenty en un formulario HTML.
El Worker valida la clave contra el punto final
/metadatade Twenty y luego almacena{twentyApiKey, mode, allowedObjects, label}como propiedades OAuth cifradas.Cada llamada posterior a la herramienta MCP tiene la clave del usuario disponible a través de
this.props.
Esto significa que el MCP es OAuth por fuera (para Claude) y clave de API por dentro (para Twenty).
Ámbitos
Cada conexión puede restringirse en el momento de la instalación:
Modo: solo lectura oculta
create_record/update_record/delete_record.Objetos permitidos: lista separada por comas para restringir a objetos específicos.
Los permisos a nivel de objeto también son aplicados por el propio Twenty a través del rol asignado a la clave de API del usuario: seguridad reforzada.
Compatibilidad de versiones de Twenty
Probado con Twenty v0.40+. El MCP utiliza:
API REST (
/rest/<objetos>) para CRUD de registros — profundidad limitada a 0 o 1API de metadatos GraphQL (
/metadata) para la introspección de esquemas — utiliza el camposettingsen el tipo Field para información de relaciónLos campos compuestos (p. ej.,
name.firstName,emails.primaryEmail) deben estar notados con puntos en los filtros
Si utilizas una versión de Twenty significativamente anterior, la forma de la consulta de metadatos puede diferir. Abre una incidencia si encuentras errores.
Arquitectura
Claude ↔ OAuth 2.1 ↔ Worker ↔ REST+GraphQL ↔ Twenty workspace
│
├─ McpAgent Durable Object (per session)
├─ OAUTH_KV (token store, schema cache, primer)
└─ twenty://primer (org context + live schema)Licencia
Apache-2.0
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
- FlicenseNot gradedqualityCmaintenanceMCP server for Twenty CRM that enables AI assistants to interact with the CRM via GraphQL, including schema inspection and query execution.171
- AlicenseAqualityBmaintenanceA comprehensive MCP server providing Claude with enterprise-grade access to HubSpot CRM, including contacts, deals, quotes, workflows, and automation through 37 tools.3742MIT
- AlicenseAqualityBmaintenanceEnables MCP clients to read, search, create, update, and manage records in Twenty CRM with a safe, composable 14-tool interface and guarded destructive operations.14MIT
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.
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/High-Impact-Athletes/hia-twenty-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server