Connecter Claude à votre CRM LinkedIn avec MCP
Swimlane embarque un serveur MCP : branchez Claude, Cursor ou l'API OpenAI sur votre espace de travail et demandez le travail au lieu d'écrire les appels. Installation, cinq exemples réels, garde-fous.
Par Swimlane 5 min de lecture
Une API, c’est quelque chose contre quoi on écrit du code. Un serveur MCP, c’est la même surface tendue à un assistant IA : vous décrivez le résultat, il passe les appels.
Celui de Swimlane est sur https://api.getswimlane.com/mcp. Il expose tout le produit sous forme d’outils — imports de sourcing, contacts, listes, tags, pipelines, rappels, campagnes, file d’arrière-plan et consommation quotidienne — authentifié par le même jeton d’API, limité en débit et journalisé comme n’importe quel appel.
Installation
Créez un jeton dans Réglages → API, puis déclarez le serveur dans votre client. La page Réglages affiche ces extraits avec votre hôte déjà renseigné.
Claude Code
claude mcp add --transport http swimlane \
https://api.getswimlane.com/mcp \
--header "Authorization: Bearer wpa_votre_jeton"
Claude Desktop — claude_desktop_config.json
{
"mcpServers": {
"swimlane": {
"type": "http",
"url": "https://api.getswimlane.com/mcp",
"headers": {"Authorization": "Bearer wpa_votre_jeton"}
}
}
}
Cursor — ~/.cursor/mcp.json prend la même forme mcpServers, sans le type. VS Code — .vscode/mcp.json utilise servers au lieu de mcpServers. OpenAI — une entrée de tools[] sur l’API Responses :
{
"type": "mcp",
"server_label": "swimlane",
"server_url": "https://api.getswimlane.com/mcp",
"headers": {"Authorization": "Bearer wpa_votre_jeton"},
"require_approval": "never"
}
Cinq demandes qui valent le détour
Ce ne sont pas des hypothèses : chacune nomme les outils que l’assistant va chercher.
1. Sourcer une liste sans ouvrir LinkedIn
« Prends tous les gens qui ont commenté ce post, mets-les dans une liste Commentateurs webinaire, et continue à la remplir :
https://www.linkedin.com/posts/…»
Un seul appel start_import, avec source: post_engagement et recurring: true. Vous récupérez la liste ; les contacts arrivent dans les minutes qui suivent, à mesure que le worker d’arrière-plan les collecte, et la liste se recharge toutes les deux ou trois heures. Demandez « c’est fini ? » et il lit list_queue_tasks.
2. La question du lundi matin
« Où en sont mes campagnes, et est-ce que quelque chose est bloqué ? »
list_campaigns, puis get_campaign_stats sur chacune. Si l’une est devenue muette, la suite est plus intéressante : get_account_usage met chaque compteur journalier à côté de son plafond, et list_queue_tasks montre ce qui a échoué. « Votre séquence Acme n’envoie plus rien depuis mardi parce que la limite d’invitations est à 20/20 chaque matin » vaut mieux qu’un graphique.
3. Rédiger une séquence et se la faire relire en français
« Prépare une séquence en trois étapes pour la liste Engagés Acme : invitation, trois jours d’attente, message à ceux qui ont accepté, tag pour les autres. »
list_lists pour retrouver la liste, create_campaign pour ouvrir un brouillon, replace_campaign_steps pour poser l’arbre ramifié. Les règles du flux vivent dans la description de l’outil, donc l’assistant met le bon branchKey au lieu d’inventer une branche qui terminerait la séquence en silence.
Il s’arrête au brouillon. Le démarrage est un outil séparé, et c’est volontaire : relisez les étapes dans l’app d’abord.
4. Trouver les contacts qu’on ne pourra jamais contacter
« Dans la liste Importés du CSV, quels contacts n’ont pas de profil LinkedIn ? Tague-les
profil-manquant. »
search_contacts limité à la liste, puis il lit linkedinId sur chaque ligne et applique set_contact_tags à ceux qui sont vides. C’est la panne qui se manifeste sinon des semaines plus tard, sous forme d’étapes de campagne qui finissent discrètement en failed : sans identité LinkedIn, un contact est une fiche CRM et rien d’autre.
5. Un rappel en une phrase
« Rappelle-moi de relancer Sofia Marchetti dans deux semaines à propos de la question de tarif. »
search_contacts pour Sofia, create_reminder sur sa fiche, échéance à quatorze jours. Ça atterrit dans l’app à côté de la conversation, pas dans une note que vous ne rouvrirez jamais.
Les garde-fous
- Deux outils envoient.
start_campaignetresume_campaignmettent de vraies invitations et de vrais messages devant de vraies personnes, depuis votre propre compte LinkedIn. Leurs descriptions le disent, et ils sont marqués comme tels pour que votre client demande confirmation. Laissez cette confirmation active. - Le jeton, c’est vous. Il agit comme son propriétaire, sur la session LinkedIn de cette personne, dans son espace de travail — il ne voit donc jamais les campagnes d’un collègue, et les limites quotidiennes qui protègent le compte s’appliquent exactement comme dans l’app.
- Chaque appel d’outil est un appel d’API. Il compte dans la limite des 100 par minute et apparaît dans Réglages → API avec sa méthode, son chemin et son statut. Rien de ce qu’un assistant fait par le serveur ne vous est invisible après coup.
- Les outils destructeurs sont marqués. Supprimer un contact, une campagne ou un import récurrent porte l’annotation qui indique à un client bien élevé de demander confirmation.
- Il est surtout fait pour lire. L’essentiel du catalogue est en lecture seule : recherche, statistiques, quotas, file d’attente. Son meilleur usage est de répondre à des questions sur un espace de travail que vous devriez sinon parcourir à la souris.
Ce qu’il ne fait pas
Il n’a pas accès au contenu de votre messagerie. Les modèles de message font partie d’une campagne, mais les conversations ne sont pas exposées : un assistant peut vous dire que quelqu’un a répondu, pas ce qu’il a écrit.
Il n’existe pas non plus de « rédige ça et envoie-le tout de suite » : composer un message pour une personne se fait toujours dans l’app, là où vous voyez le fil.
Si vous préférez écrire les appels vous-même, tout ce qui précède est aussi du simple HTTP — voir ce que l’API publique sait vraiment faire, ou la référence sur api.getswimlane.com/docs.