Repository navigation
[Feature] dsh-mcp-client 缺少 OAuth 支持,无法接入需要 OAuth 2.1 的远程 MCP 服务器 #9534
huangminzhe321-art
started this conversation in
Ideas
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
问题
@deepseek-ai/dsh-mcp-client目前无法接入需要 OAuth 2.1 + PKCE 鉴权的远程 MCP 服务器,只能靠静态 header。证据
1. 传输构造时从不传
authProviderdsh-mcp-client/lib/index.js第 46 行是全包唯一的 Streamable HTTP 传输构造点:SDK 要求通过
authProvider传入OAuthClientProvider,这里没有传,也没有任何代码路径构造它。对该包全文计数认证相关标识符,全部为 0:
authProvider、OAuthClientProvider、oauth、finishAuth、redirectUrl、clientMetadata。2. 配置 schema 无任何认证字段
同文件 791–800 行,
streamable-http分支穷尽只有 8 个字段:transport、serverName、url、headers、toolCallTimeoutMs、failOnStartupError、maxInstructionBytes、reconnect。3. 打包的 SDK 其实已完整支持 OAuth
@modelcontextprotocol/client@2.0.0内含完整实现:registerClient(RFC 7591 DCR)、discoverOAuthProtectedResourceMetadata、startAuthorization、exchangeAuthorization、refreshAuthorization,并导出OAuthClientProvider/UnauthorizedError。也就是说能力已在依赖树里,只是未被 DSH 接线。
复现
目标服务器:
https://mcp.scys.com/shengcai-web/mcp(生财有术 MCP)未认证请求正确返回 401 挑战:
服务端元数据齐全且合规:
配置后 DSH 启动时连接失败(401),因为没有任何机制完成授权。
建议
dsh-mcp-client透传authProvider(SDK 已就绪,改动应较小);参考实现
Hermes Agent v0.21.3 已完整实现该能力,可作为参考:
tools/mcp_oauth.py(约 65 KB)——覆盖发现、DCR、PKCE、loopback 回调监听、令牌落盘与自动刷新,并支持 device flow 回退。
环境
0.2.0-rc.2@deepseek-ai/dsh-mcp-client@0.2.0-rc.2@modelcontextprotocol/client@2.0.0All reactions