ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

opencode-anthropic-auth 的 mcp_ 工具前缀从何而来?OAuth 工具命名限制完整解析

opencode-anthropic-auth 的 mcp_ 工具前缀从何而来?OAuth 工具命名限制完整解析 opencode-anthropic-auth 的 mcp_ 工具前缀从何而来OAuth 工具命名限制完整解析【免费下载链接】opencode-anthropic-auth项目地址: https://gitcode.com/GitHub_Trending/op/opencode-anthropic-authopencode-anthropic-auth是一个 OpenCode 插件让你用 Claude Pro/Max 订阅账号通过OAuth 授权登录Anthropic 模型无需 API Key 也能享受订阅额度。本文完整解析它源码中神秘的mcp_工具前缀从何而来以及 Anthropic OAuth 接口对工具命名的隐藏限制。项目速览用 Claude 订阅登录 OpenCode这个插件的全部逻辑集中在一个文件里index.mjs。它做三件事OAuth 登录内置 PKCE 授权流程见 index.mjs支持 Claude Pro/Max 订阅登录和一键创建 API Key 两种方式请求拦截把 OpenCode 发往 Anthropic 的请求改造成 Claude Code 官方 CLI 的模样user-agent伪装、注入anthropic-beta头工具名变换在请求中给所有工具名加上mcp_前缀在响应中再剥掉——这正是本文的主角。 订阅用户登录后插件还会把所有模型成本清零index.mjs因为订阅套餐本来就是包月的。mcp_ 前缀从何而来OAuth 工具命名限制为什么普通工具名会被服务器拒绝关键在于Anthropic 的 OAuth 通道对请求体中的工具名有严格约束。当你以 Claude Code 的身份OAuth Bearer Token调用/v1/messages接口时服务端只接受符合 MCPModel Context Protocol命名规范的工具名形如mcp__{服务器名}__{工具名}也就是说工具定义里不能出现裸名比如bash、read必须带mcp_开头的命名空间前缀。这是 OAuth 工具命名的硬性限制违反它请求就会被拒。而 OpenCode 自己定义的工具都是裸名于是插件在中间做了一次翻译。请求方向给工具统一加前缀在 index.mjs 中定义了前缀常量TOOL_PREFIX mcp_。每次发请求前插件解析请求体完成两处改写改写位置作用源码位置tools数组所有工具定义的name加mcp_前缀index.mjsmessages中的tool_use块历史消息里的工具调用名同步加前缀index.mjs注意第二处容易被忽略历史消息里的tool_use块也必须同步改名否则模型上下文中的工具引用与新的工具定义对不上对话会立刻错乱。响应方向流式还原去前缀如果只加不还原OpenCode 本地就无法把模型返回的mcp_bash映射回自己的bash工具了。所以插件对响应做了流式改写用正则mcp_([^])匹配响应流中的工具名并剥掉前缀见 index.mjs。整个过程无需缓冲完整响应边读边改对 SSE 流式输出透明。OpenCode → mcp_bash → Anthropic 服务器 Anthropic → mcp_bash → OpenCode 变回 bash一来一回前缀只在过海关时存在本地代码始终看到原始工具名。前缀之外还有哪些过海关的伪装mcp_前缀只是其中一环插件还做了几处配套处理值得新手了解系统提示词净化服务器会拦截含有 OpenCode 字样的请求插件把系统提示中的相关字样替换掉同时用负向后顾正则保护了文件路径不受影响index.mjs强制注入 beta 头合并oauth-2025-04-20等必需的anthropic-beta头并把/v1/messages请求 URL 补上betatrue参数index.mjs身份伪装user-agent设置为 Claude CLI 标识index.mjs系统提示注入聊天系统提示前会加入 You are Claude Code 声明index.mjs。小结mcp_前缀的由来一句话讲清Anthropic OAuth 通道只认 MCP 格式的工具名插件在请求出网时加前缀、响应回流时去前缀完成一次对双方都无感的双向翻译。这正是第三方客户端复用 Claude 订阅额度的关键技巧之一。想深入阅读可以从这三个文件入手核心插件逻辑index.mjs版本与依赖声明package.json版本发布脚本script/publish.ts【免费下载链接】opencode-anthropic-auth项目地址: https://gitcode.com/GitHub_Trending/op/opencode-anthropic-auth创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表