MCP OAuth 驗證
使用 OAuth 2.1 連線至需要使用者委派存取的 MCP 伺服器。Bob 管理驗證和 token 重新整理流程,因此你無需手動管理 token。
如需一般 MCP 設定,請參閱在 Bob 中使用 MCP。
概觀
你可以將 Bob 連線至代表你執行動作的 Model Context Protocol(MCP)伺服器,例如存取你的程式碼儲存庫、雲端服務或內部工具。這些伺服器使用 OAuth 2.1,讓你可以登入並核准存取。
Bob 直接管理驗證流程。當你設定需要 OAuth 的伺服器時,Bob 會在 MCP 設定中顯示驗證請求。你可以按一下按鈕,在瀏覽器視窗中開啟身分識別提供者,完成登入並核准權限。Bob 會儲存和重新整理你的存取 token,無需你手動處理憑證。
在以下情況下使用 OAuth:
- 你需要存取與個人或企業使用者帳戶相關聯的資源
- 伺服器使用需要自動 token 重新整理的短期 token
- 你想讓靜態憑證和 Secret 遠離設定檔
如果你已有不會過期的靜態 API token 或個人存取 token,可以改用 headers 中的 Bearer token。
驗證流程的運作方式
- 你將遠端 MCP 伺服器 URL 新增到設定檔,不需要
headers或env憑證。 - 當 Bob 連線到伺服器時,Bob 會偵測 OAuth 要求。
- Bob 開啟瀏覽器登入視窗,讓你檢閱請求的權限並核准存取。
- Bob 接收授權 token 並在你的工作階段中安全地儲存它們。
- Bob 會在 token 過期之前自動重新整理,讓你可以不間斷地工作。
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 的伺服器
你可以在全域設定(~/.bob/mcp_settings.json)或專案設定(.bob/mcp.json)中設定 MCP 伺服器。
最小設定(自動探索)
當你的 MCP 伺服器提供自動 OAuth 中繼資料探索時,你只需要指定 url:
{
"mcpServers": {
"my-oauth-server": {
"url": "https://mcp.example.com/mcp"
}
}
}Bob 在連線時偵測 OAuth 要求,並引導你完成瀏覽器登入流程。
自訂 OAuth 參數
當你的身分識別提供者需要預先註冊的用戶端 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 | 設定為 false 以停用 OAuth,或設定為 true 以要求 OAuth。當沒有 Authorization 標頭時預設啟用。 |
oauth.clientId | string | 你的身分識別提供者發行的預先註冊 OAuth 用戶端 ID。 |
oauth.clientSecret | string | OAuth 用戶端密鑰,如果你的授權伺服器需要機密用戶端則填寫。 |
oauth.scope | string | 你想請求的 OAuth 範圍,以空格分隔的清單。 |
向 MCP 伺服器設定新增靜態 Authorization 標頭會關閉 OAuth。當有 Authorization 標頭存在時,Bob 不會啟動 OAuth 流程。當 OAuth 處於作用中時,Bob 在傳送請求之前會移除靜態 Authorization 標頭。每個伺服器只能使用一種驗證方法。
向身分識別提供者註冊 Bob
當你的身分識別提供者(IdP)要求你在連線之前將 Bob 註冊為用戶端應用程式時,請使用以下應用程式設定:
| 設定 | 值 |
|---|---|
| 應用程式或用戶端類型 | Public、Native 或 Loopback(Authorization Code with 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(authorization_code)和 Refresh Token(refresh_token) |
| 範圍 | MCP 伺服器文件中指定的範圍 |
將發行的用戶端 ID 複製到設定檔中的 oauth.clientId。
在提示時進行驗證
當你首次連線到啟用 OAuth 的伺服器時:
- 檢閱在 IDE 或瀏覽器中開啟的驗證提示。
- 確認伺服器請求的權限。
- 登入你的帳戶並核准存取。
- Bob 儲存你的憑證並連線到伺服器工具。
檢視和管理驗證狀態
你可以檢查或變更 MCP 伺服器的驗證:
- 按一下 Bob 面板中的 圖示。
- 選取 MCP 標籤。
- 在清單中找到伺服器。
已連線的伺服器會顯示狀態指示器。當驗證過期或權限變更時,你可以更新連線。
要重新驗證: 按一下伺服器名稱旁邊的 以重新啟動連線並再次登入。
疑難排解
驗證提示未開啟
- 確認你沒有在設定中將伺服器標記為已停用。
- 檢查設定檔中
headers是否不包含靜態Authorization標頭。 - 從 MCP 設定標籤重新啟動伺服器。
- 確認你的瀏覽器或防火牆未封鎖
127.0.0.1上的本機回送連線。
身分識別提供者回傳重新導向 URI 不符錯誤
- 確認你的身分識別提供者用戶端註冊包含
http://127.0.0.1:33418/callback。 - 如果連接埠 33418 已被占用,請從
33419到33427註冊其他連接埠。
驗證成功但伺服器無法連線
- 確認伺服器 URL 正確且可從你的網路存取。
- 確認你在登入步驟中核准了所有必要的範圍。
- 查閱伺服器日誌或文件,了解必要的使用者角色或權限。
Token 頻繁過期且需要重新驗證
- 確認你的授權伺服器發行重新整理 token。
- 確認你的系統時鐘已同步,以防止 token 提早過期。
你想登出或切換帳戶
重新啟動伺服器不會清除 OAuth 憑證。要登出或切換帳戶,請使用 MCP 設定標籤中的重設驗證。這會清除儲存的 token,並在下次連線時觸發新的驗證提示。