Autenticazione OAuth MCP

Connetti Bob Shell a server MCP che richiedono accesso delegato dall'utente con OAuth 2.1. Bob Shell gestisce il processo di autenticazione e refresh dei token in modo che tu non debba gestire i token manualmente.

Nota:

Per la configurazione generale di MCP, consulta Configurare i server MCP.

Panoramica

Puoi connettere Bob Shell a server Model Context Protocol (MCP) che agiscono per tuo conto, come l'accesso ai tuoi repository, risorse cloud o servizi aziendali. Questi server usano OAuth 2.1 in modo da poter accedere e approvare l'accesso.

Bob Shell gestisce il flusso di autenticazione direttamente. Quando configuri un server che richiede OAuth, Bob Shell apre una finestra di autorizzazione nel tuo browser predefinito. Dopo aver effettuato l'accesso e approvato i permessi, Bob Shell memorizza e aggiorna i tuoi token di accesso senza richiedere che tu gestisca le credenziali manualmente.

Usa OAuth quando:

  • Hai bisogno di accedere a risorse associate al tuo account utente personale o aziendale
  • Il server usa token a breve durata che richiedono il refresh automatico
  • Vuoi tenere le credenziali statiche e i segreti fuori dai tuoi file di configurazione

Quando hai già un token API statico o un personal access token che non scade, puoi usare un Bearer token in headers.

Come funziona il flusso di autenticazione

  1. Aggiungi l'URL del server MCP remoto al tuo file di configurazione senza credenziali headers o env.
  2. Quando Bob Shell si connette al server, Bob Shell rileva i requisiti OAuth.
  3. Bob Shell apre una finestra di accesso nel browser dove puoi esaminare i permessi richiesti e approvare l'accesso.
  4. Bob Shell riceve i token di autorizzazione e li memorizza in modo sicuro nelle tue sessioni.
  5. Bob Shell aggiorna automaticamente i token prima della scadenza in modo da poter lavorare senza interruzioni.
Bob Shell                   Server di autorizzazione              Server MCP
   |                                |                               |
   |-- connessione al server ------>|                               |
   |<-- metadati OAuth (401) -------|                               |
   |-- apertura prompt auth ------->|                               |
   |   (utente accede e consente)   |                               |
   |<-- codice di autorizzazione ---|                               |
   |-- scambio per token ---------->|                               |
   |<-- access + refresh token -----|                               |
   |-- richieste autenticate ---------------------------->          |
   |   (auto-refresh quando necessario)                             |

Configurare un server abilitato a OAuth

Puoi configurare i tuoi server MCP nella configurazione globale (~/.bob/mcp_settings.json) o nella configurazione del progetto (.bob/mcp.json).

Configurazione minimale (discovery automatico)

Quando il tuo server MCP fornisce il discovery automatico dei metadati OAuth, hai bisogno solo di specificare l'url:

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

Bob Shell rileva i requisiti OAuth alla connessione e ti guida attraverso il processo di accesso nel browser.

Parametri OAuth personalizzati

Quando il tuo identity provider richiede un client ID pre-registrato, scope personalizzati o un client secret, configura l'oggetto 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"
      }
    }
  }
}

Proprietà di configurazione

ProprietàTipoDescrizione
urlstringURL dell'endpoint MCP remoto (obbligatorio).
oauth.enabledbooleanImposta su false per disabilitare OAuth, o true per richiedere OAuth. Abilitato per impostazione predefinita quando non è presente un header Authorization.
oauth.clientIdstringID client OAuth pre-registrato emesso dal tuo identity provider.
oauth.clientSecretstringClient secret OAuth, se il tuo server di autorizzazione lo richiede per i client confidenziali.
oauth.scopestringElenco separato da spazi degli scope OAuth da richiedere.
Avviso:

Aggiungere un header Authorization statico alla configurazione di un server MCP disattiva OAuth. Quando è presente un header Authorization, Bob Shell non avvia il flusso OAuth. Quando OAuth è attivo, Bob Shell rimuove gli header Authorization statici prima di inviare le richieste. Usa un solo metodo di autenticazione per server.

Registrare Bob con il tuo identity provider

Quando il tuo identity provider (IdP) richiede che tu registri Bob come applicazione client prima di connetterti, usa le seguenti impostazioni applicative:

ImpostazioneValore
Tipo di applicazione o clientPublic, Native o Loopback (Authorization Code con PKCE)
URI di reindirizzamentohttp://127.0.0.1:33418/callback
URI di reindirizzamento aggiuntiviDa http://127.0.0.1:33419/callback a http://127.0.0.1:33427/callback (consigliato se la porta 33418 è occupata)
Tipi di grantAuthorization Code (authorization_code) e Refresh Token (refresh_token)
ScopeScope specificati nella documentazione del tuo server MCP

Copia il client ID emesso in oauth.clientId nel tuo file di configurazione.

Autenticarsi quando richiesto

Quando ti connetti per la prima volta a un server abilitato a OAuth:

  1. Si apre una finestra del browser con il prompt di autorizzazione.
  2. Esamina i permessi che il server richiede.
  3. Accedi al tuo account e approva l'accesso.
  4. Bob Shell salva le tue credenziali e si connette automaticamente agli strumenti del server.

Risoluzione dei problemi

Il prompt di autenticazione non si apre

  • Verifica di non aver contrassegnato il server come disabilitato nella tua configurazione.
  • Controlla che il tuo file di configurazione non includa un header Authorization statico in headers.
  • Riavvia Bob Shell per reinizializzare la connessione.
  • Controlla che il tuo browser o firewall non blocchi le connessioni loopback locali su 127.0.0.1.

L'identity provider restituisce un errore di mancata corrispondenza dell'URI di reindirizzamento

  • Verifica che la registrazione del client nell'identity provider includa http://127.0.0.1:33418/callback.
  • Se la porta 33418 è occupata, registra porte aggiuntive da 33419 a 33427.

L'autenticazione ha successo ma il server non si connette

  • Verifica che l'URL del server sia corretto e accessibile dalla tua rete.
  • Controlla di aver approvato tutti gli scope richiesti durante il passaggio di accesso.
  • Consulta i log del server o la documentazione per i ruoli o i permessi utente necessari.

I token scadono frequentemente e devi riautenticarti

  • Conferma che il tuo server di autorizzazione emetta refresh token.
  • Controlla che l'orologio del tuo sistema sia sincronizzato per evitare la scadenza prematura dei token.

Vuoi effettuare il logout o cambiare account

Rimuovi o rinomina la voce del server nel tuo file di configurazione e aggiungila di nuovo. Bob Shell la tratta come un nuovo server e ti chiede di accedere alla prossima connessione.

Come valuti questo argomento?