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.
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
- Aggiungi l'URL del server MCP remoto al tuo file di configurazione senza credenziali
headersoenv. - Quando Bob Shell si connette al server, Bob Shell rileva i requisiti OAuth.
- Bob Shell apre una finestra di accesso nel browser dove puoi esaminare i permessi richiesti e approvare l'accesso.
- Bob Shell riceve i token di autorizzazione e li memorizza in modo sicuro nelle tue sessioni.
- 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à | Tipo | Descrizione |
|---|---|---|
url | string | URL dell'endpoint MCP remoto (obbligatorio). |
oauth.enabled | boolean | Imposta su false per disabilitare OAuth, o true per richiedere OAuth. Abilitato per impostazione predefinita quando non è presente un header Authorization. |
oauth.clientId | string | ID client OAuth pre-registrato emesso dal tuo identity provider. |
oauth.clientSecret | string | Client secret OAuth, se il tuo server di autorizzazione lo richiede per i client confidenziali. |
oauth.scope | string | Elenco separato da spazi degli scope OAuth da richiedere. |
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:
| Impostazione | Valore |
|---|---|
| Tipo di applicazione o client | Public, Native o Loopback (Authorization Code con PKCE) |
| URI di reindirizzamento | http://127.0.0.1:33418/callback |
| URI di reindirizzamento aggiuntivi | Da http://127.0.0.1:33419/callback a http://127.0.0.1:33427/callback (consigliato se la porta 33418 è occupata) |
| Tipi di grant | Authorization Code (authorization_code) e Refresh Token (refresh_token) |
| Scope | Scope 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:
- Si apre una finestra del browser con il prompt di autorizzazione.
- Esamina i permessi che il server richiede.
- Accedi al tuo account e approva l'accesso.
- 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
Authorizationstatico inheaders. - 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
33419a33427.
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.