Uwierzytelnianie OAuth dla MCP

Bob Shell obsługuje OAuth 2.1 dla serwerów MCP wymagających dostępu delegowanego przez użytkownika. Bob obsługuje cały przepływ uwierzytelniania automatycznie, włącznie z odświeżaniem tokenów, więc nie musisz zarządzać tokenami ręcznie.

Uwaga:

Ogólną konfigurację MCP znajdziesz w dokumentacji Konfiguracja serwerów MCP.

Przegląd

Niektóre serwery MCP muszą działać w Twoim imieniu jako użytkownika — na przykład aby odczytać repozytoria GitHub lub uzyskać dostęp do plików na Google Drive. Te serwery używają OAuth 2.1, aby prosić o Twoją zgodę przed uzyskaniem dostępu do danych.

Bob obsługuje pełny przepływ OAuth automatycznie. Gdy połączysz się z serwerem wymagającym OAuth, Bob otwiera przepływ autoryzacji w przeglądarce. Po autoryzacji Bob zarządza przechowywaniem tokenów i ich odświeżaniem bez dalszych kroków ręcznych.

Różni się to od statycznych metod uwierzytelniania, takich jak Bearer token w headers lub klucz API w env, które nadają się do kont serwisowych lub tokenów bez daty wygaśnięcia. Używaj OAuth, gdy:

  • Serwer potrzebuje dostępu do zasobów należących do Twojego konta użytkownika
  • Serwer autoryzacji wydaje krótkotrwałe tokeny wymagające odświeżania
  • Chcesz uniknąć przechowywania długotrwałych sekretów w plikach konfiguracyjnych MCP

Jak działa przepływ uwierzytelniania

  1. Dodajesz serwer MCP obsługujący OAuth do pliku konfiguracyjnego (bez poświadczeń headers ani env)
  2. Gdy Bob po raz pierwszy łączy się z serwerem, wykrywa metadane autoryzacji OAuth serwera
  3. Bob otwiera monit uwierzytelniania w przeglądarce z prośbą o zalogowanie się i wyrażenie zgody
  4. Po autoryzacji Bob przechowuje tokeny dostępu i odświeżania bezpiecznie między sesjami
  5. Bob automatycznie odświeża tokeny przed ich wygaśnięciem. Nie zostaniesz ponownie poproszony, chyba że odświeżanie się nie powiedzie.
Bob Shell                   Serwer autoryzacji               Serwer MCP
   |                                |                               |
   |-- połącz z serwerem ---------->|                               |
   |<-- metadane OAuth (401) -------|                               |
   |-- otwórz monit auth ---------->|                               |
   |   (użytkownik loguje się)      |                               |
   |<-- kod autoryzacji ------------|                               |
   |-- wymień na tokeny ----------->|                               |
   |<-- tokeny dostępu + odświeżania|                               |
   |-- uwierzytelnione żądania --------------------------------->   |
   |   (automatyczne odświeżanie w razie potrzeby)                  |

Konfiguracja serwera obsługującego OAuth

Serwery MCP obsługujące OAuth automatycznie ogłaszają swoje wymagania dotyczące autoryzacji. W większości przypadków potrzebujesz tylko adresu URL serwera — pola OAuth są opcjonalne. Bob obsługuje również następujące opcjonalne właściwości OAuth:

  • oauth: Ustaw na false, aby wyłączyć OAuth dla serwera, lub true, aby jawnie go włączyć
  • clientId: Identyfikator klienta OAuth, jeśli wymagany przez serwer autoryzacji
  • clientSecret: Sekret klienta OAuth, jeśli wymagany przez serwer autoryzacji
  • scope: Lista zakresów OAuth oddzielonych spacjami

Przykładowa konfiguracja w ~/.bob/mcp_settings.json (globalna) lub .bob/mcp.json (projekt):

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

Bob wykrywa wymaganie OAuth podczas łączenia i inicjuje przepływ. Poświadczenia headers ani env nie są potrzebne.

Ostrzeżenie:

Dodanie statycznego nagłówka Authorization do serwera obsługującego OAuth całkowicie wyłącza automatyczne OAuth. Bob nie próbuje przepływu OAuth. Odwrotnie — gdy OAuth jest aktywne, Bob usuwa wszelkie statyczne nagłówki Authorization przed wysłaniem żądań. Używaj tylko jednej metody.

Uwierzytelnianie po wyświetleniu monitu

Gdy Bob łączy się po raz pierwszy z serwerem obsługującym OAuth:

  1. Otwiera się okno przeglądarki z monitem autoryzacji
  2. Przejrzyj uprawnienia, których żąda serwer
  3. Zaloguj się na wymagane konto i wyraź zgodę
  4. Bob przechowuje tokeny i automatycznie kończy połączenie

Monit otwiera się w domyślnej przeglądarce. Po zakończeniu autoryzacji Bob Shell automatycznie wznawia połączenie.

Rozwiązywanie problemów

Monit uwierzytelniania nie pojawia się

  • Upewnij się, że serwer nie jest oznaczony jako wyłączony w konfiguracji
  • Uruchom ponownie Bob Shell, aby ponownie zainicjować połączenie z serwerem
  • Sprawdź, czy przeglądarka nie blokuje strony autoryzacji

Uwierzytelnianie się powiodło, ale serwer nie może się połączyć

  • Sprawdź, czy adres URL serwera jest prawidłowy i osiągalny
  • Upewnij się, że przyznałeś(-aś) wszystkie wymagane uprawnienia podczas kroku wyrażania zgody
  • Zapoznaj się z dokumentacją serwera w celu uzyskania dodatkowych wymagań dotyczących konfiguracji

Tokeny wygasają często i wymagane jest ponowne uwierzytelnianie

  • Sprawdź, czy serwer autoryzacji obsługuje tokeny odświeżania. Niektóre serwery wydają wyłącznie tokeny dostępu z krótkim czasem życia.
  • Sprawdź, czy zegar systemowy jest dokładny — odchylenie zegara może powodować przedwczesne wygaśnięcie tokenu

Chcesz się wylogować lub zmienić konto

Usuń lub zmień nazwę wpisu serwera w pliku konfiguracyjnym i dodaj go ponownie. Spowoduje to, że Bob potraktuje go jako nowy serwer i wywołuje świeży monit uwierzytelniania przy następnym połączeniu.

Jak oceniasz ten temat?