MCP OAuth 驗證

使用 OAuth 2.1 將 Bob Shell 連線至需要使用者委派存取的 MCP 伺服器。Bob Shell 管理驗證和 token 重新整理流程,因此你無需手動管理 token。

注意:

如需一般 MCP 設定,請參閱設定 MCP 伺服器。

概述

你可以將 Bob Shell 連線至代表你執行動作的 Model Context Protocol(MCP)伺服器,例如存取你的儲存庫、雲端資源或企業服務。這些伺服器使用 OAuth 2.1,讓你可以登入並核准存取。

Bob Shell 直接管理驗證流程。當你設定需要 OAuth 的伺服器時,Bob Shell 會在你的預設瀏覽器中開啟授權視窗。你登入並核准權限後,Bob Shell 會儲存和重新整理你的存取 token,無需你手動處理憑證。

在以下情況下使用 OAuth:

  • 你需要存取與個人或企業使用者帳戶相關聯的資源
  • 伺服器使用需要自動 token 重新整理的短期 token
  • 你想讓靜態憑證和 Secret 遠離設定檔

如果你已有不會過期的靜態 API token 或個人存取 token,可以改用 headers 中的 Bearer token。

驗證流程的運作方式

  1. 你將遠端 MCP 伺服器 URL 新增到設定檔,不需要 headers 或 env 憑證。
  2. 當 Bob Shell 連線到伺服器時,Bob Shell 會偵測 OAuth 要求。
  3. Bob Shell 開啟瀏覽器登入視窗,讓你檢閱請求的權限並核准存取。
  4. Bob Shell 接收授權 token 並在你的工作階段中安全地儲存它們。
  5. Bob Shell 會在 token 過期之前自動重新整理,讓你可以不間斷地工作。
Bob Shell                   授權伺服器              MCP 伺服器
   |                                |                               |
   |-- 連線到伺服器 ---------->|                               |
   |<-- OAuth 中繼資料 (401) -------|                               |
   |-- 開啟驗證提示 ----------->|                               |
   |   (使用者登入並同意)   |                               |
   |<-- 授權碼 ---------|                               |
   |-- 交換 token -------->|                               |
   |<-- 存取 token + 刷新 token ----|                               |
   |-- 已驗證的請求 --------------------------------->    |
   |   (需要時自動刷新)                                   |

設定支援 OAuth 的伺服器

你可以在全域設定(~/.bob/mcp_settings.json)或專案設定(.bob/mcp.json)中設定 MCP 伺服器。

最小設定(自動探索)

當你的 MCP 伺服器提供自動 OAuth 中繼資料探索時,你只需要指定 url:

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

Bob Shell 在連線時偵測 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"
      }
    }
  }
}

設定屬性

屬性類型描述
urlstring遠端 MCP 端點 URL(必填)。
oauth.enabledboolean設定為 false 以停用 OAuth,或設定為 true 以要求 OAuth。當沒有 Authorization 標頭時預設啟用。
oauth.clientIdstring你的身分識別提供者發行的預先註冊 OAuth 用戶端 ID。
oauth.clientSecretstringOAuth 用戶端密鑰,如果你的授權伺服器需要機密用戶端則填寫。
oauth.scopestring你想請求的 OAuth 範圍,以空格分隔的清單。
警告:

向 MCP 伺服器設定新增靜態 Authorization 標頭會關閉 OAuth。當有 Authorization 標頭存在時,Bob Shell 不會啟動 OAuth 流程。當 OAuth 處於作用中時,Bob Shell 在傳送請求之前會移除靜態 Authorization 標頭。每個伺服器只能使用一種驗證方法。

向身分識別提供者註冊 Bob

當你的身分識別提供者(IdP)要求你在連線之前將 Bob 註冊為用戶端應用程式時,請使用以下應用程式設定:

設定值
應用程式或用戶端類型Public、Native 或 Loopback(Authorization Code with 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(authorization_code)和 Refresh Token(refresh_token)
範圍MCP 伺服器文件中指定的範圍

將發行的用戶端 ID 複製到設定檔中的 oauth.clientId。

依提示進行驗證

當你首次連線到支援 OAuth 的伺服器時:

  1. 瀏覽器視窗開啟並顯示授權提示。
  2. 檢閱伺服器請求的權限。
  3. 登入你的帳戶並核准存取。
  4. Bob Shell 儲存你的憑證並自動連線到伺服器工具。

疑難排解

驗證提示未開啟

  • 確認你沒有在設定中將伺服器標記為停用。
  • 檢查設定檔中 headers 是否不包含靜態 Authorization 標頭。
  • 重新啟動 Bob Shell 以重新建立連線。
  • 確認你的瀏覽器或防火牆未封鎖 127.0.0.1 上的本機回送連線。

身分識別提供者回傳重新導向 URI 不符錯誤

  • 確認你的身分識別提供者用戶端註冊包含 http://127.0.0.1:33418/callback。
  • 如果連接埠 33418 已被占用,請從 33419 到 33427 註冊其他連接埠。

驗證成功但伺服器連線失敗

  • 確認伺服器 URL 正確且可從你的網路存取。
  • 確認你在登入步驟中核准了所有必要的範圍。
  • 查閱伺服器日誌或文件,了解必要的使用者角色或權限。

Token 頻繁過期且需要重新驗證

  • 確認你的授權伺服器發行重新整理 token。
  • 確認你的系統時鐘已同步,以防止 token 提早過期。

你想要登出或切換帳戶

在設定檔中移除或重新命名伺服器項目,然後重新加入。Bob Shell 將其視為新伺服器,並在下次連線時提示你登入。

這個主題如何?