Cursor · Servidor MCP
Servidor MCP para Cursor: mensajería y email en su IDE
Una URL y una cabecera añaden el Servidor MCP de Unipile a Cursor. Después, su agente construye funciones de LinkedIn, WhatsApp y email en su proyecto.
Prueba gratis de 7 días, sin tarjeta.
Cursor · crm-app
Unipile MCP conectado
Añade la conexión de cuentas de LinkedIn a mi CRM.
Leer endpointPOST /v2/auth/linkesquema cargado
Se han añadido la ruta de conexión y el botón en Ajustes. El ID de la cuenta se guarda en el usuario.
Describa la próxima función…
El objetivo
Lo que quiere conseguir
Añadir una conexión de LinkedIn, WhatsApp, email o calendario a su producto. Eso implica leer una referencia de API, elegir los endpoints adecuados, conectar Hosted Auth y sus callbacks, y conservar los IDs correctos desde la búsqueda hasta el mensaje. Con el servidor MCP de Unipile en Cursor, el agente hace esa lectura por usted y escribe el código en su stack.
Conecte el servidor MCP de Unipile a CursorUnipile MCP conectado
Seleccione los canales que quiere conectar
developer.unipile.com/mcpConectar todos los canales9 canales
↑↓navegar espacioseleccionar ↵conectaruna URL, una cabecera
Sin ello
Pestañas, conjeturas y código pegamento
Cursor adivina nombres de endpoints y payloads a partir de sus datos de entrenamiento, y se equivoca con los IDs.
Usted pega esquemas de la referencia en el chat, un endpoint cada vez.
La primera llamada real ocurre en producción, después de la revisión de código.
Con el servidor MCP de Unipile
El resultado en su aplicación
Una ruta de conexión y un botón en Settings: cada usuario vincula su propia cuenta mediante Hosted Auth.
Un receptor de webhooks y una bandeja que muestra los mensajes y los emails según llegan.
Todas las peticiones ya ejecutadas una vez en su aplicación de Development antes de que revise el diff.
mcp.json, global o de proyecto
Añada el servidor MCP de Unipile a Cursor
El servidor es remoto: una URL sobre streamable HTTP y una cabecera. Sin npx, sin proceso local, sin versión de Node que gestionar. Elija dónde vive la entrada, pegue el bloque de la documentación oficial, guarde y Cursor carga el servidor.
Cursor actualizado, con MCP disponible en Customize (barra lateral) o en la CLI de Cursor.
Una aplicación de Development en el dashboard de Unipile, con un Scope y una clave Account API con scope.
Al menos una cuenta de prueba conectada a ese Scope mediante Hosted Auth, para que el agente pueda ejecutar peticiones reales.
Configuración global~/.cursor/mcp.json
Configuración de proyecto.cursor/mcp.json (raíz del repositorio)
Clave desde una variable de entorno${env:UNIPILE_API_KEY}
?
¿Global o de proyecto?Global cuando construye varias integraciones de Unipile desde una misma máquina. De proyecto cuando cada repositorio necesita su propia clave con scope, que es lo correcto cuando Development y Production viven en repositorios distintos. Cursor lee primero el proyecto y luego lo global.
{
"mcpServers": {
"unipile": {
"url": "https://developer.unipile.com/mcp?branch=v2.0",
"headers": {
"X-API-KEY": "your-scoped-api-key"
}
}
}
}
{
"mcpServers": {
"unipile": {
"url": "https://developer.unipile.com/mcp?branch=v2.0",
"headers": {
"X-API-KEY": "your-scoped-api-key"
}
}
}
}
{
"mcpServers": {
"unipile": {
"url": "https://developer.unipile.com/mcp?branch=v2.0",
"headers": {
"X-API-KEY": "${env:UNIPILE_API_KEY}"
}
}
}
}
Guarde el archivo. Cursor carga el servidor y lo lista en Customize. Cursor resuelve ${env:NAME} en url y headers, así que la clave no tiene por qué estar en el archivo.
Opcional: instalación en un clic
Pegue su clave Account API con scope para obtener un enlace de instalación que abre Cursor con el servidor precargado. Todo ocurre en su navegador; la clave nunca se envía a unipile.com.
Déjelo vacío y el enlace instalará el servidor con un marcador que podrá sustituir en Cursor.
Añadir Unipile a Cursor
Verificación
Verifique la conexión
Tres comprobaciones: en el editor, en la CLI y luego en un chat. Ninguna toca una cuenta conectada.
1En CustomizeAbra Customize en la barra lateral: el servidor unipile aparece listado, activado y con su estado. El interruptor lo desactiva sin borrar la entrada.
2En la CLI de CursorLa CLI comparte la configuración del editor: primero el proyecto, luego lo global.agent mcp list
# o /mcp list dentro de una sesión interactiva
3En un chat, sin tocar ninguna cuentaPida algo que solo lea la especificación de la API. Si el agente responde con rutas y parámetros reales, el servidor está conectado.Con el MCP de Unipile, lista los endpoints de búsqueda de personas en LinkedIn y sus parámetros obligatorios.
Prompts, no código de pegamento
Dé el prompt a su agente
Tres tareas de integración, cada una con el prompt exacto para pegar en Cursor, los endpoints de Unipile que el agente lee y ejecuta y lo que llega a su proyecto. Las rutas están completas, sobre la URL base de la API
https://api.unipile.com, con su clave con scope en la cabecera X-API-KEY .Añade la mensajería de LinkedIn a mi ATS: sincroniza la bandeja de entrada de cada reclutador y permite responder desde la ficha del candidato.
Buscar endpoints"chats messages send"3 resultados
Ejecutar peticiónGET /v2/{account_id}/chats12 chats
Se ha creado
linkedin/inbox-sync.ts (chats y mensajes guardados en el candidato, paginación por cursor) y POST /candidates/:id/reply, que llama a la ruta de envío con el ID de cuenta del propio chat. Sincronización ejecutada en la app de Development: 12 chats, 87 mensajes.Pegue el prompt, revise el diff
Cursor lee los contratos de chats y mensajes a través del servidor, escribe el job de sincronización y el endpoint de respuesta en su stack y lanza las primeras peticiones en su aplicación de Development. WhatsApp, Instagram y Telegram usan las mismas rutas de chat, así que el segundo canal requiere un prompt más corto que el primero.
Endpoints que usa el agente
GET/v2/{account_id}/chatsGET/v2/{account_id}/chats/{chat_id}/messagesPOST/v2/{account_id}/chats/{chat_id}/messages/send
Error frecuente: Mezclar los ID. Un mensaje siempre se envía desde la cuenta propietaria del chat; mantenga
Construya una integración de LinkedIn
account_id y chat_id juntos desde la llamada de listado hasta la de envío.Implementa Unipile Hosted Auth en esta app React y Fastify para que los usuarios conecten su propia cuenta de LinkedIn desde Ajustes.
Leer endpointPOST /v2/auth/linkesquema cargado
Ejecutar peticiónPOST /v2/auth/link201 · link
Se ha añadido
POST /api/accounts/connect en Fastify: crea el enlace de autenticación en el servidor y devuelve la URL alojada. La página de Ajustes en React la abre y, al volver, guarda el nuevo account_id en el workspace. Verificado en la app de Development con una cuenta de LinkedIn de prueba.Sus usuarios conectan sus propias cuentas y su app obtiene un ID de cuenta
Hosted Auth es la página que Unipile sirve a sus usuarios para que vinculen ellos mismos LinkedIn, WhatsApp, Gmail, Outlook o un calendario. El agente implementa la creación del enlace en su backend, la redirección en su frontend y el almacenamiento del ID de cuenta, que necesita cada petición posterior.
Endpoints que usa el agente
POST/v2/auth/linkPOST/v2/auth/intentGET/v2/accounts/{account_id}
Error frecuente: Crear el enlace de autenticación desde el navegador. El enlace se crea en su servidor con su clave; el frontend solo recibe la URL alojada.
Implemente Hosted Auth con un agente
Suscríbete a los webhooks de mensajes nuevos y crea una bandeja unificada de LinkedIn, WhatsApp y email, con una sola lista de hilos y el canal como etiqueta.
Leer endpointPOST /v2/webhooks/endpoints/esquema cargado
Ejecutar peticiónGET /v2/{account_id}/emails200 OK
Se ha registrado un endpoint de webhook para los eventos de mensajes en la app de Development y se ha añadido
POST /webhooks/unipile que devuelve 200 de inmediato y pone el evento en cola, un modelo Thread que lleva chats e hilos de email a una misma forma, y la lista de hilos con etiquetas de canal. Mensaje de prueba enviado: la lista se actualizó en menos de un segundo.Tiempo real sin polling, una sola lista para mensajería y email
Los chats y los emails proceden de dos familias de rutas, cada una con su esquema. El agente lee ambos contratos, diseña el modelo común, escribe la sincronización y el receptor de webhooks, y luego revisa el registro de entregas mediante la ruta de conversaciones de webhooks.
Endpoints que usa el agente
POST/v2/webhooks/endpoints/GET/v2/{account_id}/chatsGET/v2/{account_id}/emailsGET/v2/webhooks/conversations/
Error frecuente: Hacer el trabajo dentro del handler del webhook. Responda con un 2xx de inmediato y procese el evento de forma asíncrona, o las entregas expirarán y se reintentarán.
Construir una bandeja unificada con un agente
De Development a producción
Pruebe primero en una aplicación de Development
El dashboard de Unipile separa una aplicación de Development de otra de Production. Dé a Cursor una clave con scope de la aplicación de Development, con una o dos cuentas de prueba conectadas mediante Hosted Auth. El agente ejecuta peticiones reales sobre esas cuentas, en nombre del usuario autenticado que las vinculó, dentro de los límites de cada proveedor, y nada toca las cuentas de sus usuarios hasta que publique.
Valide el flujo de conexión de extremo a extremo: enlace de autenticación creado en el servidor, ID de cuenta guardado en el usuario.
Valide una lectura y una escritura por funcionalidad: listar chats, enviar un mensaje desde la cuenta de prueba.
Valide una entrega de webhook y un estado de reconexión o de checkpoint antes de cambiar la clave a Production.
crm-app · DevelopmentUsada por Cursor
Scopedev-tests · 2 cuentas
Clave
scoped Account API keyCuentasCuenta de prueba LinkedIn, buzón de prueba Gmail
Webhooks1 endpoint · eventos de mensaje
crm-app · ProductionSin tocar
Scopeuno por workspace
Clave
scoped keys, in your backend onlyCuentaslas cuentas propias de sus usuarios, vía Hosted Auth
Resolución de problemas
Errores habituales y qué significan
Los mensajes que muestra Cursor cuando una entrada MCP no está bien, y cómo se corrige cada uno. Casi siempre se reducen al archivo, al JSON o a la clave.
No tools or prompts
Cursor ha cargado la entrada pero no ha recibido nada del servidor.
SoluciónCompruebe el archivo que ha editado (el global ~/.cursor/mcp.json o el de proyecto .cursor/mcp.json en la raíz del repositorio), valide el JSON (una coma de más suele ser la culpable) y después recargue el servidor desde Customize o reinicie Cursor.
No server info found
La entrada está ahí, pero Cursor no puede describir el servidor.
SoluciónEl url debe ser exactamente https://developer.unipile.com/mcp?branch=v2.0, como entrada remota con url y headers, no command. Elimine cualquier type: "stdio" que quede de otro servidor.
Connection failed
La URL responde, pero no como servidor MCP.
SoluciónUna errata en el host o en ?branch=v2.0, o un proxy corporativo que bloquea la petición. Abra la URL en un navegador: debe responder, no dar 404.
401 Unauthorized en las peticiones
El servidor está conectado, pero ejecutar una petición falla.
SoluciónFalta la clave en headers, el nombre de la cabecera no es X-API-KEY, o ha usado una clave Service o una clave Account global en lugar de una clave Account API con scope de su aplicación de Development.
La configuración de proyecto se ignora
Cursor sigue usando la entrada global, o ninguna.
Solución.cursor/mcp.json debe estar en la raíz de la carpeta que abrió en Cursor, no en una subcarpeta. Cursor lee primero el proyecto, luego lo global y después los directorios superiores.
Dónde leer los logs
Todos los casos anteriores dejan rastro.
SoluciónAbra el panel Output (Cmd+Shift+U en macOS, Ctrl+Shift+U en Windows y Linux) y seleccione MCP Logs en el desplegable: allí se listan la inicialización, las peticiones y los errores.
6000+
Empresas que innovan con Unipile
La confianza de los líderes del sector
1 API
Racionalizar las operaciones de los principales canales de comunicación
2 días
Rápida integración en directo con una configuración mínima
30%
Reducción de los esfuerzos y recursos de mantenimiento
Seguridad y conformidad integradas
Protección de nivel empresarial para sus datos y flujos de trabajo Más información sobre nuestra seguridad
SOC 2 Tipo II
Certificado
Controles de seguridad auditados de forma independiente que garantizan la protección de datos y la integridad operativa.
GDPR
Conforme
Pleno cumplimiento de la normativa europea de protección de datos para la privacidad de los usuarios.
99.9%
Tiempo de actividad de la plataforma en los últimos 24 meses
24/7
Asistencia global con API de alto rendimiento
FAQ del servidor MCP para Cursor
Las preguntas que la gente escribe de verdad: dónde está mcp.json, global o por proyecto, servidores remotos y cabeceras, qué revisar cuando no aparece nada, claves, instalación en un clic y la CLI.
En dos lugares.
~/.cursor/mcp.json en su carpeta personal es la configuración global, disponible en todos los proyectos. .cursor/mcp.json en la raíz de la carpeta que abrió en Cursor es la configuración del proyecto. Cursor lee primero el archivo del proyecto, luego el global y después los directorios superiores. Ambos admiten el mismo bloque mcpServers .De forma global si construye varias integraciones de Unipile desde una misma máquina y una misma aplicación de Development. Por proyecto si cada repositorio necesita su propia clave con scope, que es la opción correcta cuando las integraciones de Development y Production viven en repositorios distintos. En ambos casos, la clave es una clave Account API con scope, nunca una clave de Service ni global.
Sí. Una entrada remota en
mcp.json admite un campo url y un headers de tipo objeto, y Cursor resuelve ${env:NAME} en ambos. El servidor de Unipile es exactamente eso: HTTP streamable en https://developer.unipile.com/mcp?branch=v2.0 con la cabecera X-API-KEY . Sin npx, sin proceso local, sin versión de Node que gestionar.En este orden: el archivo que editó (global o de proyecto, en la raíz del repositorio), la validez del JSON, una recarga del servidor desde Customize o un reinicio de Cursor, y luego los MCP Logs en el panel Output (Cmd+Shift+U, seleccione MCP Logs). Si el servidor se conecta pero las peticiones fallan con 401, falta la clave en la cabecera o no es una clave Account API con scope.
El servidor responde sin clave cuando el agente solo lee la especificación de la API. Para ejecutar peticiones reales, cree un Scope en su aplicación de Development, asigne las cuentas de prueba y genere una clave Account API con scope para ese Scope. Nunca dé a un cliente MCP una clave Service ni una clave Account global.
Sí. El enlace de instalación de esta página codifica la configuración del servidor; abre Cursor con la entrada unipile ya rellenada y usted sustituye el marcador de posición por su clave con scope. El generador opcional de arriba crea el mismo enlace con su clave ya incluida, íntegramente en su navegador.
Sí. La CLI comparte la configuración del editor: primero la del proyecto, luego la global.
agent mcp list muestra los servidores configurados y su estado, y /mcp list hace lo mismo dentro de una sesión interactiva. Después, el agente usa el servidor de Unipile cuando una petición lo requiere.