ConfigurationMCP

Authentification OAuth MCP

Connecte-toi aux serveurs MCP nécessitant un accès délégué par l'utilisateur avec OAuth 2.1. Bob gère le processus d'authentification et de rafraîchissement des tokens afin que tu n'aies pas besoin de gérer les tokens manuellement.

Pour la configuration générale de MCP, consulte Utiliser MCP dans Bob.

Vue d'ensemble

Tu peux connecter Bob à des serveurs Model Context Protocol (MCP) qui agissent en ton nom, par exemple pour accéder à tes dépôts de code, tes services cloud ou tes outils internes. Ces serveurs utilisent OAuth 2.1 afin que tu puisses te connecter et approuver l'accès.

Bob gère directement le flux d'authentification. Lorsque tu configures un serveur nécessitant OAuth, Bob affiche une demande d'authentification dans les paramètres MCP. Tu peux cliquer sur le bouton pour ouvrir ton fournisseur d'identité dans une fenêtre de navigateur, effectuer ta connexion et approuver les autorisations. Bob stocke et rafraîchit tes tokens d'accès sans que tu aies besoin de manipuler des identifiants manuellement.

Utilise OAuth quand :

  • Tu dois accéder à des ressources associées à ton compte utilisateur personnel ou d'entreprise
  • Le serveur utilise des tokens de courte durée qui nécessitent un rafraîchissement automatique des tokens
  • Tu souhaites garder les identifiants et secrets statiques en dehors de tes fichiers de configuration

Lorsque tu disposes déjà d'un token d'API statique ou d'un jeton d'accès personnel qui n'expire pas, tu peux utiliser à la place un token Bearer dans headers.

Comment fonctionne le flux d'authentification

  1. Tu ajoutes l'URL du serveur MCP distant à ton fichier de configuration sans identifiants headers ou env.
  2. Lorsque Bob se connecte au serveur, Bob détecte les exigences OAuth.
  3. Bob ouvre une fenêtre de connexion de navigateur où tu vérifies les autorisations demandées et approuves l'accès.
  4. Bob reçoit les tokens d'autorisation et les stocke de manière sécurisée d'une session à l'autre.
  5. Bob rafraîchit automatiquement les tokens avant leur expiration afin que tu puisses travailler sans interruption.
Bob IDE                     Authorization Server              MCP Server
   |                                |                               |
   |-- connect to server ---------->|                               |
   |<-- OAuth metadata (401) -------|                               |
   |-- open auth prompt ----------->|                               |
   |   (user signs in & consents)   |                               |
   |<-- authorization code ---------|                               |
   |-- exchange for tokens -------->|                               |
   |<-- access + refresh tokens ----|                               |
   |-- authenticated requests --------------------------------->    |
   |   (auto-refresh when needed)                                   |

Configurer un serveur compatible OAuth

Tu peux configurer tes serveurs MCP soit dans ta configuration globale (~/.bob/mcp_settings.json), soit dans la configuration de ton projet (.bob/mcp.json).

Configuration minimale (découverte automatique)

Lorsque ton serveur MCP propose la découverte automatique des métadonnées OAuth, tu n'as besoin de spécifier que l'url :

{
  "mcpServers": {
    "my-oauth-server": {
      "url": "https://mcp.example.com/mcp"
    }
  }
}

Bob détecte les exigences OAuth lors de la connexion et te guide tout au long du processus de connexion dans le navigateur.

Paramètres OAuth personnalisés

Lorsque ton fournisseur d'identité requiert un ID client préenregistré, des scopes personnalisés ou un secret client, configure l'objet oauth :

{
  "mcpServers": {
    "my-oauth-server": {
      "url": "https://mcp.example.com/mcp",
      "oauth": {
        "enabled": true,
        "clientId": "your-client-id-from-idp",
        "clientSecret": "your-client-secret-if-required",
        "scope": "mcp:connect read:data"
      }
    }
  }
}

Propriétés de configuration

PropriétéTypeDescription
urlstringURL du point de terminaison MCP distant (obligatoire).
oauth.enabledbooleanDéfinis sur false pour désactiver OAuth, ou true pour exiger OAuth. Activé par défaut lorsqu'aucun en-tête Authorization n'est présent.
oauth.clientIdstringID client OAuth préenregistré émis par ton fournisseur d'identité.
oauth.clientSecretstringSecret client OAuth, si ton serveur d'autorisation en requiert un pour les clients confidentiels.
oauth.scopestringListe séparée par des espaces des scopes OAuth que tu souhaites demander.
Attention :

L'ajout d'un en-tête Authorization statique à la configuration d'un serveur MCP désactive OAuth. Lorsqu'un en-tête Authorization est présent, Bob n'initie pas le flux OAuth. Lorsque OAuth est actif, Bob supprime les en-têtes Authorization statiques avant d'envoyer des requêtes. N'utilise qu'une seule méthode d'authentification par serveur.

Enregistrer Bob auprès de ton fournisseur d'identité

Lorsque ton fournisseur d'identité (IdP) exige que tu enregistres Bob en tant qu'application cliente avant de te connecter, utilise les paramètres d'application suivants :

ParamètreValeur
Type d'application ou de clientPublic, Natif ou Bouclage (Code d'autorisation avec PKCE)
URI de redirectionhttp://127.0.0.1:33418/callback
URIs de redirection supplémentaireshttp://127.0.0.1:33419/callback à http://127.0.0.1:33427/callback (recommandé si le port 33418 est utilisé)
Types de grantCode d'autorisation (authorization_code) et Jeton de rafraîchissement (refresh_token)
ScopesScopes spécifiés dans la documentation de ton serveur MCP

Copie l'ID client émis dans oauth.clientId dans ton fichier de configuration.

S'authentifier lorsque demandé

Lorsque tu te connectes à un serveur compatible OAuth pour la première fois :

  1. Examine l'invite d'authentification qui s'ouvre dans l'IDE ou dans ton navigateur.
  2. Vérifie les autorisations demandées par le serveur.
  3. Connecte-toi à ton compte et approuve l'accès.
  4. Bob enregistre tes identifiants et se connecte aux outils du serveur.

Afficher et gérer le statut d'authentification

Tu peux vérifier ou modifier l'authentification d'un serveur MCP :

  1. Clique sur l'icône dans le panneau Bob.
  2. Sélectionne l'onglet MCP.
  3. Localise le serveur dans la liste.

Les serveurs connectés affichent un indicateur d'état. Lorsque l'authentification expire ou que les autorisations changent, tu peux mettre à jour ta connexion.

Pour se réauthentifier : Clique sur à côté du nom du serveur pour redémarrer ta connexion et te reconnecter.

Dépannage

L'invite d'authentification ne s'ouvre pas

  • Vérifie que tu n'as pas marqué le serveur comme désactivé dans ta configuration.
  • Vérifie que ton fichier de configuration n'inclut pas d'en-tête Authorization statique dans headers.
  • Redémarre le serveur depuis l'onglet des paramètres MCP.
  • Vérifie que ton navigateur ou pare-feu ne bloque pas les connexions de bouclage local sur 127.0.0.1.

Le fournisseur d'identité renvoie une erreur d'incompatibilité d'URI de redirection

  • Vérifie que l'enregistrement du client de ton fournisseur d'identité inclut http://127.0.0.1:33418/callback.
  • Si le port 33418 est occupé, enregistre des ports supplémentaires de 33419 à 33427.

L'authentification réussit mais le serveur ne parvient pas à se connecter

  • Vérifie que l'URL du serveur est correcte et accessible depuis ton réseau.
  • Vérifie que tu as approuvé tous les scopes requis lors de l'étape de connexion.
  • Consulte les journaux du serveur ou la documentation pour les rôles utilisateur ou autorisations prérequis.

Les tokens expirent fréquemment et tu dois te réauthentifier

  • Confirme que ton serveur d'autorisation émet des tokens de rafraîchissement.
  • Vérifie que l'horloge de ton système est synchronisée pour éviter une expiration prématurée des tokens.

Tu veux te déconnecter ou changer de compte

Le redémarrage du serveur n'efface pas les identifiants OAuth. Pour te déconnecter ou changer de compte, utilise Réinitialiser auth depuis l'onglet des paramètres MCP. Cela efface les tokens stockés et déclenche une nouvelle invite d'authentification lors de la prochaine connexion.

Comment trouvez-vous ce sujet ?