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トークンを使用できます。
認証フローの仕組み
headersまたはenvの認証情報なしで、リモートMCPサーバーのURLを設定ファイルに追加します。- Bobがサーバーに接続すると、BobはOAuth要件を検出します。
- Bobはブラウザのサインインウィンドウを開き、要求された権限を確認してアクセスを承認します。
- Bobは認証トークンを受信し、セッション間で安全に保存します。
- 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"
}
}
}
}設定プロパティ
| プロパティ | タイプ | 説明 |
|---|---|---|
url | string | リモートMCPエンドポイントURL(必須)。 |
oauth.enabled | boolean | OAuthを無効にするにはfalseに設定し、OAuthを要求するにはtrueに設定します。Authorizationヘッダーが存在しない場合はデフォルトで有効になります。 |
oauth.clientId | string | IDプロバイダーによって発行された事前登録済みのOAuthクライアントID。 |
oauth.clientSecret | string | 認可サーバーが機密クライアント用に必要とする場合のOAuthクライアントシークレット。 |
oauth.scope | string | 要求するOAuthスコープのスペース区切りリスト。 |
MCPサーバー設定に静的なAuthorizationヘッダーを追加すると、OAuthが無効になります。Authorizationヘッダーが存在する場合、BobはOAuthフローを開始しません。OAuthがアクティブな場合、Bobはリクエストを送信する前に静的なAuthorizationヘッダーを削除します。サーバーごとに1つの認証方法のみを使用してください。
IDプロバイダーへのBobの登録
接続する前にIDプロバイダー (IdP) でBobをクライアントアプリケーションとして登録する必要がある場合は、次のアプリケーション設定を使用します:
| 設定 | 値 |
|---|---|
| アプリケーションまたはクライアントタイプ | パブリック、ネイティブ、またはループバック(PKCE付き認可コード) |
| リダイレクトURI | http://127.0.0.1:33418/callback |
| 追加のリダイレクトURI | http://127.0.0.1:33419/callback から http://127.0.0.1:33427/callback(ポート33418が使用中の場合に推奨) |
| グラントタイプ | 認可コード (authorization_code) およびリフレッシュトークン (refresh_token) |
| スコープ | MCPサーバーのドキュメントで指定されているスコープ |
発行されたクライアントIDを設定ファイルのoauth.clientIdにコピーします。
プロンプトが表示されたら認証する
OAuth対応サーバーに初めて接続する場合:
- IDEまたはブラウザで開く認証プロンプトを確認します。
- サーバーが要求する権限を確認します。
- アカウントにサインインしてアクセスを承認します。
- Bobは認証情報を保存し、サーバーツールに接続します。
認証ステータスの表示と管理
MCPサーバーの認証を確認または変更できます:
- Bobパネルのアイコンをクリックします。
- MCPタブを選択します。
- リストでサーバーを見つけます。
接続されたサーバーにはステータスインジケーターが表示されます。認証の有効期限が切れたり権限が変更されたりした場合は、接続を更新できます。
再認証するには: サーバー名の横にあるをクリックして接続を再起動し、再度サインインします。
トラブルシューティング
認証プロンプトが開かない
- 設定でサーバーが無効としてマークされていないことを確認します。
- 設定ファイルの
headersに静的なAuthorizationヘッダーが含まれていないことを確認します。 - MCP設定タブからサーバーを再起動します。
- ブラウザまたはファイアウォールが
127.0.0.1でのローカルループバック接続をブロックしていないことを確認します。
IDプロバイダーがリダイレクトURIの不一致エラーを返す
- IDプロバイダーのクライアント登録に
http://127.0.0.1:33418/callbackが含まれていることを確認します。 - ポート33418が使用中の場合は、
33419から33427までの追加ポートを登録します。
認証は成功するがサーバーが接続に失敗する
- サーバーURLが正しく、ネットワークからアクセス可能であることを確認します。
- サインイン手順ですべての必要なスコープを承認したことを確認します。
- 前提条件となるユーザーロールまたは権限について、サーバーログまたはドキュメントを確認します。
トークンが頻繁に期限切れになり、再認証が必要
- 認可サーバーがリフレッシュトークンを発行することを確認します。
- トークンの早期失効を防ぐため、システムクロックが同期されていることを確認します。
サインアウトまたはアカウントの切り替えを希望する
サーバーを再起動してもOAuth認証情報はクリアされません。サインアウトまたはアカウントを切り替えるには、MCP設定タブから認証をリセットを使用します。これにより、保存されたトークンがクリアされ、次回の接続時に新しい認証プロンプトがトリガーされます。