設定MCP

MCP OAuth認証

OAuth 2.1を使用して、ユーザー委任アクセスを必要とするMCPサーバーに接続します。Bobが認証およびトークン更新プロセスを管理するため、手動でトークンを管理する必要はありません。

一般的なMCP設定については、BobでMCPを使用するを参照してください。

概要

コードリポジトリ、クラウドサービス、社内ツールへのアクセスなど、ユーザーの代わりに動作するModel Context Protocol (MCP) サーバーにBobを接続できます。これらのサーバーはOAuth 2.1を使用するため、サインインしてアクセスを承認できます。

Bobは認証フローを直接管理します。OAuthを必要とするサーバーを設定すると、BobはMCP設定に認証リクエストを表示します。ボタンをクリックしてブラウザウィンドウでIDプロバイダーを開き、サインインを完了して権限を承認できます。Bobは手動で認証情報を処理する必要なく、アクセストークンを保存および更新します。

次の場合にOAuthを使用します:

  • 個人またはエンタープライズのユーザーアカウントに関連付けられたリソースにアクセスする必要がある場合
  • サーバーが自動トークン更新を必要とする短期間のトークンを使用する場合
  • 設定ファイルから静的認証情報やシークレットを排除したい場合

期限切れにならない静的APIトークンまたはパーソナルアクセストークンが既にある場合は、代わりにheadersでBearerトークンを使用できます。

認証フローの仕組み

  1. headersまたはenvの認証情報なしで、リモートMCPサーバーのURLを設定ファイルに追加します。
  2. Bobがサーバーに接続すると、BobはOAuth要件を検出します。
  3. Bobはブラウザのサインインウィンドウを開き、要求された権限を確認してアクセスを承認します。
  4. Bobは認証トークンを受信し、セッション間で安全に保存します。
  5. Bobはトークンの有効期限が切れる前に自動的に更新するため、中断することなく作業できます。
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)                                   |

OAuth対応サーバーの設定

MCPサーバーは、グローバル設定 (~/.bob/mcp_settings.json) またはプロジェクト設定 (.bob/mcp.json) のいずれかで設定できます。

最小限の設定(自動検出)

MCPサーバーがOAuthメタデータの自動検出を提供している場合、urlを指定するだけで済みます:

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

Bobは接続時にOAuth要件を検出し、ブラウザのサインインプロセスを案内します。

カスタムOAuthパラメータ

IDプロバイダーで事前登録されたクライアントID、カスタムスコープ、またはクライアントシークレットが必要な場合は、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"
      }
    }
  }
}

設定プロパティ

プロパティタイプ説明
urlstringリモートMCPエンドポイントURL(必須)。
oauth.enabledbooleanOAuthを無効にするにはfalseに設定し、OAuthを要求するにはtrueに設定します。Authorizationヘッダーが存在しない場合はデフォルトで有効になります。
oauth.clientIdstringIDプロバイダーによって発行された事前登録済みのOAuthクライアントID。
oauth.clientSecretstring認可サーバーが機密クライアント用に必要とする場合のOAuthクライアントシークレット。
oauth.scopestring要求するOAuthスコープのスペース区切りリスト。
警告:

MCPサーバー設定に静的なAuthorizationヘッダーを追加すると、OAuthが無効になります。Authorizationヘッダーが存在する場合、BobはOAuthフローを開始しません。OAuthがアクティブな場合、Bobはリクエストを送信する前に静的なAuthorizationヘッダーを削除します。サーバーごとに1つの認証方法のみを使用してください。

IDプロバイダーへのBobの登録

接続する前にIDプロバイダー (IdP) でBobをクライアントアプリケーションとして登録する必要がある場合は、次のアプリケーション設定を使用します:

設定値
アプリケーションまたはクライアントタイプパブリック、ネイティブ、またはループバック(PKCE付き認可コード)
リダイレクトURIhttp://127.0.0.1:33418/callback
追加のリダイレクトURIhttp://127.0.0.1:33419/callback から http://127.0.0.1:33427/callback(ポート33418が使用中の場合に推奨)
グラントタイプ認可コード (authorization_code) およびリフレッシュトークン (refresh_token)
スコープMCPサーバーのドキュメントで指定されているスコープ

発行されたクライアントIDを設定ファイルのoauth.clientIdにコピーします。

プロンプトが表示されたら認証する

OAuth対応サーバーに初めて接続する場合:

  1. IDEまたはブラウザで開く認証プロンプトを確認します。
  2. サーバーが要求する権限を確認します。
  3. アカウントにサインインしてアクセスを承認します。
  4. Bobは認証情報を保存し、サーバーツールに接続します。

認証ステータスの表示と管理

MCPサーバーの認証を確認または変更できます:

  1. Bobパネルのアイコンをクリックします。
  2. MCPタブを選択します。
  3. リストでサーバーを見つけます。

接続されたサーバーにはステータスインジケーターが表示されます。認証の有効期限が切れたり権限が変更されたりした場合は、接続を更新できます。

再認証するには: サーバー名の横にあるをクリックして接続を再起動し、再度サインインします。

トラブルシューティング

認証プロンプトが開かない

  • 設定でサーバーが無効としてマークされていないことを確認します。
  • 設定ファイルのheadersに静的なAuthorizationヘッダーが含まれていないことを確認します。
  • MCP設定タブからサーバーを再起動します。
  • ブラウザまたはファイアウォールが127.0.0.1でのローカルループバック接続をブロックしていないことを確認します。

IDプロバイダーがリダイレクトURIの不一致エラーを返す

  • IDプロバイダーのクライアント登録にhttp://127.0.0.1:33418/callbackが含まれていることを確認します。
  • ポート33418が使用中の場合は、33419から33427までの追加ポートを登録します。

認証は成功するがサーバーが接続に失敗する

  • サーバーURLが正しく、ネットワークからアクセス可能であることを確認します。
  • サインイン手順ですべての必要なスコープを承認したことを確認します。
  • 前提条件となるユーザーロールまたは権限について、サーバーログまたはドキュメントを確認します。

トークンが頻繁に期限切れになり、再認証が必要

  • 認可サーバーがリフレッシュトークンを発行することを確認します。
  • トークンの早期失効を防ぐため、システムクロックが同期されていることを確認します。

サインアウトまたはアカウントの切り替えを希望する

サーバーを再起動してもOAuth認証情報はクリアされません。サインアウトまたはアカウントを切り替えるには、MCP設定タブから認証をリセットを使用します。これにより、保存されたトークンがクリアされ、次回の接続時に新しい認証プロンプトがトリガーされます。

このトピックはいかがですか?