Passer au contenu principal

Ajouter des serveurs MCP

En ligne de commande

Le moyen le plus rapide d’ajouter un serveur MCP :
Le type de transport est déduit automatiquement : une URL implique HTTP (Streamable HTTP), et des arguments en fin de commande (ou --command) impliquent stdio.
Les serveurs MCP distants utilisent Streamable HTTP par défaut. Si le serveur répond avec une erreur HTTP 4xx, la CLI bascule vers SSE sur la même URL. Définissez "transport": "sse" explicitement si nécessaire — voir basculement vers l’ancien SSE ci-dessous.
Par défaut, les serveurs sont enregistrés dans le périmètre local (.devin/config.local.json, ignoré par Git). Utilisez -s/--scope pour le modifier :
Vous pouvez également gérer les serveurs en ligne de commande :

Via un fichier de configuration

Ajoutez des serveurs directement dans la section mcpServers de votre fichier de configuration :
Les serveurs définis au niveau du projet sont partagés avec votre Team via le contrôle de version.

Options de configuration des serveurs

Les serveurs MCP peuvent être configurés de deux manières : comme commande locale (transport stdio) ou comme serveur distant (transport HTTP).

Commande locale (stdio)

Serveur distant (Streamable HTTP)

Exemples

Après avoir ajouté un serveur utilisant OAuth, exécutez devin mcp login notion pour vous authentifier. Voir Authentification ci-dessous.
Après l’avoir ajouté, exécutez devin mcp login atlassian pour vous authentifier. Chaque client MCP (Windsurf, Claude Code, Devin CLI) conserve sa propre session OAuth. Vous devez donc vous connecter séparément, même si vous vous êtes déjà authentifié dans un autre outil.

Authentification

Certains serveurs MCP distants nécessitent une authentification OAuth. Après avoir ajouté un serveur utilisant OAuth à votre configuration, authentifiez-vous à l’aide de la commande login :
Par exemple :
Cela ouvre une fenêtre de navigateur dans laquelle vous pouvez autoriser l’accès. Les tokens OAuth sont stockés localement et renouvelés automatiquement. Vous pouvez également demander des périmètres OAuth spécifiques :
Pour supprimer les identifiants OAuth enregistrés pour un serveur :
Si le serveur prend en charge OAuth, une invite d’authentification s’affichera également automatiquement lors de sa première utilisation.

Clients OAuth préenregistrés

La plupart des serveurs MCP utilisant OAuth prennent en charge l’enregistrement dynamique des clients (DCR). Devin CLI s’enregistre donc automatiquement, et vous n’avez pas besoin de fournir d’identifiants client. Certains fournisseurs (p. ex. GitHub) ne prennent pas en charge la DCR et exigent à la place un client OAuth préenregistré. Pour ces fournisseurs, indiquez le Client ID — ainsi qu’un secret client s’il s’agit d’un client confidentiel — via oauthClientId / oauthClientSecret :
Lorsque oauthClientId est défini, Devin CLI ignore l’enregistrement dynamique du client et utilise votre client préenregistré lors du flux OAuth. Exécutez devin mcp login <name> (ou déclenchez l’authentification lors de la première utilisation) pour vous authentifier comme d’habitude. Vous pouvez également les définir depuis la ligne de commande lors de l’ajout d’un serveur ou de la connexion à celui-ci :
oauthClientId / oauthClientSecret sont des identifiants client OAuth utilisés dans le cadre du flux d’autorisation. Il ne s’agit pas d’identifiants génériques envoyés à chaque requête — si un serveur attend un token statique, utilisez plutôt headers (HTTP) ou env (stdio).
N’ajoutez pas de client secret à une configuration partagée. Référencez-le via une variable d’environnement (${env:VAR}), lisez-le à partir d’un fichier (${file:/path}) ou placez-le dans .devin/config.local.json (ignoré par Git). Consultez la section “Gestion des secrets” ci-dessous.

Dérogation de la ressource OAuth

Lors de l’autorisation OAuth et de l’échange de jetons, Devin CLI envoie un paramètre resource conforme à la RFC 8707 afin que le serveur d’autorisation puisse émettre des jetons restreints à une audience donnée. Par défaut, la valeur correspond à l’URL du serveur MCP. Remplacez-la par oauthResource :
Le champ peut se comporter de trois façons :
  • Non défini (par défaut) : envoie resource avec comme valeur l’URL du serveur MCP.
  • Valeur non vide : remplace la valeur par défaut par votre valeur (p. ex. un URI d’ID d’application spécifique).
  • Chaîne vide ("") : omet entièrement le paramètre resource à la fois de l’URL d’autorisation et de l’échange du jeton.
Vous pouvez également le définir depuis la ligne de commande lors de l’ajout d’un serveur ou de la connexion à un serveur :
Comme les autres champs OAuth, oauthResource prend en charge l’expansion des variables ${env:VAR} et ${file:/path}.

Activation et désactivation des serveurs

Vous pouvez temporairement désactiver un serveur MCP sans supprimer sa configuration. Un serveur désactivé est ignoré lors de la découverte des outils : ses outils n’apparaîtront pas et le processus du serveur ne sera pas lancé.
Cette commande définit l’indicateur "disabled": true pour l’entrée de serveur dans le fichier de configuration. Utilisez -s/--scope pour cibler un périmètre spécifique :
Vous pouvez également définir cette option directement dans votre fichier de configuration :
Désactiver un serveur est utile lorsque vous souhaitez conserver sa configuration (y compris les variables d’environnement et les identifiants OAuth) tout en cessant temporairement de l’utiliser — par exemple, pour réduire le temps de démarrage ou isoler un problème.

Gestion des secrets

N’ajoutez jamais de clés API ou de secrets au contrôle de version. Utilisez .devin/config.local.json pour les données sensibles.
Pour les projets d’équipe, la méthode recommandée est la suivante :
  1. Définissez le serveur dans .devin/config.json avec des espaces réservés pour les variables d’environnement, ou sans variables d’environnement
  2. Chaque membre de l’équipe ajoute ses clés personnelles dans .devin/config.local.json
Le fichier de configuration local est automatiquement exclu de git.

Autorisations MCP

Vous pouvez approuver à l’avance, refuser ou toujours demander pour des outils MCP spécifiques dans votre configuration des autorisations :
Motifs de correspondance des autorisations :

Restrictions de l’organisation

Si vous faites partie d’une Team Enterprise, votre administrateur peut limiter les serveurs MCP auxquels vous pouvez vous connecter. Un serveur que vous avez configuré peut être bloqué si MCP est désactivé pour votre Team, ou s’il ne figure pas dans la liste d’autorisation de votre Team ni dans un registre MCP imposé — auquel cas il ne pourra pas se connecter et ses outils ne seront pas disponibles. Voir Team Settings — MCP Registry pour plus de détails.

Dépannage

Si vous voyez des erreurs comme Auth required ou AuthRequired lors de la connexion à un serveur MCP distant, cela signifie que le serveur nécessite une authentification OAuth.Exécutez :
Chaque client MCP s’authentifie indépendamment. Même si vous vous êtes déjà authentifié dans Windsurf ou Claude Code, vous devez exécuter devin mcp login séparément pour Devin CLI.Pour vérifier votre statut d’authentification, essayez de supprimer puis de rajouter les identifiants :
Vérifiez que la commande fonctionne en dehors de Devin CLI :
Vérifiez que toutes les variables d’environnement requises sont bien définies.
Demandez à l’agent de lister les serveurs MCP et les outils. Le serveur peut avoir besoin d’un instant pour s’initialiser.
Vérifiez la configuration de vos autorisations. Par défaut, les outils MCP demandent une approbation. Ajoutez-les à permissions.allow pour les approuver automatiquement.
Certains serveurs d’autorisation rejettent les requêtes OAuth qui incluent le paramètre resource de la RFC 8707. Définissez oauthResource sur une chaîne vide afin d’omettre ce paramètre :
Authentifiez-vous de nouveau ensuite :
Consultez Dérogation de la ressource OAuth pour obtenir la liste complète des comportements de oauthResource.
Lors de la connexion à un serveur HTTP, Devin CLI essaie d’abord Streamable HTTP. Si le serveur renvoie une erreur HTTP 4xx (p. ex. 404 ou 405), il bascule automatiquement vers l’ancien SSE sur la même URL configurée. Cela suit les recommandations de rétrocompatibilité de la spécification MCP.Le basculement ne se déclenche que pour les réponses 4xx — les erreurs de connexion, les délais d’expiration et les réponses 5xx sont signalés directement, sans tentative SSE.Si l’endpoint SSE de votre serveur se trouve sur un chemin différent (p. ex. /sse au lieu de /mcp), définissez "transport": "sse" avec l’URL SSE pour vous connecter directement, sans tentative préalable via Streamable HTTP.Si les deux transports échouent, le message d’erreur inclut les détails des deux tentatives pour faciliter le dépannage.