🤖
Agents IA (MCP)·Intermédiaire·8 min

Émettre un token MCP pour un agent IA autonome

Créez, gérez et révoquez des tokens MCP dédiés aux agents IA autonomes afin de leur accorder un accès granulaire et auditable aux ressources de votre workspace Coffrify.

Télécharger en PDF

Les tokens MCP (Model Context Protocol) sont distincts des clés API classiques : ils sont émis spécifiquement pour des agents IA autonomes (Claude Desktop, Cursor, Cline, etc.) et tracés dans la table coffrify_mcp_tokens. Ils partagent le même catalogue de scopes et les mêmes mécanismes d'expiration et de liste blanche IP que les clés API, mais leurs flux d'audit, d'activité et de révocation sont isolés pour ne pas polluer les logs de vos intégrations serveur.

GET/v1/mcp/tokensListe tous les tokens MCP actifs et révoqués du workspace, triés par date de création décroissante.POST/v1/mcp/tokensCrée un nouveau token MCP. Le secret brut est retourné une seule fois dans la réponse.
PATCH/v1/mcp/tokens/{id}Modifie un token existant (nom, description, scopes, liste IP, activation/désactivation).
DELETE/v1/mcp/tokens/{id}Révoque définitivement un token MCP avec une raison optionnelle.POST/v1/mcp/tokens/{id}/rotateRévoque le token existant après une fenêtre de grâce et émet un token de remplacement avec les mêmes paramètres.

Authentification

Toutes les opérations sur les tokens MCP requièrent le scope api_keys:manage. Transmettez votre clé API dans l'en-tête Authorization: Bearer cof_live_… ou Authorization: Bearer cof_test_…. Sans ce scope, l'API renvoie 403 scope_missing.

Corps de la requête, POST /v1/mcp/tokens

ChampTypeRequisDescription
namestringOuiNom lisible du token (ex. : "Agent fiscal Q1").
descriptionstringNonNote interne libre.
scopesstring[]NonListe de scopes accordés. Défaut : ["transfers:read"]. Au moins un scope requis.
environmentstringNonEnvironnement cible : "live" (défaut) ou "test". Détermine le préfixe cof_mcp_live_… / cof_mcp_test_….
client_hintstringNonClient MCP ciblé. Valeurs autorisées : claude-desktop, claude, cursor, cline, continue, custom.
expires_in_daysnumberNonDurée de validité en jours. Si absent, le token n'expire pas.
allowed_ipsstring[]NonCIDR ou IP autorisés. Si absent, aucune restriction IP.
max_usesnumberNonNombre maximal d'utilisations avant invalidation automatique.

Corps de la requête, PATCH /v1/mcp/tokens/{id}

ChampTypeRequisDescription
namestringNonNouveau nom du token.
descriptionstring | nullNonNouvelle description (passer null pour l'effacer).
is_activebooleanNonDésactiver (false) ou réactiver (true) sans révoquer définitivement.
scopesstring[]NonRemplace la liste de scopes. Au moins un scope requis.
allowed_ipsstring[]NonRemplace la liste blanche IP.

Exemples d'appel

# Créer un token MCP pour Claude Desktop
curl -X POST https://api.coffrify.com/v1/mcp/tokens \
-H "Authorization: Bearer cof_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Agent fiscal Q1",
"description": "Lecture seule pour le rapprochement bancaire",
"scopes": ["transfers:read", "documents:read"],
"environment": "live",
"client_hint": "claude-desktop",
"expires_in_days": 90
}'

Réponse

La création (POST) retourne un HTTP 201 avec le token brut dans le champ token. Ce champ n'est exposé qu'une seule fois. Seul le préfixe (ex. : cof_mcp_live_3a7f9b2c...) est conservé en base pour identification.

{
"id": "tmcp_01HXYZ4K9QW2NBVR3D7GFPC8A1",
"name": "Agent fiscal Q1",
"description": "Lecture seule pour le rapprochement bancaire",
"token_prefix": "cof_mcp_live_3a7f9b2c...",
"token": "cof_mcp_live_3a7f9b2ce4d1f08a6b5c9e3d7a2f1b4c8e6d0f9a3b2c1d5e7f4a0b8c2d3e6f1",
"scopes": ["transfers:read", "documents:read"],
"environment": "live",
"client_hint": "claude-desktop",
"allowed_ips": null,
"expires_at": "2026-09-04T14:30:00.000Z",
"max_uses": null,
"created_at": "2026-06-06T14:30:00.000Z",
"warning": "Save this token now - it will not be shown again."
}

La rotation (POST /v1/mcp/tokens/{id}/rotate) retourne également un HTTP 201 avec la structure suivante :

{
"new_token": "cof_mcp_live_b8d2e1f4a7c3b9e5d0f2a6c1b3d7e9f0a2c4b6d8e1f3a5c7b9d2e4f6a8c0b2",
"new_prefix": "cof_mcp_live_b8d2e1f4...",
"old_id": "tmcp_01HXYZ4K9QW2NBVR3D7GFPC8A1",
"new_id": "tmcp_01HYGQ8M3RT5NCWS4E9HGPD2B7",
"grace_expires_at": "2026-06-13T14:30:00.000Z",
"warning": "Save this token now - it will not be shown again."
}

Erreurs

HTTPCodeQuandRésolution
400validation_errorname absent au POST, scopes vide, client_hint invalide, reason de révocation dépassant 200 caractères, PATCH sans champ valide.Vérifiez la présence du champ name, que scopes contient au moins un élément et que client_hint appartient aux valeurs autorisées.
401missing_api_key / invalid_api_keyEn-tête Authorization absent ou clé inconnue.Passez votre clé API dans Authorization: Bearer cof_live_….
403scope_missingLa clé appelante ne possède pas le scope api_keys:manage.Émettez une clé disposant du scope api_keys:manage.
404not_foundL'id du token ne correspond à aucun enregistrement dans le workspace.Vérifiez l'id retourné lors de la création.
422validation_errorTentative de rotation sur un token déjà révoqué.Créez directement un nouveau token via POST.
500internal_errorErreur base de données inattendue.Réessayez ; si l'erreur persiste, contactez le support Coffrify.

Bonnes pratiques

Voir aussi

  • Créer une clé API
  • Comprendre les scopes de l'API Coffrify
  • Configurer un serveur MCP Coffrify
  • Révoquer une clé API
  • Événements webhook liés aux clés
Continuer

Autres tutoriels à suivre