Serveur MCP pour assistants IA
Reliez Claude Code, Claude Desktop ou Cursor à votre espace de travail via le Model Context Protocol : configurations prêtes, catalogue d’outils, permissions et forfaits.
Mis à jour le 14 août 2026
Le serveur MCP permet à un assistant IA de travailler directement avec vos liens et vos statistiques : « raccourcis cette page de destination sur notre domaine de marque », « quels sont les cinq liens qui ont récolté le plus de clics la semaine dernière », « mets en sourdine la règle d’alerte du domaine de campagne jusqu’à lundi ». L’assistant passe pour cela par la même API publique que vous appelleriez vous-même, avec exactement les droits de la clé avec laquelle vous l’avez connecté.
https://api.linkprofit.com/v1/mcp
Le transport est JSON-RPC 2.0 sur HTTP, suivant la révision 2025-06-18 du
Model Context Protocol (la révision 2025-03-26 est acceptée elle aussi). Il
n’y a ni flux d’événements ouvert par le serveur, ni état de session : GET
et DELETE répondent 405, aucun Mcp-Session-Id n’est émis, et chaque
requête porte dans la clé elle-même tout le contexte dont elle a besoin.
N’importe quel client MCP qui parle HTTP fonctionne — les trois ci-dessous
sont simplement ceux pour lesquels nous fournissons des configurations à
copier-coller.
1. Créer une clé pour l’assistant
Dans votre tableau de bord, ouvrez Réglages → Clés API et créez une
clé d’espace de travail (lp_live_…). Ne lui accordez que les portées que
l’assistant doit réellement avoir — le catalogue d’outils ci-dessous indique
ce dont chaque outil a besoin. Une clé avec links:read + analytics:read
vous donne un assistant en lecture seule, capable de répondre aux questions
mais incapable de rien changer.
La valeur complète de la clé n’est affichée qu’une fois. Traitez-la comme un mot de passe : elle va se retrouver dans un fichier de configuration sur votre machine.
2. Ajouter le serveur à votre client
Claude Code
Une seule commande, aucun fichier de configuration à éditer :
claude mcp add --transport http linkprofit https://api.linkprofit.com/v1/mcp \
--header "Authorization: Bearer lp_live_…your key…"
Ajoutez --scope user pour rendre le serveur disponible dans tous les projets
de votre machine plutôt que dans le seul projet courant. Vérifiez le résultat
avec claude mcp list, et retirez-le plus tard avec
claude mcp remove linkprofit.
Claude Desktop
Éditez le fichier de configuration — sur macOS
~/Library/Application Support/Claude/claude_desktop_config.json, sur Windows
%APPDATA%\Claude\claude_desktop_config.json — et ajoutez le serveur :
{
"mcpServers": {
"linkprofit": {
"type": "http",
"url": "https://api.linkprofit.com/v1/mcp",
"headers": {
"Authorization": "Bearer lp_live_…your key…"
}
}
}
}
Redémarrez Claude Desktop. Les outils apparaissent dans le sélecteur d’outils d’une nouvelle conversation.
Cursor
Créez .cursor/mcp.json dans le projet (ou ~/.cursor/mcp.json pour l’avoir
partout) :
{
"mcpServers": {
"linkprofit": {
"url": "https://api.linkprofit.com/v1/mcp",
"headers": {
"Authorization": "Bearer lp_live_…your key…"
}
}
}
}
Cursor prend le fichier en compte à l’enregistrement et affiche le serveur dans Settings → MCP.
Vérifier la connexion à la main
Les problèmes d’un client, quel qu’il soit, se lisent plus facilement au niveau du protocole. Voici la poignée de main que les clients effectuent :
curl -s -X POST https://api.linkprofit.com/v1/mcp \
-H "Authorization: Bearer $LINKPROFIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": { "name": "curl", "version": "1.0" }
}
}'
Une réponse saine nomme la version du protocole, le serveur et sa capacité
d’outils. Remplacez la méthode par tools/list pour voir le catalogue, et par
ping pour ne vérifier rien de plus que l’accessibilité.
Outils
Dix outils, tous limités à l’espace de travail auquel appartient la clé. La colonne des portées indique ce que la clé doit porter ; un outil dont la clé n’a pas la portée échoue simplement à l’appel, il n’est pas masqué du catalogue.
| Outil | Ce qu’il fait | Portée requise |
| --- | --- | --- |
| list_links | Lister les liens courts de l’espace de travail, éventuellement filtrés par une chaîne de recherche | links:read |
| get_link | Lire un lien par son identifiant | links:read |
| create_link | Créer un lien court ; sans domain_id, le domaine par défaut de l’espace de travail est utilisé | links:write |
| update_link | Changer la destination ou le titre d’un lien existant | links:write |
| analytics_summary | Clics, visiteurs et scans QR sur une période, éventuellement pour un seul lien | analytics:read |
| analytics_breakdown | Clics et visiteurs répartis par pays, ville, appareil, navigateur, système, référent ou UTM | analytics:read |
| analytics_top_links | Les liens les plus cliqués de la période, avec clics et visiteurs | analytics:read |
| analytics_timeseries | Clics et visiteurs dans le temps, par heure, jour ou semaine | analytics:read |
| list_alert_rules | Lister les règles d’alerte avec leurs canaux et leur fenêtre anti-répétition | alerts:read |
| update_alert_rule | Activer, désactiver ou réajuster la fenêtre anti-répétition d’une règle d’alerte | alerts:write |
Les schémas d’arguments proviennent des définitions mêmes qui valident
l’appel : ce qu’on dit à l’assistant d’un outil et ce que le serveur accepte
réellement ne peuvent donc pas diverger. Les outils en lecture seule sont
annotés comme tels, et c’est ce qui permet à un client de demander
confirmation avant les trois outils qui modifient des données :
create_link, update_link et update_alert_rule — plus tout ce qu’une
version future ajoutera à cette liste.
Chaque appel d’outil qui modifie quelque chose est inscrit au journal d’audit de l’espace de travail, avec la clé qui l’a effectué et la mention qu’il est arrivé par MCP : les changements d’un assistant sont donc aussi traçables que ceux d’une personne.
Permissions et sécurité
La clé est la frontière des permissions. Il n’existe pas de « mode
assistant » privilégié : un appel d’outil s’exécute avec les portées de la
clé, dans l’espace de travail de la clé, sous la même limite de débit et la
même isolation entre locataires qu’un appel REST. Un identifiant venu d’un
autre espace de travail donne not_found, exactement comme en REST.
Trois habitudes à prendre :
- Donnez à l’assistant sa propre clé, jamais celle qu’utilise votre intégration de production. La révoquer ne coûte alors rien.
- Commencez en lecture seule.
links:read+analytics:readcouvre les questions de reporting que les gens posent réellement à un assistant. N’ajoutezlinks:writeque le jour où vous voulez créer des liens depuis la conversation. - Faites une rotation en cas d’exposition. Une clé dans un fichier de
configuration voyage avec les sauvegardes, les partages d’écran et les
tickets de support. Révoquez-la dans le tableau de bord dès qu’elle fuite ;
la requête suivante répond
401.
La limite de débit est partagée avec l’API REST — par clé, sur une fenêtre glissante d’une minute — si bien qu’un assistant bavard et une tâche de fond sur la même clé se disputent le même budget. C’est un argument de plus pour une clé séparée. Voir Limites de débit pour les en-têtes et les règles de reprise.
Exigences de forfait
Deux fonctionnalités de forfait conditionnent l’endpoint :
api_access— le droit d’utiliser l’API tout court ;assistant_tools— le droit d’utiliser le catalogue d’outils, et donc MCP.
Les deux se règlent sur le forfait de votre espace de travail. Un espace dont
le forfait n’inclut pas l’une des deux reçoit 403 avec le code
plan_restricted et un message qui nomme la capacité manquante. Si vous
revendez LinkProfit sous votre propre marque, c’est une fonction que vous
décidez d’inclure dans un forfait ou de vendre comme montée en gamme.
Dépannage
403 plan_restricted — le forfait n’inclut pas assistant_tools (ou
api_access). Passez au forfait supérieur ; ni la clé ni la configuration du
client n’y changeront quoi que ce soit.
401 unauthorized — l’en-tête est absent, mal formé, ou la clé est
inconnue, révoquée ou expirée. Les trois cas sont volontairement
indiscernables. Vérifiez que la valeur est la clé entière, qu’elle est
préfixée par Bearer , et que le client envoie bien l’en-tête — la poignée de
main curl ci-dessus répond à cette question en une seule requête.
403 forbidden — une clé partenaire (lpp_live_…) a été utilisée. MCP est
une surface d’espace de travail ; créez une clé d’espace de travail.
429 rate_limited — la clé a épuisé sa fenêtre. La réponse porte
Retry-After ; les clients qui réessaient immédiatement ne font que maintenir
la clé bloquée.
405 sur GET — attendu, ce n’est pas une panne. Le serveur n’offre aucun
flux d’événements et ne garde aucune session ; un client qui ne parle que le
transport fondé sur SSE des révisions plus anciennes ne peut pas se connecter.
Un outil répond par une erreur au lieu de données — deux choses
différentes se ressemblent dans une transcription de conversation. Des
arguments qui échouent à la validation reviennent sous forme de résultat
d’outil marqué comme erreur, listant les champs fautifs, et l’assistant peut
se corriger et réessayer. Une portée manquante revient sous forme d’erreur de
protocole, avec le code insufficient_scope et la portée nommée : celle-là
demande une nouvelle clé, pas une nouvelle tentative.
Pour aller plus loin
- Authentification — les clés, la liste complète des portées, la rotation.
- Erreurs — chaque code d’erreur et la façon de le traiter.
- Référence de l’API — les endpoints REST derrière les outils.
- Bibliothèques clientes — les mêmes opérations depuis votre propre code.