Cline 的 MCP Servers 面板里那个 GitHub MCP Server 一直挂着红点,旁边不是写着 Disabled 就是干脆起不来,点开日志又只有一行看不懂的 npx 报错——如果你正卡在这个界面,先别急着重装 Cline 或者把 Node.js 卸了重装。这个红点大概率不是插件本身坏了,而是 cline_mcp_settings.json 里的 command 和 args 还停留在 Mac 的写法上:Mac 下 "command": "npx" 能直接跑,Windows 下 npx 是个 .cmd 包装脚本,必须把 npx 挪进 args 数组,外层 command 改成 cmd,再补一个 /c,MCP Server 才有机会变绿。这个时候可以打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 创建一把 API Key,让走这把 Key 的 Codex 帮你逐行对照配置文件,先把 Windows 写法改对,再看 GitHub Token 的权限有没有给够。TaoToken 在这里只负责把模型调用接上,MCP 配置文件仍旧由你自己在本地改。
1. Cline 的 MCP 面板亮红点,先分清是没连上还是被禁用
1.1 红点、黄叹号、Disabled 不是一回事
在 Cline 的 MCP Servers 面板里,Installed 选项卡下面每个 MCP Server 旁边都有一小块状态。新手最容易把这些状态混成一类问题,然后一通乱改,改到最后连原本能跑的 Server 也起不来了。
先把四种状态分开看:
- 灰色 + Disabled:Server 是被你自己关掉的,配置本身可能完全正确。点一下开关从 Disabled 切到 Enable 就能恢复。
- 绿色:进程活着,配置解析通过,工具列表能正常拉出来。
- 红点或黄叹号:进程压根没起来,或者起来了但握手失败。常见失败点就三处——command 找不到、args 参数顺序不对、env 里的 Token 无效。
- 一直转圈不落状态:多半是 npx 在下载包,网络慢时会卡住,或者包名写错在重试。
看清状态之后动手,能省掉一大半无效操作。红点先去看启动日志,别一上来就改 JSON;Disabled 就更简单,先 Enable 再看。
1.2 打开 cline_mcp_settings.json 看 command 那一行
Cline 的图形界面看起来在帮你「安装」,其实背后干的事就是往 cline_mcp_settings.json 里写一段 JSON。这个文件在 VSCode 里可以这样找到:点 Cline 的 MCP Servers 图标,切到 Installed 选项卡,右上角有个 Configure MCP Server 按钮,点开就是原始 JSON。
打开之后先看顶层结构,它一定是这样的:
{ "mcpServers": { "server-name": { "command": "...", "args": [], "env": {}, "disabled": false, "autoApprove": [] } } }如果连这层外壳都不对,比如把 mcpServers 写成了 mcp_servers,或者多个 Server 之间漏了逗号,Cline 会直接解析失败,整个面板上所有 Server 全红。先确认 JSON 本身能被解析,再去看单个 Server 的 command 和 args。
2. Windows 下 npx 必须挪进 args:cline_mcp_settings.json 的正确写法
2.1 Mac 能跑的配置,Windows 照抄就是红点
原文里 GitHub MCP Server 的那段配置,在 Mac 上可以直接用,但 Windows 用户必须做三处改动,这也是原文反复强调过的地方:
- 把原本写在 "command": "npx" 里的 npx 挪进 args 数组;
- 把 command 的值改成 cmd;
- 在 args 数组最前面补一行 /c。
原因不复杂。Windows 下 npx 不是一个可执行文件本体,而是一个 .cmd 包装脚本,直接让进程去 fork npx 会找不到可执行路径。写成 cmd /c npx ... 之后,实际上是让 cmd.exe 帮你解析并启动 npx,路径问题就绕过去了。这不是 Cline 的怪异设计,而是 Windows 进程启动模型决定的。
2.2 github-server 的完整可复制配置
以原文的 GitHub MCP Server 为例,改成 Windows 写法之后长这样:
{ "mcpServers": { "github": { "command": "cmd", "args": [ "/c", "npx", "-y", "@modelcontextprotocol/server-github" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_TOKEN" }, "disabled": false, "autoApprove": [] } } }几个细节:Server 的名字可以简化成 github,不一定要用完整仓库路径那一长串;-y 是让 npx 不要停下来问 yes;env 里的 GITHUB_PERSONAL_ACCESS_TOKEN 要用你自己的 GitHub Token,不要留原文截图里那种脱敏占位。
2.3 filesystem 与 time:Windows 路径和 Python 命令的差异
filesystem 这个 Server 在 Windows 下除了同样的 cmd /c 处理之外,路径还要注意两点:
"filesystem": { "command": "cmd", "args": [ "/c", "npx", "-y", "@modelcontextprotocol/server-filesystem", "C:\\Users\\Public\\Desktop" ] }路径里单个反斜杠会被 JSON 当转义符吃掉,所以 Windows 路径要写成双反斜杠;另外允许访问的目录一定要显式列出来,不要把整个盘符丢进去,这也是原文在结尾专门提醒过的安全点。
time 这个 Server 是 Python 写的,命令不是 npx 而是 python:
"time": { "command": "python", "args": [ "-m", "mcp_server_time", "--local-timezone=Asia/Shanghai" ] }注意这里 command 就不要改成 cmd 了,因为 python 本身在 Windows 上通常是可执行文件。装它之前先 pip install mcp-server-time,否则红点依旧。
3. 让 Codex 对着配置文件排查,Key 从 TaoToken 拿
3.1 给 Codex 配上 https://taotoken.net/api
自己逐行对着 JSON 看有时候容易漏,尤其是多个 Server 混在一起、逗号又多的时候。这时候可以让一个走 TaoToken 的 Codex 帮你做对照。先去 TaoToken 注册一个账号,在控制台创建一把 API Key,Key 名随便起,权限默认就行。
Codex 的配置文件在 ~/.codex/config.toml,写入下面这几行:
model = "YOUR_MODEL_ID" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY"model 这一项不要凭记忆填,去 TaoToken 模型广场 看当前列表里有什么,复制一个真实存在的模型 ID。base_url 只写 https://taotoken.net/api,末尾不要加 /v1,加了会 404。
然后在 shell 里导出环境变量:
export TAOTOKEN_API_KEY=YOUR_API_KEYWindows PowerShell 下换成:
$env:TAOTOKEN_API_KEY = "YOUR_API_KEY"3.2 把配置文件贴进对话,让 Codex 逐项对照
Codex 能跑起来之后,把 cline_mcp_settings.json 的内容粘贴到对话里,问它三个问题就够了:
- Windows 下每个 Server 的 npx 是不是都在 args 里,command 是不是 cmd,args 里有没有 /c?
- env 里的 Token 占位符有没有替换成真实值?
- 多个 Server 之间的逗号和括号有没有漏?
Codex 不会去读你硬盘上的文件,它只对着你贴进去的这一段文本做检查,改文件的动作仍旧是你自己在 VSCode 里完成。这一点要记清楚:模型给的是修改建议,落盘的是你。原始文章里提到 Cline 也可以弹一个 AI 对话窗口帮你生成配置,思路是一样的,只是把「生成」换成了「对照排查」。
4. GitHub Token 权限没给足,红点也不会消
4.1 Fine-grained token 该勾哪几个权限
配置写法全对但红点依旧,另一个高频原因在 GitHub Token 本身。原文用的就是 fine-grained personal access token,而不是传统的 classic token。签发时选 All repositories 或指定仓库,然后在 Repository permissions 里至少勾这几项:
| 权限项 | 建议级别 | 用途 |
|---|---|---|
| Contents | Read and write | 读文件、推文件 |
| Administration | Read and write | 创建仓库、管理仓库设置 |
| Codespaces | Read and write | 涉及开发环境相关操作 |
| Metadata | Read(默认强制) | 基础信息 |
只把 Contents 给 Read 的话,搜索仓库能过,一到 create_repository 就会 403,表现就是红点加调用失败。所以排障时不能只盯着 JSON,把 Token 的权限表也调出来看一眼。
4.2 Token 过期与 env 字段写错的表现
Token 有两个容易忽略的坑。第一是有效期,创建的时候没设置 expiration 或者设得太短,过几天 JSON 里什么都没动,Server 忽然全红。第二是 env 字段名写错,比如把 GITHUB_PERSONAL_ACCESS_TOKEN 写成了 GITHUB_TOKEN,命令能启动,但调用工具时参数为空,日志里能看到 401 或 403 之类的提示。
碰到这两种情况,处理方式都是在 GitHub 侧重新签发或修正 Token,然后回到 cline_mcp_settings.json 里把 env 的值换掉,保存,回 MCP 面板点一下刷新。
5. 保存后让 MCP Server 变绿:刷新、重启与一次最小验证
5.1 Installed 选项卡看状态,必要时重启 Cline
改完 JSON 保存之后,回到 Cline 的 MCP Servers → Installed 选项卡。有时候状态不会自动更新,需要点一下右上角的 Refresh,还是红的话就整窗口重载(Developer: Reload Window)。npx 第一次下载包会慢,最多等十几秒再判断。
如果重启后依旧是红点,点开 Server 名字旁边的日志箭头,日志里通常会给出非常明确的一行——command not found说明 command 写错;Cannot find module说明包名写错或没装;Unexpected token说明 JSON 本身有语法错。日志比在界面上瞎猜高效得多。
5.2 用 search_repositories 做一次最小验证
最省事的验证方式是问一句自然语言,比如「列出我 GitHub 账号下的仓库」,看 Cline 会不会自动选中 github MCP 里的 search_repositories 工具。第一次会弹一个 Approve 对话框,点允许。
如果工具被调起来并且返回了仓库列表,说明三件事都对了:Windows 的 command/args 写法、GitHub Token 的权限、MCP Server 进程的启动链路。如果返回 403,那就退回去看 Token 权限;如果 Cline 根本没选到这个工具,那说明 Server 还没变成绿色,回到 5.1 那步重来。
6. 绿了点之后,去控制台对一下这次 Codex 调用
配置能跑通之后,值得顺手做一件事:打开 TaoToken 模型对话 用同一把 Key 发一条测试消息,确认 Codex 那一侧的模型 ID 和 Base URL 填对了,顺便看看这次排障过程中的调用有没有正常记上账。如果打算把 Codex 常驻在本地做代码解释和配置对照,可以打开 Coding Plan 看一下套餐是否够用;Key 的入口在 控制台 API Keys,需要重新签发或改名都在这里。Cline 侧 MCP 配置文件的具体写法可以对照 Claude Code 接入文档 里的环境变量格式——虽然名字是 Claude Code,但其中 Base URL 和 env 变量的填写方式在 Codex 侧同样受用。
最后补一句提醒:MCP Server 本质上是本地跑的一个进程,它有权限读你允许的目录、调你授权的 API。给 filesystem 配目录时一定要显式限制,不要把整个用户目录丢进去,也不要让 Server 拿一个权限过大的 Token。红点排掉只是第一步,权限收窄才是长期能安心用的前提。