尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

GitHub MCP Server 在 VS Code Agent Mode 里调不动工具?TaoToken 这样改 Base URL

GitHub MCP Server 在 VS Code Agent Mode 里调不动工具?TaoToken 这样改 Base URL 在 VS Code Agent Mode 里把 GitHub MCP Server 的容器拉起来、GitHub PAT 填好、.vscode/mcp.json也照着文档写完了结果在 Chat 面板里点工具没有任何反应或者只得到一句“我无法直接访问你的仓库”。这是这段时间反馈最集中的一个问题。TaoToken官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 在这条链路里只负责一件事给 Agent Mode 背后那个 LLM 提供可用的 Base URL 和 Key。MCP 的职责是把 GitHub 的能力包装成 tools 暴露出去真正发起对话、判断要不要调用工具、把工具返回值继续推进上下文的是 Host 里的模型。模型通道不通工具列表再整齐也只会挂在那里点下去只有转圈。这篇不重复协议原理只解决“调不动”先分清两条链路把 Base URL 改对再用一个create_branch把 MCP 通道和模型通道一起验完。一、工具没反应断点通常在 MCP Server 之外先把 GitHub 官方这个 MCP Server 的位置摆正。它是 GitHub 与 Anthropic 一起开源、后来用 Go 重写的一套实现可以跑在 VS Code Agent Mode、Claude Desktop 这类 Host 里。协议层面有四个角色Host 负责发起连接Client 在 Host 进程内与 Server 保持一对一通信Server 通过 Prompts、Resources、Tools 三类原语把 GitHub API 的能力暴露给模型LLM 则消费这些上下文并生成下一步动作。三类原语里Prompts 是预置指令模板Resources 是仓库、文件这类结构化上下文只有 Tools 是真正“能动手”的入口创建分支、提 PR、加评论这些操作都从这里走。认证绕不开 GitHub PATServer 进程拿着 PAT 去调 GitHub REST API。你照着原文做的三步是Docker 起服务、写.vscode/mcp.json、在认证参数里填 GitHub PAT。这三步只保证了一件事VS Code 能连上 MCP Server且 Server 有权限访问 GitHub。但 Agent Mode 完成一次工具调用实际要跨两条互不相干的通道第一条是 MCP 通道路径是 VS CodeHost→ MCP Client → MCP Server → GitHub API鉴权凭据是 GitHub PAT。第二条是模型通道路径是 VS CodeHost→ 模型服务鉴权凭据是模型服务发放的 Key。Agent Mode 的执行循环是模型先决定要不要调工具Host 替它去调把结果回灌给模型模型再决定下一步。第二条通道断掉第一步就不会发生工具自然一次都不会被触发。典型症状有三类一是模型回复“我没有访问 GitHub 的工具”说明它压根没看到工具清单二是工具卡片闪一下就消失、没有返回内容说明调用发出去了但模型没接住结果三是整个会话只有普通文本回答create_branch从来没出现。这些都不是 PAT 的问题也不是 Docker 的问题。二、TaoToken 前置先把模型通道的 Key 和 Base URL 拿到假设你的 GitHub 侧配置已经按原文完成现在补中间的这一步。打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册账号后进入控制台在 API Keys 页面创建一把新 Key。这把 Key 只用于模型通道跟 GitHub PAT 没有关系。TaoToken 给出的 Base URL 固定是https://taotoken.net/api有三个细节要在这一步就记住后面排查会反复用到。第一不要在后面自己补/v1按本篇填法就是原样https://taotoken.net/api。第二不要把官网首页地址当成 API 地址填进去https://taotoken.net是给人看的页面不是接口端点。第三不要把?utm_source...这一串查询参数复制进配置UTM 只是网页统计用写进 Base URL 会变成请求路径的一部分直接 404。两个凭据的归属也要划清楚。TaoToken 的 Key 只出现在 VS Code 的模型设置、或者 Claude Code 的ANTHROPIC_AUTH_TOKEN这一类位置。GitHub PAT 只出现在.vscode/mcp.json的env/inputs或者docker run的-e参数里。两者混填的最典型后果是接口返回 401但报错来源指向的服务跟你想的完全不是一回事排查方向直接跑偏。TaoToken 在这里只提供 Key 和 Base URLGitHub API 调用本身仍然由 MCP Server 用你的 PAT 直连完成中间不经过模型服务。三、可复制配置Docker、.vscode/mcp.json 与模型侧设置3.1 启动 MCP ServerDockerstdio 模式stdio 模式下容器由 VS Code 拉起不需要后台常驻所以不加-ddocker pull ghcr.io/github/github-mcp-server如果本地已经有镜像直接跳过这步。真正的运行参数写在mcp.json里。3.2.vscode/mcp.json完整写法在工作区根目录新建.vscode/mcp.json把 GitHub PAT 通过inputs交互式录入避免把明文 token 提交进仓库{ inputs: [ { id: github_pat, type: promptString, description: GitHub Personal Access Token, password: true } ], servers: { github: { type: stdio, command: docker, args: [ run, -i, --rm, -e, GITHUB_PERSONAL_ACCESS_TOKEN, ghcr.io/github/github-mcp-server ], env: { GITHUB_PERSONAL_ACCESS_TOKEN: ${input:github_pat} } } } }如果你用的是把配置包在mcp: { servers: { ... } }里的老版本 VS Code结构照旧把servers和inputs挪进去即可字段名不变。若你不走 stdio而是让 MCP Server 以 HTTP 传输方式跑在本地端口模型侧配置可以换成{ servers: { github: { type: http, url: http://127.0.0.1:你的端口/mcp } } }端口以你启动参数里的实际值为准。保存后 VS Code 会在编辑器右上角的 MCP 状态提示里显示服务是否已经启动第一次连接通常会弹一次 PAT 输入框。3.3 模型侧在 Agent Mode 里把 Base URL 改掉打开 Chat 视图点顶部的模型选择器进入 Manage Models选择 OpenAI Compatible 或 Anthropic 兼容条目然后Base URL 填https://taotoken.net/apiAPI Key 填刚创建的那把YOUR_API_KEY保存后回到模型选择器把这个模型选中选完之后新开一个 Chat 会话。旧的会话可能缓存了之前的模型上下文改完设置不重开会话容易出现“设置改了但行为没变”的错觉。另外检查一遍settings.json。如果你之前手动写过自定义模型端点条目它可能和 UI 上的设置相互覆盖导致实际生效的是旧的 Base URL。搜一下有没有残留的自定义 provider 配置有就清掉或改成一致的地址。3.4 Claude Code / Claude Desktop 作为对照 Host如果你同时在 Claude Code 里用这套 MCP Server模型侧的地址不写在mcp.json里而是走环境变量。Claude Code 的settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: MODEL_ID } }这里的ANTHROPIC_BASE_URL同样不要在后面补/v1。也可以用 CLI 直接拉起npm i -g taotoken/taotoken taotoken cc -k YOUR_API_KEY -u https://taotoken.net/api -m MODEL_IDClaude Desktop 一侧只需在 MCP 配置里指向同一个 Docker 服务模型凭据仍然放在它自己的 provider 设置里两边不要交叉。四、验证用 create_branch 把两条链路一次跑通不要一上来就在 Agent Mode 里测复杂任务分成三层验出错时能立刻定位在哪一段。第一层先单验模型通道。在模型对话页面里选好模型发一句普通问题能正常返回就说明 Key 和 Base URL 是对的。这一步不通后面全部免谈。第二层单验 MCP Server。用 MCP Inspector 之类的调试客户端直连那个 Docker 命令看初始化握手是否能完成、工具清单里是否列出了create_branch。这一步只验证 Server 进程和 PAT跟模型无关。第三层在 Agent Mode 里合起来测。新开一个会话输入类似这样的指令用 github 的 create_branch 工具在 owner/repo 仓库上创建一个名为 mcp-smoke-test 的分支。观察三个点Chat 面板里是否出现工具调用卡片并且参数里能看到仓库名和分支名返回文本里是否出现Branch mcp-smoke-test created in owner/repo这样的信息去 GitHub 网页上刷新分支列表确认这个分支真实存在。返回文本出现说明模型通道已经能把工具结果接回上下文分支真实存在说明 MCP Server 拿着 PAT 成功调用了 GitHub API。两条链路同时通了这套配置才算落地。五、本篇常见错排查按出现频率从高到低排Base URL 填成了官网首页。表现为模型请求直接失败或返回 HTML。改成https://taotoken.net/api。Base URL 后面自己加了/v1。表现为 404 或路径拼接错误按本篇填法不加。Base URL 尾部粘带了?utm_source...。复制粘贴时常犯查询串会被当成路径的一部分。Key 和 PAT 混填。模型设置里填了 GitHub PAT或者mcp.json里填了 TaoToken 的 Key。401 但报错来源对不上时先查这一条。mcp.json里用了${input:github_pat}但inputs数组没定义对应 id或者改完文件没有重新加载窗口。改 MCP 配置后要 Reload Window 才生效。Docker 镜像拉不下来或容器内无外网。MCP Server 调 GitHub API 是容器发出的容器网络受限时工具会超时。选中的模型不支持工具调用。部分模型只做纯文本生成会出现“工具清单能看到但永远不调用”的情况换一个支持 tool use 的模型再试。工具调用了但 GitHub 返回 403。通常是 PAT 权限不足细粒度 token 要勾上仓库内容的读写权限。Claude Code 场景下ANTHROPIC_*变量导出在了错误的 shell或者 shell 变量和settings.json里的env冲突后者优先级不明确时行为会飘。改了模型设置但没新开会话。旧会话仍按原模型执行表现就是“改了跟没改一样”。排查顺序建议固定先看模型通道能否单独返回文本再看 MCP Server 能否单独列出工具最后才看 Agent Mode 的联合调用。顺序反了很容易在 PAT 上白折腾半天。六、按你的下一步选对应入口如果你现在卡在 401、Base URL 写法、或者.vscode/mcp.json的字段格式上先去创建 Key 并对照接入文档逐项核对API Keyshttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentgithub_mcp_vscode接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentgithub_mcp_vscode如果你只是想把模型通道先跑通确认 Key 和模型 ID 可用直接在模型对话里发一条消息验证最快模型对话https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentgithub_mcp_vscode如果你打算长期在 VS Code Agent Mode、Claude Code 这类环境里跑编码和 Agent 任务按量调用之外可以看长期方案Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentgithub_mcp_vscode把 Base URL 填对、把 PAT 和 Key 分开放create_branch返回Branch xxx created in repo那一刻这套 GitHub MCP Server 才算真正接进了你的 Agent Mode。
返回列表