背景
MCP 规范对远程 server 的官方鉴权标准是 OAuth 2.1(授权码 + PKCE、动态客户端注册、token 刷新),而产物目前完全没有 OAuth——只支持静态 token 注入(Bearer,见 #7 扩展为自定义 header)。
很多托管 / SaaS MCP server(以及越来越多遵循 MCP auth spec 的 server)走 OAuth:用户需要在浏览器里登录授权,产物拿授权码换 access/refresh token,并在过期时刷新。没有这条流程,这类 server 在真实场景下无法接入。
范围(大件,定位 v1+)
独立大功能,远超「填个密钥」:
- 交互式授权:打开浏览器到 server 的 authorization endpoint,本地起回调接收授权码(serve 进程内一个临时路由或本地端口)。
- 动态客户端注册(DCR,MCP spec 要求支持)/ 预配置 client。
- token 生命周期:access/refresh token 的安全存储(write-only,落
.env / .harness/,绝不进 config.yaml/trace/日志)+ 过期自动刷新。
harness/mcp.py 连接路径接 OAuth(httpx auth flow);CLI 一次性 run 与 web 常驻 serve 的交互差异要分别处理(CLI 无浏览器时的降级)。
- 面板:MCP 卡片 Auth 区加「OAuth 登录 / 已授权状态 / 重新授权」。
触发的红线 / 需人审(CLAUDE.md §6)
- 可能新增运行期依赖(OAuth/httpx-auth 一类)——若进默认核心需评估「薄」(§6.2)。
- 涉及密钥/令牌落盘路径(§6.5),需严格 write-only + 不入 git/trace/日志。
- 工作量大、跨多模块,建议单独排期并在 plan 阶段先停下来对齐设计(回调拓扑、token 存储位置、CLI 降级策略)。
验收(待细化)
- 对一个 mock OAuth server 跑通授权码 + 刷新(本地、无外网真账号)。
- 文档:产物
AGENTS.md + slice doc;.env.example / 存储位置说明。
- 关 MCP / 不用 OAuth 的产物零痕迹、零新增依赖(条件渲染)。
参考
背景
MCP 规范对远程 server 的官方鉴权标准是 OAuth 2.1(授权码 + PKCE、动态客户端注册、token 刷新),而产物目前完全没有 OAuth——只支持静态 token 注入(Bearer,见 #7 扩展为自定义 header)。
很多托管 / SaaS MCP server(以及越来越多遵循 MCP auth spec 的 server)走 OAuth:用户需要在浏览器里登录授权,产物拿授权码换 access/refresh token,并在过期时刷新。没有这条流程,这类 server 在真实场景下无法接入。
范围(大件,定位 v1+)
独立大功能,远超「填个密钥」:
.env/.harness/,绝不进 config.yaml/trace/日志)+ 过期自动刷新。harness/mcp.py连接路径接 OAuth(httpx auth flow);CLI 一次性run与 web 常驻serve的交互差异要分别处理(CLI 无浏览器时的降级)。触发的红线 / 需人审(
CLAUDE.md §6)验收(待细化)
AGENTS.md+ slice doc;.env.example/ 存储位置说明。参考
harness/mcp.py连接路径、docs/02-development/12-slice-11-mcp-management.md