FR
Cursor · Serveur MCP

Serveur MCP Cursor : messagerie et email dans votre IDE

Une URL et un en-tête ajoutent le serveur MCP Unipile à Cursor. Votre agent intègre ensuite des fonctionnalités LinkedIn, WhatsApp et email dans votre projet.
Essai gratuit de 7 jours, sans carte bancaire.
Cursor · crm-app
Unipile MCP connecté
Sarah
Ajoute la connexion de compte LinkedIn à mon CRM.
Endpoint de lecturePOST /v2/auth/linkschéma chargé
Ajout de la route de connexion et du bouton dans Settings. L'ID du compte est stocké sur l'utilisateur.
3 fichiers modifiés · testé sur l'application Development
Décrivez la prochaine fonctionnalité…
Le besoin

Ce que vous cherchez à faire

Ajouter une connexion LinkedIn, WhatsApp, email ou agenda à votre produit, c'est lire une référence API, choisir les bons endpoints, brancher Hosted Auth et ses callbacks, puis conserver les bons ID de la recherche jusqu'au message. Avec le serveur MCP Unipile dans Cursor, l'agent fait cette lecture pour vous et écrit le code dans votre stack.
Connecter le serveur MCP Unipile à CursorUnipile MCP connecté
Sélectionnez les canaux à connecterdeveloper.unipile.com/mcp
Connecter tous les canaux9 canaux
LinkedInLinkedIn/v2/{account_id}/chats
WhatsAppWhatsApp/v2/{account_id}/chats
InstagramInstagram/v2/{account_id}/chats
TelegramTelegram/v2/{account_id}/chats
GmailGmail/v2/{account_id}/emails
OutlookOutlook/v2/{account_id}/emails
IMAPIMAP/v2/{account_id}/emails
Google CalendarGoogle Calendar/v2/{account_id}/calendars
Outlook CalendarOutlook Calendar/v2/{account_id}/calendars
↑↓naviguer espacesélectionner ↵connecterune URL, un en-tête
Sans le serveur Onglets, suppositions, code de liaison
Cursor devine les noms d'endpoints et les payloads à partir de ses données d'entraînement, et se trompe d'ID.
Vous collez dans le chat les schémas de la référence, un endpoint à la fois.
Le premier vrai appel a lieu en production, après la revue de code.
Avec le serveur MCP Unipile Le résultat dans votre application
Une route de connexion et un bouton dans Settings : chaque utilisateur relie son propre compte via Hosted Auth.
Un récepteur de webhooks et une inbox qui affiche les messages et les emails dès leur arrivée.
Chaque requête déjà exécutée une fois sur votre application Development avant que vous relisiez le diff.
mcp.json, global ou projet

Ajouter le serveur MCP Unipile à Cursor

Le serveur est distant : une URL en HTTP streamable et un en-tête. Pas de npx, pas de processus local, pas de version de Node à gérer. Choisissez où placer l'entrée, collez le bloc de la documentation officielle, enregistrez, et Cursor charge le serveur.
Cursor à jour, avec MCP disponible dans Customize (barre latérale) ou dans la CLI Cursor.
Une application Development dans le dashboard Unipile, avec un Scope et une clé Account API scopée.
Au moins un compte de test connecté à ce Scope via Hosted Auth, pour que l'agent puisse exécuter de vraies requêtes.
G
Configuration globale~/.cursor/mcp.json
P
Configuration de projet.cursor/mcp.json (racine du dépôt)
E
Clé issue d'une variable d'environnement${env:UNIPILE_API_KEY}
?
Global ou projet ?Global si vous développez plusieurs intégrations Unipile depuis une même machine. Projet si chaque dépôt a besoin de sa propre clé scopée, le bon choix quand Development et Production vivent dans des dépôts différents. Cursor lit d'abord le projet, puis le global.
~/.cursor/mcp.json
{ "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}" } } } }
Enregistrez le fichier. Cursor charge le serveur et le liste dans Customize. Cursor résout ${env:NAME} dans url et headers : la clé n'a jamais besoin de figurer dans le fichier.
Facultatif : installation en un clic Collez votre clé Account API scopée pour obtenir un lien d'installation qui ouvre Cursor avec le serveur prérempli. Tout se passe dans votre navigateur ; la clé n'est jamais envoyée à unipile.com. Laissez le champ vide et le lien installe le serveur avec une valeur provisoire à remplacer dans Cursor.
Ajouter Unipile à Cursor
Vérifier

Vérifier la connexion

Trois vérifications : dans l'éditeur, dans la CLI, puis dans un chat. Aucune ne touche à un compte connecté.
1Dans CustomizeOuvrez Customize dans la barre latérale : le serveur unipile est listé, activé, avec son état. L'interrupteur le désactive sans supprimer l'entrée.
2Dans la CLI CursorLa CLI partage la configuration de l'éditeur : le projet d'abord, puis le global.agent mcp list # ou /mcp list dans une session interactive
3Dans un chat, sans toucher à un comptePosez une question qui ne lit que la spécification de l'API. Si l'agent répond avec de vraies routes et de vrais paramètres, le serveur est branché.Avec le MCP Unipile, liste les endpoints de recherche de personnes LinkedIn et leurs paramètres obligatoires.
Des prompts, pas du code de liaison

Donnez le prompt à votre agent

Trois tâches d'intégration, chacune avec le prompt exact à coller dans Cursor, les endpoints Unipile que l'agent lit et exécute, et ce qui arrive dans votre projet. Les chemins sont complets, sur l'URL de base de l'API https://api.unipile.com, avec votre clé scopée dans l'en-tête X-API-KEY .
Cursor · ats-appApplication Development
Ajoute la messagerie LinkedIn à mon ATS : synchronise l'inbox de chaque recruteur et permets-leur de répondre depuis la fiche candidat.
Rechercher des endpoints"chats messages send"3 résultats
Exécuter la requêteGET /v2/{account_id}/chats12 chats
Création de linkedin/inbox-sync.ts (chats et messages upsertés sur le candidat, pagination par curseur) et de POST /candidates/:id/reply, qui appelle la route d'envoi avec l'ID du compte propriétaire du chat. Synchro exécutée sur l'application Development : 12 chats, 87 messages.3 fichiers modifiés · testé sur l'application Development

Collez le prompt, relisez le diff

Cursor lit les contrats des chats et des messages via le serveur, écrit le job de synchro et l'endpoint de réponse dans votre stack, et exécute les premières requêtes sur votre application Development. WhatsApp, Instagram et Telegram utilisent les mêmes routes de chat : le deuxième canal demande un prompt plus court que le premier.
Endpoints utilisés par l'agent
GET/v2/{account_id}/chatsGET/v2/{account_id}/chats/{chat_id}/messagesPOST/v2/{account_id}/chats/{chat_id}/messages/send
Erreur fréquente : Mélanger les ID. Un message part toujours du compte propriétaire du chat ; gardez account_id et chat_id ensemble, de l'appel de liste jusqu'à l'appel d'envoi.
Créer une intégration LinkedIn
Cursor · crm-appApplication Development
Implémente Hosted Auth d'Unipile dans cette app React et Fastify pour que les utilisateurs connectent leur propre compte LinkedIn depuis Settings.
Endpoint de lecturePOST /v2/auth/linkschéma chargé
Exécuter la requêtePOST /v2/auth/link201 · link
Ajout de POST /api/accounts/connect dans Fastify : elle crée le lien d'authentification côté serveur et renvoie l'URL hébergée. La page Settings en React l'ouvre et, au retour, stocke le nouvel account_id sur le workspace. Vérifié sur l'application Development avec un compte LinkedIn de test.4 fichiers modifiés · flux de connexion testé de bout en bout

Vos utilisateurs connectent leurs propres comptes, votre app récupère un ID de compte

Hosted Auth est la page qu'Unipile sert à vos utilisateurs pour qu'ils relient eux-mêmes LinkedIn, WhatsApp, Gmail, Outlook ou un agenda. L'agent branche la création du lien sur votre backend, la redirection sur votre frontend et le stockage de l'ID du compte, indispensable à toutes les requêtes suivantes.
Endpoints utilisés par l'agent
POST/v2/auth/linkPOST/v2/auth/intentGET/v2/accounts/{account_id}
Erreur fréquente : Créer le lien d'authentification depuis le navigateur. Le lien se crée sur votre serveur avec votre clé ; le frontend ne reçoit que l'URL hébergée.
Implémenter Hosted Auth avec un agent
Cursor · support-consoleApplication Development
Abonne-toi aux webhooks de nouveau message et crée une inbox unifiée LinkedIn, WhatsApp et email : une liste de fils avec le canal en badge.
Endpoint de lecturePOST /v2/webhooks/endpoints/schéma chargé
Exécuter la requêteGET /v2/{account_id}/emails200 OK
Enregistrement d'un endpoint webhook pour les événements de message sur l'application Development, ajout de POST /webhooks/unipile qui renvoie 200 immédiatement et met l'événement en file d'attente, d'un modèle Thread qui ramène chats et fils d'emails à un même format, et de la liste de fils avec badges de canal. Message de test envoyé : la liste s'est mise à jour en moins d'une seconde.6 fichiers modifiés · 3 canaux dans une seule liste

Du temps réel sans polling, une seule liste pour la messagerie et l'email

Les chats et les emails viennent de deux familles de routes, avec un schéma chacune. L'agent lit les deux contrats, conçoit le modèle commun, écrit la synchro et le récepteur de webhooks, puis vérifie le journal de livraison via la route des conversations webhook.
Endpoints utilisés par l'agent
POST/v2/webhooks/endpoints/GET/v2/{account_id}/chatsGET/v2/{account_id}/emailsGET/v2/webhooks/conversations/
Erreur fréquente : Faire le traitement dans le handler du webhook. Répondez tout de suite avec un 2xx et traitez l'événement en asynchrone, sinon les livraisons expirent et sont relancées.
Créer une inbox unifiée avec un agent
Du développement à la production

Testez d'abord sur une application Development

Le dashboard Unipile sépare une application Development d'une application Production. Donnez à Cursor une clé scopée de l'application Development, avec un ou deux comptes de test connectés via Hosted Auth. L'agent exécute de vraies requêtes sur ces comptes, pour le compte de l'utilisateur authentifié qui les a reliés, dans les limites de chaque fournisseur, et rien ne touche aux comptes de vos utilisateurs avant la mise en production.
Validez le flux de connexion de bout en bout : lien d'authentification créé côté serveur, ID du compte stocké sur l'utilisateur.
Validez une lecture et une écriture par fonctionnalité : lister les chats, envoyer un message sur le compte de test.
Validez une livraison de webhook et un état de reconnexion ou de checkpoint avant de passer la clé en Production.
crm-app · DevelopmentUtilisé par Cursor
Scopedev-tests · 2 comptes
Cléclé Account API scopée
ComptesCompte de test LinkedIn, boîte mail de test Gmail
Webhooks1 endpoint · événements de message
crm-app · ProductionIntacte
Scopeune par workspace
Cléclés scopées, uniquement dans votre backend
Comptesles comptes de vos utilisateurs, via Hosted Auth
Dépannage

Erreurs fréquentes et leur signification

Les messages que Cursor affiche quand une entrée MCP est incorrecte, et la correction de chacun. La plupart tiennent au fichier, au JSON ou à la clé.
No tools or prompts
Cursor a chargé l'entrée mais n'a rien reçu du serveur. CorrectionVérifiez le fichier modifié (global ~/.cursor/mcp.json ou projet .cursor/mcp.json à la racine du dépôt), validez le JSON (une virgule finale est le coupable habituel), puis rechargez le serveur depuis Customize ou redémarrez Cursor.
No server info found
L'entrée est présente mais Cursor ne parvient pas à décrire le serveur. CorrectionLe champ url doit être exactement https://developer.unipile.com/mcp?branch=v2.0, en tant qu'entrée distante avec url et headers, et non command. Supprimez tout type: "stdio" hérité d'un autre serveur.
Connection failed
L'URL répond, mais pas comme un serveur MCP. CorrectionUne faute de frappe dans l'hôte ou dans ?branch=v2.0, ou un proxy d'entreprise qui bloque la requête. Ouvrez l'URL dans un navigateur : elle doit répondre, pas renvoyer un 404.
401 Unauthorized sur les requêtes
Le serveur est connecté, mais l'exécution d'une requête échoue. CorrectionLa clé manque dans headers, le nom de l'en-tête n'est pas X-API-KEY, ou vous avez utilisé une clé Service ou Account globale au lieu d'une clé Account API scopée de votre application Development.
La configuration du projet est ignorée
Cursor continue d'utiliser l'entrée globale, ou aucune. Correction.cursor/mcp.json doit se trouver à la racine du dossier ouvert dans Cursor, pas dans un sous-dossier. Cursor lit le projet d'abord, puis le global, puis les répertoires parents.
Où lire les logs
Chacun des cas ci-dessus laisse une trace. CorrectionOuvrez le panneau Output (Cmd+Shift+U sur macOS, Ctrl+Shift+U sous Windows et Linux) et sélectionnez MCP Logs dans la liste déroulante : l'initialisation, les requêtes et les erreurs y figurent.
6000+ Les entreprises qui innovent avec Unipile
Des entreprises leaders nous font confiance
1 API
Toutes les plateformes centralisées en une API
2 jours
Intégration très rapide
30%
Réduction des efforts et des ressources de maintenance

Sécurité et conformité

Une protection de niveau entreprise pour vos données et workflows En savoir plus sur notre sécurité
SOC 2 Type II
SOC 2 Type II
Certifié
Contrôles de sécurité vérifiés de manière indépendante garantissant la protection des données et l'intégrité opérationnelle.
GDPR
GDPR
Conforme à la loi
Conformité totale avec les réglementations européennes en matière de protection des données pour le respect de la vie privée des utilisateurs.
99.9%
Temps de disponibilité de la plateforme au cours des 24 derniers mois
24/7
Support mondial avec API performante

FAQ serveur MCP Cursor

Les questions réellement posées : emplacement de mcp.json, global ou projet, serveurs distants et en-têtes, que vérifier quand rien n'apparaît, clés, installation en un clic et CLI.
À deux endroits. ~/.cursor/mcp.json dans votre dossier personnel est la configuration globale, disponible dans tous les projets. .cursor/mcp.json à la racine du dossier ouvert dans Cursor est la configuration de projet. Cursor lit d'abord le fichier du projet, puis le global, puis les répertoires parents. Les deux acceptent le même bloc mcpServers .
Globalement si vous développez plusieurs intégrations Unipile depuis une même machine et une même application Development. Par projet si chaque dépôt a besoin de sa propre clé scopée, le bon choix quand les intégrations Development et Production vivent dans des dépôts différents. Dans les deux cas, la clé est une clé Account API scopée, jamais une clé Service ou globale.
Oui. Une entrée distante dans mcp.json accepte un url et un objet headers , et Cursor résout ${env:NAME} dans les deux. Le serveur Unipile est exactement cela : HTTP streamable à l'adresse https://developer.unipile.com/mcp?branch=v2.0 avec l'en-tête X-API-KEY . Pas de npx, pas de processus local, pas de version de Node à gérer.
Dans cet ordre : le fichier modifié (global ou projet, à la racine du dépôt), la validité du JSON, un rechargement du serveur depuis Customize ou un redémarrage de Cursor, puis les MCP Logs dans le panneau Output (Cmd+Shift+U, sélectionnez MCP Logs). Si le serveur se connecte mais que les requêtes échouent en 401, la clé manque dans l'en-tête ou n'est pas une clé Account API scopée.
Le serveur répond sans clé quand l'agent se contente de lire la spécification de l'API. Pour exécuter de vraies requêtes, créez un Scope dans votre application Development, rattachez-y les comptes de test et générez une clé Account API scopée pour ce Scope. Ne donnez jamais à un client MCP une clé Service ou une clé Account globale.
Oui. Le lien d'installation de cette page encode la configuration du serveur ; il ouvre Cursor avec l'entrée unipile préremplie, et vous remplacez la valeur provisoire par votre clé scopée. Le générateur facultatif ci-dessus construit le même lien avec votre clé déjà intégrée, entièrement dans votre navigateur.
Oui. La CLI partage la configuration de l'éditeur : le projet d'abord, puis le global. agent mcp list affiche les serveurs configurés et leur état, et /mcp list fait de même dans une session interactive. L'agent utilise ensuite le serveur Unipile quand une demande le nécessite.