MCP OAuth 驗證

Bob Shell 支援 OAuth 2.1,適用於需要使用者委派存取的 MCP 伺服器。Bob 會自動處理驗證流程(包括 token 刷新),你無需手動管理 token。

注意:

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

概述

某些 MCP 伺服器需要以使用者身分行動,例如讀取你的 GitHub 儲存庫或存取你的 Google Drive 檔案。這些伺服器使用 OAuth 2.1 在存取任何資料前取得你的同意。

Bob 會自動處理完整的 OAuth 流程。當你連線到需要 OAuth 的伺服器時,Bob 會在你的瀏覽器中開啟授權流程。你授權後,Bob 會管理 token 儲存和刷新,無需進一步的手動操作。

這與靜態驗證方法不同,例如 headers 中的 Bearer token 或 env 中的 API 金鑰,這些方法適用於服務帳戶或不會過期的 token。在以下情況下使用 OAuth:

  • 伺服器需要存取你使用者帳戶所擁有的資源
  • 伺服器的授權伺服器發出必須刷新的短期 token
  • 你想避免在 MCP 設定檔中儲存長期有效的密鑰

驗證流程的運作方式

  1. 你將支援 OAuth 的 MCP 伺服器加入設定檔(不需要 headersenv 憑證)
  2. Bob 首次連線到伺服器時,會偵測伺服器的 OAuth 授權中繼資料
  3. Bob 開啟以瀏覽器為基礎的驗證提示,要求你登入並授予同意
  4. 你授權後,Bob 會跨工作階段安全地儲存存取 token 和刷新 token
  5. Bob 會在 token 到期前自動刷新。除非刷新失敗,否則不會再次提示你。
Bob Shell                   授權伺服器              MCP 伺服器
   |                                |                               |
   |-- 連線到伺服器 ---------->|                               |
   |<-- OAuth 中繼資料 (401) -------|                               |
   |-- 開啟驗證提示 ----------->|                               |
   |   (使用者登入並同意)   |                               |
   |<-- 授權碼 ---------|                               |
   |-- 交換 token -------->|                               |
   |<-- 存取 token + 刷新 token ----|                               |
   |-- 已驗證的請求 --------------------------------->    |
   |   (需要時自動刷新)                                   |

設定支援 OAuth 的伺服器

支援 OAuth 的 MCP 伺服器會自動公告其授權要求。在大多數情況下,你只需要伺服器 URL——OAuth 欄位是可選的。Bob 也支援以下可選的 OAuth 屬性:

  • oauth:設為 false 可停用伺服器的 OAuth,設為 true 可明確啟用
  • clientId:OAuth 用戶端 ID(若授權伺服器需要)
  • clientSecret:OAuth 用戶端密鑰(若授權伺服器需要)
  • scope:以空格分隔的 OAuth 範圍清單

設定範例,位於 ~/.bob/mcp_settings.json(全域)或 .bob/mcp.json(專案):

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

Bob 在連線時偵測 OAuth 要求並啟動流程。不需要 headersenv 憑證。

警告:

在支援 OAuth 的伺服器上新增靜態 Authorization 標頭會完全停用自動 OAuth。Bob 不會嘗試 OAuth 流程。反之,OAuth 啟用時,Bob 在發送請求前會移除任何靜態 Authorization 標頭。只能使用一種方法。

依提示進行驗證

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

  1. 瀏覽器視窗會開啟並顯示授權提示
  2. 檢閱伺服器請求的權限
  3. 使用所需帳戶登入並授予同意
  4. Bob 會儲存 token 並自動完成連線

提示會在你的預設瀏覽器中開啟。你完成授權後,Bob Shell 會自動繼續連線。

疑難排解

驗證提示未出現

  • 確認伺服器在你的設定中沒有被標記為停用
  • 重新啟動 Bob Shell 以重新建立伺服器連線
  • 確認你的瀏覽器未封鎖授權頁面

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

  • 確認伺服器 URL 正確且可以連線
  • 確認你在同意步驟中授予了所有必要的權限
  • 查閱伺服器的文件以了解是否有額外的設定要求

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

  • 確認授權伺服器支援刷新 token。某些伺服器只發出有短期有效期的存取 token。
  • 確認你的系統時鐘準確,因為時鐘偏差可能導致 token 提早過期

你想要登出或切換帳戶

在你的設定檔中移除或重新命名伺服器項目,然後重新加入。這樣 Bob 會將其視為新伺服器,並在下次連線時觸發新的驗證提示。

這個主題如何?