Aller au contenu
LinkProfit

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:read couvre les questions de reporting que les gens posent réellement à un assistant. N’ajoutez links:write que 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