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 配置文件中存储长期密钥
认证流程的工作原理
- 你在配置文件中添加支持 OAuth 的 MCP 服务器(无需
headers或env凭据) - Bob 首次连接到服务器时,会检测服务器的 OAuth 授权元数据
- Bob 打开基于浏览器的认证提示,要求你登录并授予同意
- 授权后,Bob 跨会话安全地存储访问 token 和刷新 token
- Bob 在 token 过期前自动刷新。除非刷新失败,否则不会再次提示你。
Bob Shell 授权服务器 MCP 服务器
| | |
|-- 连接到服务器 --------------->| |
|<-- OAuth 元数据 (401) ---------| |
|-- 打开认证提示 --------------->| |
| (用户登录并授予同意) | |
|<-- 授权码 ---------------------| |
|-- 交换 token ----------------->| |
|<-- 访问 token + 刷新 token ----| |
|-- 已认证的请求 ------------------------------------------> |
| (需要时自动刷新) |配置支持 OAuth 的服务器
支持 OAuth 的 MCP 服务器会自动公告其授权要求。大多数情况下,你只需要服务器 URL——OAuth 字段是可选的。Bob 还支持以下可选 OAuth 属性:
oauth:设为false以禁用服务器的 OAuth,或设为true以显式启用clientId:如果授权服务器需要,填写 OAuth 客户端 IDclientSecret:如果授权服务器需要,填写 OAuth 客户端密钥scope:以空格分隔的 OAuth scope 列表
配置示例,写入 ~/.bob/mcp_settings.json(全局)或 .bob/mcp.json(项目):
{
"mcpServers": {
"my-oauth-server": {
"url": "https://your-server-url.com/mcp"
}
}
}Bob 在连接时检测 OAuth 要求并启动流程。无需 headers 或 env 凭据。
向支持 OAuth 的服务器添加静态 Authorization 请求头会完全禁用自动 OAuth。Bob 不会尝试 OAuth 流程。反之,当 OAuth 激活时,Bob 会在发送请求前移除任何静态 Authorization 请求头。请只使用其中一种方式。
收到提示时进行认证
当 Bob 首次连接到支持 OAuth 的服务器时:
- 浏览器窗口打开,显示授权提示
- 查看服务器请求的权限
- 使用所需账户登录并授予同意
- Bob 存储 token 并自动完成连接
提示会在你的默认浏览器中打开。完成授权后,Bob Shell 会自动恢复连接。
故障排查
认证提示未出现
- 确认服务器在配置中未被标记为已禁用
- 重启 Bob Shell 以重新启动服务器连接
- 检查你的浏览器是否阻止了授权页面
认证成功但服务器无法连接
- 验证服务器 URL 是否正确且可访问
- 检查你在同意步骤中是否授予了所有必要权限
- 查阅服务器文档,了解是否有其他设置要求
Token 频繁过期,需要重新认证
- 确认授权服务器是否支持刷新 token。某些服务器只颁发生命周期较短的访问 token。
- 检查你的系统时钟是否准确,时钟偏差可能导致 token 提前过期
你想退出登录或切换账户
在配置文件中删除或重命名服务器条目,然后重新添加。这会使 Bob 将其视为新服务器,并在下次连接时触发新的认证提示。