Claude Code · Serveur MCP
Serveur MCP Claude Code : messagerie et email dans votre app
Une seule commande claude mcp add connecte le serveur MCP Unipile. Claude Code intègre ensuite des fonctionnalités LinkedIn, WhatsApp et email dans votre projet.
Essai gratuit de 7 jours, sans carte bancaire.
Claude Code · crm-app
Unipile MCP connecté
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.
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 Claude Code, l'agent fait cette lecture pour vous et écrit le code dans votre stack, depuis le terminal ou l'extension IDE.
Connecter le serveur MCP Unipile à Claude CodeUnipile MCP connecté
Sélectionnez les canaux à connecter
developer.unipile.com/mcpConnecter tous les canaux9 canaux
↑↓naviguer espacesélectionner ↵connecterune URL, un en-tête
Sans le serveur
Onglets, suppositions, code de liaison
Claude Code 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.
claude mcp add, trois scopes
Ajouter le serveur MCP Unipile à Claude Code
Le serveur est distant : une URL en HTTP streamable et un en-tête. Pas de npx, pas de processus local. Une commande l'enregistre ; le scope choisi détermine où il se charge et si votre équipe en profite aussi. Commande et JSON vérifiés dans la documentation officielle de Claude Code.
Claude Code installé (CLI ou extension IDE), connecté, lancé depuis le dossier de votre projet.
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.
Scope user--scope user · tous les projets, privé
Scope project.mcp.json à la racine du dépôt, partagé
Scope local (par défaut)ce projet uniquement, privé, dans ~/.claude.json
?
Quel scope choisir ?User si vous développez plusieurs intégrations Unipile depuis une même machine. Project si toute l'équipe doit récupérer le serveur depuis le dépôt, avec la clé de chaque développeur dans une variable d'environnement. Local pour un essai ponctuel. Quand un nom existe dans plusieurs scopes, local l'emporte sur project, qui l'emporte sur user.
# Scope user : tous les projets de cette machine, privé
claude mcp add --transport http --scope user \
unipile "https://developer.unipile.com/mcp?branch=v2.0" \
--header "X-API-KEY: your-scoped-api-key"
# Claude Code affiche "Added …", puis : claude mcp list
// Scope project : commité à la racine du dépôt, partagé avec l'équipe
{
"mcpServers": {
"unipile": {
"type": "http",
"url": "https://developer.unipile.com/mcp?branch=v2.0",
"headers": {
"X-API-KEY": "${UNIPILE_API_KEY}"
}
}
}
}
// "type": "http" est obligatoire ; chaque développeur exporte UNIPILE_API_KEY
# Scope local (par défaut) : ce projet uniquement, privé, stocké dans ~/.claude.json
claude mcp add --transport http \
unipile "https://developer.unipile.com/mcp?branch=v2.0" \
--header "X-API-KEY: your-scoped-api-key"
Vérifié sur Claude Code 2.1 : "Added …" puis ✔ Connected dans claude mcp list. Gardez l'URL entre guillemets (zsh interprète le ? comme un motif) et placez --header après l'URL, car il accepte plusieurs valeurs.
claude mcp addEnregistre un serveur dans le scope choisi et affiche "Added …" une fois l'écriture faite.--transport httpLe serveur Unipile est un serveur HTTP streamable distant. Pas de commande, pas de npx, pas de processus local.--scope userTous les projets de cette machine, privé. Omettez-le pour le scope local (ce projet uniquement), ou utilisez --scope project pour écrire .mcp.json.unipileLe nom affiché dans claude mcp list, claude mcp get et /mcp."https://developer.unipile.com/mcp?branch=v2.0"L'URL unique du serveur, entre guillemets. Le paramètre ?branch=v2.0 sélectionne l'API v2.--header "X-API-KEY: …"Votre clé Account API scopée. Placé en dernier car le flag accepte plusieurs en-têtes.Vérifier
Vérifier la connexion
Trois vérifications : depuis le terminal, dans une session, puis dans un chat. Aucune ne touche à un compte connecté.
1Depuis le terminalLa liste affiche un état de santé à côté de chaque serveur : ✔ Connected est ce que vous voulez ; ✘ Failed to connect pointe vers l'URL, ! Needs authentication vers l'en-tête, ⏸ Pending approval vers un serveur de projet pas encore approuvé.claude mcp list
claude mcp get unipile
2Dans une sessionTapez la commande slash dans Claude Code pour voir l'état du serveur et, pour un .mcp.json de scope project, l'approuver la première fois que vous ouvrez le dossier./mcp
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 Claude Code, 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 .Ajoute la messagerie WhatsApp à notre console de support : synchronise les conversations de chaque agent et permets-leur de répondre depuis le ticket.
Rechercher des endpoints"chats messages send"3 résultats
Exécuter la requêteGET /v2/{account_id}/chats9 chats
Création de
whatsapp/chat-sync.ts (chats et messages upsertés sur le ticket, pagination par curseur) et de POST /tickets/:id/reply qui appelle la route d'envoi sur le compte propriétaire du chat. Synchro exécutée sur l'application Development : 9 chats, 41 messages.Une inbox WhatsApp dans votre produit, en un seul prompt
Claude Code 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. LinkedIn, 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
API WhatsApp
account_id et chat_id ensemble, de l'appel de liste jusqu'à l'appel d'envoi.Permets aux utilisateurs d'envoyer des emails depuis la fiche contact via leur propre boîte mail Gmail ou Outlook, et regroupe les réponses en fil sur le contact.
Endpoint de lecturePOST /v2/{account_id}/emails/sendschéma chargé
Exécuter la requêteGET /v2/{account_id}/emails200 OK
Ajout de
POST /contacts/:id/email qui appelle la route d'envoi sur le compte de la boîte mail de l'utilisateur, l'option de réponse dans le fil via l'ID de thread, et la synchro entrante qui rattache les réponses au contact. Email de test envoyé depuis la boîte mail de l'application Development, réponse bien regroupée dans le fil.L'email depuis la boîte mail de l'utilisateur, regroupé en fil dans votre CRM
Gmail, Outlook et IMAP partagent un même schéma d'email. L'agent lit les contrats d'envoi et de liste, branche l'envoi sur la boîte mail que l'utilisateur a connectée via Hosted Auth, et conserve l'ID de thread pour que les réponses arrivent sur le bon contact.
Endpoints utilisés par l'agent
POST/v2/{account_id}/emails/sendGET/v2/{account_id}/emailsGET/v2/{account_id}/threads/{thread_id}
Erreur fréquente : Envoyer depuis une boîte mail technique partagée. Chaque email part du compte de l'utilisateur qui l'a connecté, pour que la réponse arrive dans son inbox.
API Email
Chaque workspace de mon SaaS compte plusieurs utilisateurs avec leurs propres comptes LinkedIn et email. Isole-les : un Scope et une clé scopée par workspace.
Rechercher des endpoints"scopes api-keys"4 résultats
Exécuter la requêtePOST /v2/scopes/201 · scope
À la création d'un workspace, le backend crée désormais un Scope et une clé Account API scopée stockée chiffrée sur le workspace, et chaque compte connecté par un membre est rattaché à ce Scope. Tous les appels de compte utilisent la clé du workspace. Testé avec deux workspaces sur l'application Development.
Beaucoup d'utilisateurs, beaucoup de comptes, une frontière par tenant
Les Scopes sont la frontière d'accès de l'API Unipile : une clé scopée ne voit que les comptes rattachés à son Scope. L'agent en fait votre modèle de tenant : la logique multi-comptes vit dans l'API plutôt que dans votre code.
Endpoints utilisés par l'agent
POST/v2/scopes/POST/v2/api-keys/GET/v2/accounts/
Erreur fréquente : Utiliser une seule clé Account globale pour tous les tenants. La clé globale reste sur votre backend pour l'administration ; chaque tenant reçoit sa propre clé scopée.
Comptes, Scopes et clés
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 à Claude Code 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 Claude Code
Scopedev-tests · 2 comptes
Clé
clé Account API scopéeComptesCompte 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 backendComptesles comptes de vos utilisateurs, via Hosted Auth
Dépannage
Erreurs fréquentes et leur signification
Les statuts et avertissements que Claude Code affiche quand une entrée MCP est incorrecte, tels qu'imprimés par claude mcp list et /mcp, et la correction de chacun.
✘ Failed to connect
claude mcp list affiche le serveur, mais le contrôle de santé échoue.
CorrectionLe champ url doit être exactement https://developer.unipile.com/mcp?branch=v2.0 avec --transport http. Claude Code relance trois fois une erreur passagère, mais jamais une erreur not-found ou d'authentification : corrigez l'URL ou l'en-tête, puis lancez claude mcp get unipile.
⏸ Pending approval
Un serveur de scope project issu de .mcp.json est listé mais non connecté.
CorrectionLancez claude dans le dossier, acceptez la boîte de dialogue de confiance du workspace, puis approuvez le serveur depuis /mcp. Un dépôt cloné ne peut pas approuver ses propres serveurs depuis des paramètres commités.
401 sur les requêtes
Le serveur est connecté, mais l'exécution d'une requête échoue.
CorrectionLa clé manque dans l'en-tête, 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.
Avertissement de variable manquante
claude mcp list signale que ${UNIPILE_API_KEY} n'est pas défini.
CorrectionExportez la variable dans le shell qui lance Claude Code, ou ajoutez une valeur par défaut avec la syntaxe ${UNIPILE_API_KEY:-} . Les variables non définies dans url ou headers peuvent être lues comme vides, ce qui finit en 401.
Espace caché dans headers.X-API-KEY
Un jeton collé avec un saut de ligne final.
CorrectionClaude Code nomme le champ dans claude mcp list et /mcp sans afficher la valeur. Ajoutez à nouveau le serveur avec la clé nettoyée ; Claude Code utilise les valeurs exactement telles qu'écrites.
Même nom dans plusieurs scopes
unipile existe dans les scopes user et project avec des paramètres différents.
CorrectionClaude Code se connecte une seule fois, avec la définition prioritaire (local, puis project, puis user), et signale le conflit. Supprimez le doublon avec claude mcp remove unipile --scope user ou gardez un seul scope par machine.
MCP endpoint not found at
Un 404 sur l'URL : le chemin est incorrect.
CorrectionL'URL complète est https://developer.unipile.com/mcp?branch=v2.0, paramètre branch compris. Vérifiez-la avec curl -I depuis votre machine, puis claude mcp get unipile.
/mcp affiche No MCP servers configured
Le fichier modifié n'est pas lu par Claude Code.
CorrectionClaude Code lit ~/.claude.json et .mcp.json à la racine du projet uniquement, jamais ~/.claude/mcp.json, ~/.claude/.mcp.json ou ~/.claude/config/mcp.json. Redémarrez aussi la session : .mcp.json est lu au démarrage.
Le shell rejette l'URL, ou branch manque
zsh interprète le ? de ?branch=v2.0 comme un motif.
CorrectionMettez toujours l'URL entre guillemets dans claude mcp add. Sans guillemets, zsh répond "no matches found" et bash peut supprimer le paramètre, ce qui vous connecte à la mauvaise version de l'API.
Démarrage lent ou timeout
Le serveur met plus que les 30 s par défaut à démarrer.
CorrectionAugmentez la limite pour cette session : MCP_TIMEOUT=60000 claude. Si vous avez refusé un serveur de projet à l'invite d'approbation, claude mcp reset-project-choices fait réapparaître l'invite.
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
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
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 Claude Code
Les questions réellement posées : scopes, emplacement de la configuration, clés hors du dépôt, en-têtes personnalisés, Failed to connect, guillemets autour de l'URL, modifications de .mcp.json et clés API.
Local est le scope par défaut : stocké dans
~/.claude.json sous le projet courant, privé et limité à ce projet. Project écrit .mcp.json à la racine du dépôt et se partage via le contrôle de version. User écrit ~/.claude.json sous la clé racine mcpServers et s'applique à tous vos projets. L'ordre de priorité est local, puis project, puis user. Pour Unipile : --scope user pour votre clé de développement personnelle, --scope project quand toute l'équipe travaille sur la même intégration.Dans
~/.claude.json (sous Windows %USERPROFILE%\.claude.json) pour les scopes local et user, et dans .mcp.json à la racine du projet pour le scope project. Claude Code ne lit pas ~/.claude/.mcp.json, ~/.claude/config/mcp.json, ~/.claude/mcp.json ou %APPDATA%\Claude\mcp.json. claude mcp get unipile vous indique dans quel scope se trouve une entrée.Claude Code développe
${VAR} et ${VAR:-default} dans command, args, env, url et headers. Écrivez "X-API-KEY": "${UNIPILE_API_KEY}" dans .mcp.json, commitez le fichier, et chaque développeur fournit sa propre clé scopée via son environnement. Si la variable n'est pas définie et n'a pas de valeur par défaut, la configuration se charge quand même et claude mcp list affiche un avertissement.Oui :
--header "X-API-KEY: your-scoped-api-key", répétable pour plusieurs en-têtes, forme courte -H. Placez-le après l'URL, car le flag accepte plusieurs valeurs. Le serveur Unipile est un serveur HTTP distant : rien à installer en local, pas de npx, pas de Node à gérer.Lancez
claude mcp get unipile pour le détail (statut HTTP et message d'erreur), vérifiez les avertissements d'espaces en début ou en fin de valeur que claude mcp list affiche après une clé collée, et confirmez que l'URL répond depuis votre machine avec curl -I. Un 404 affiche MCP endpoint not found at <origin> : le chemin est incorrect, l'URL complète est https://developer.unipile.com/mcp?branch=v2.0, paramètre branch compris.L'URL contient un
?, que zsh lit comme un caractère de motif. Mettez toujours l'URL entre guillemets dans claude mcp add. Sans guillemets, zsh répond "no matches found" et bash peut supprimer le paramètre branch , ce qui vous connecte à la mauvaise version du serveur.Claude Code lit
.mcp.json au démarrage de la session : quittez et relancez. Une entrée mal formée est ignorée sans message, et claude mcp list affiche l'avertissement d'analyse avec le champ fautif. Si vous avez refusé le serveur à l'invite d'approbation du projet, lancez claude mcp reset-project-choices.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 uniquement les comptes concernés 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.