MCP OAuth認証
Bob Shellはユーザーデリゲートアクセスを必要とするMCPサーバー向けにOAuth 2.1をサポートしています。Bobはtokenのリフレッシュを含む認証フローを自動的に処理するため、手動でtokenを管理する必要はありません。
MCPの一般的な設定については、MCPサーバーの設定を参照してください。
概要
一部のMCPサーバーは、たとえばGitHubリポジトリの読み取りやGoogle Driveファイルへのアクセスなど、ユーザーとして代理で操作する必要があります。これらのサーバーはOAuth 2.1を使用して、データにアクセスする前にユーザーの同意を求めます。
Bobは完全なOAuthフローを自動的に処理します。OAuthが必要なサーバーに接続すると、Bobはブラウザーで認証フローを開きます。認証後、Bobはtokenのストレージとリフレッシュを手動の操作なしで管理します。
これはheadersのBearerトークンやenvのAPIキーなどの静的認証方式とは異なり、静的認証方式はサービスアカウントや期限切れにならないtokenに適しています。以下の場合にOAuthを使用します:
- サーバーがユーザーアカウントが所有するリソースにアクセスする必要がある場合
- サーバーの認証サーバーがリフレッシュが必要な短命のtokenを発行する場合
- MCPの設定ファイルに長命のシークレットを保存したくない場合
認証フローの仕組み
- OAuthが有効なMCPサーバーを設定ファイルに追加します(
headersやenvの認証情報は不要) - Bobがサーバーに初めて接続するとき、サーバーのOAuth認証メタデータを検出します
- Bobはサインインしてコンセントするよるブラウザーベースの認証プロンプトを開きます
- 認証後、Bobはアクセスおよびリフレッシュtokenをセッション間で安全に保存します
- Bobはtokenが期限切れになる前に自動的にリフレッシュします。リフレッシュが失敗しない限り、再度プロンプトが表示されることはありません。
Bob Shell 認証サーバー MCPサーバー
| | |
|-- サーバーに接続 ------------->| |
|<-- OAuthメタデータ (401) ------| |
|-- 認証プロンプトを開く ------->| |
| (ユーザーがサインインして同意)| |
|<-- 認証コード -----------------| |
|-- tokenと交換 ---------------->| |
|<-- アクセス + リフレッシュtoken| |
|-- 認証済みリクエスト -------------------------------------> |
| (必要に応じて自動リフレッシュ) |OAuth対応サーバーの設定
OAuth対応のMCPサーバーは認証要件を自動的にアドバタイズします。ほとんどの場合、サーバーURLのみが必要です。OAuthフィールドはオプションです。Bobは以下のオプションのOAuthプロパティもサポートしています:
oauth:サーバーのOAuthを無効にするにはfalseに、明示的に有効にするにはtrueに設定しますclientId:認証サーバーが必要とする場合のOAuth クライアントIDclientSecret:認証サーバーが必要とする場合のOAuthクライアントシークレットscope:リクエストするOAuthスコープのスペース区切りリスト
~/.bob/mcp_settings.json(グローバル)または.bob/mcp.json(プロジェクト)の設定例:
{
"mcpServers": {
"my-oauth-server": {
"url": "https://your-server-url.com/mcp"
}
}
}Bobは接続時にOAuth要件を検出してフローを開始します。headersやenvの認証情報は不要です。
OAuth対応サーバーに静的なAuthorizationヘッダーを追加すると、自動OAuthが完全に無効になります。Bobはフローを試みません。逆に、OAuthがアクティブな場合、Bobはリクエストを送信する前に静的なAuthorizationヘッダーを削除します。どちらか一方の方法のみを使用してください。
プロンプト表示時の認証
Bobが初めてOAuth対応サーバーに接続するとき:
- ブラウザーウィンドウが開いて認証プロンプトが表示されます
- サーバーが要求しているパーミッションを確認します
- 必要なアカウントでサインインしてコンセントします
- Bobはtokenを保存し、接続を自動的に完了します
プロンプトはデフォルトのブラウザーで開きます。認証が完了すると、Bob Shellは自動的に接続を再開します。
トラブルシューティング
認証プロンプトが表示されない
- 設定でサーバーが無効としてマークされていないか確認します
- Bob Shellを再起動してサーバー接続を再開始します
- ブラウザーが認証ページをブロックしていないか確認します
認証は成功したがサーバーへの接続が失敗する
- サーバーURLが正しくアクセス可能であることを確認します
- コンセントの手順で必要なすべてのパーミッションを付与したことを確認します
- 追加のセットアップ要件についてサーバーのドキュメントを確認します
Tokenが頻繁に期限切れになり再認証が必要になる
- 認証サーバーがリフレッシュtokenをサポートしているか確認します。一部のサーバーは短命のアクセス専用tokenを発行します。
- システムクロックが正確であることを確認します。時刻のずれが早期のtoken期限切れを引き起こす場合があります
サインアウトまたはアカウントを切り替えたい
設定ファイルのサーバーエントリを削除または名前変更してから再追加します。これによりBobが新しいサーバーとして扱い、次の接続時に新しい認証プロンプトがトリガーされます。