1. Filesystem MCP 报错 reading choices 到底卡在哪
Filesystem MCP 是让 AI 助手直接读写你本地目录的桥接服务,Node.js 是它最常见的运行底座,TRAE 则是把它接进对话流程的客户端。当你在 TRAE 里勾选 filesystem 服务后,终端或日志里蹦出reading choices这类报错,本质是客户端在解析服务返回的 JSON-RPC 响应时,拿到的结构跟预期对不上——它想读一个 choices 数组,结果读到的是空值、错误对象或者被截断的流。
我试过在 macOS 和 Windows 两边复现,触发条件集中在三类:一是npx拉包时网络中断,服务进程根本没起来,TRAE 却已经发了初始化请求;二是 Node.js 版本低于 18,@modelcontextprotocol/server-filesystem的 ESM 加载失败,stdout 里混进了警告文本,污染了 JSON 通道;三是配置里路径写错,服务启动后立刻退出,客户端读到一个空响应体。
这个报错最迷惑人的地方在于,它不直接告诉你“服务没起来”,而是把解析失败包装成 reading choices。所以排查顺序应该是:先确认进程活着,再确认输出干净,最后才看配置路径。适合谁看?正在用 TRAE 或类似工具接 MCP、被这个报错卡住、想搞清楚配置层到底哪一步错了的开发者。下面我把从环境检查到通道调整的完整动作拆开,每一步都能复制执行。
2. TaoToken 前置准备与 Node.js 环境对齐
在动配置之前,先把运行底座对齐。Filesystem MCP 对 Node.js 的要求是 18.0 以上的 LTS 版本,低于这个版本会在加载 ESM 模块时直接抛错,而 TRAE 捕获到的就是一段非 JSON 的 stderr,最终表现为 reading choices。你可以在终端执行:
node --version npx --version如果 node 低于 18,去官网下 LTS 包覆盖安装,别用系统自带的旧版本。Windows 上还要确认npx在 PATH 里,否则 TRAE 调npx时会报 command not found,同样会走到 reading choices 分支。
接下来是 TaoToken 的接入准备。TaoToken 在这里的角色是给 MCP 服务提供模型通道,让 filesystem 工具调用背后的推理请求有稳定的出口。你需要先拿到 API Key,再确认 Base URL 指向https://taotoken.net/api。具体动作:
打开 TaoToken API Keys 页面,创建一个新 Key,复制保存。然后到 接入文档 核对当前推荐的模型 ID 和请求格式。如果你只是先验证通道是否通,可以用 模型对话 发一条测试消息,确认 Key 有效、额度正常。
这一步的意义在于:Filesystem MCP 本身不产生模型请求,但 TRAE 在调用工具前后会走模型推理。如果模型通道的 Base URL 或 Key 配错,TRAE 可能在初始化阶段就中断,日志里同样会冒出 reading choices 这类解析错误。所以先把模型通道打通,再回头调 MCP 配置,能少走一半弯路。
环境对齐的检查清单可以记一下:Node.js ≥ 18、npx 可用、TaoToken Key 已创建、Base URL 为https://taotoken.net/api、模型 ID 从文档确认。这五项都过了,再进配置环节。
3. 可复制的 JSON 配置片段与 TRAE 接入
TRAE 的 MCP 配置本质是一份 JSON 说明书,告诉客户端用什么命令启动服务、传哪些参数。下面这份配置可以直接复制,改路径就能用。macOS / Linux 版本:
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/projects/demo" ], "env": { "TAOTOKEN_BASE_URL": "https://taotoken.net/api", "TAOTOKEN_API_KEY": "sk-你的Key", "TAOTOKEN_MODEL": "从文档确认的模型ID" } } } }Windows 版本路径分隔符要改,并且建议用双反斜杠转义:
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "C:\\Users\\yourname\\projects\\demo" ], "env": { "TAOTOKEN_BASE_URL": "https://taotoken.net/api", "TAOTOKEN_API_KEY": "sk-你的Key", "TAOTOKEN_MODEL": "从文档确认的模型ID" } } } }三件套必须写全:Base URL 固定https://taotoken.net/api,Key 用你刚创建的,Model ID 从接入文档里抄,别自己猜。路径只开放当前项目目录,遵循最小权限原则,别把整个用户主目录塞进去。
如果你用的是 Cline 或 Claude Code 这类支持 MCP 的客户端,配置结构类似,但字段名可能不同。Cline 的 MCP 设置里同样需要 Base URL、Key、Model ID 三件套;Claude Code 走的是settings.json,MCP 段落在mcpServers下,格式跟上面一致。Codex 用户如果走auth.json,则要把 Key 写进对应字段,Base URL 指向https://taotoken.net/api。
配置写完后,TRAE 的 MCP 面板里应该能看到 filesystem 服务状态变绿。如果还是红的,先别急着改配置,去看进程日志——大概率是 npx 拉包失败或 Node 版本不对。
4. 验证请求与成功结果确认
配置保存后,不要直接开对话,先做两步验证。第一步,在终端手动跑一遍服务启动命令,看它能不能正常输出:
npx -y @modelcontextprotocol/server-filesystem /Users/yourname/projects/demo正常情况会看到服务启动日志,没有红色报错,进程保持运行。按 Ctrl+C 退出。如果这一步就报错,TRAE 里必然也是 reading choices,先把终端报错解决。
第二步,回到 TRAE,新建一个 Agent,在工具设置里勾选 filesystem。然后在对话里输入:
@filesystem 列出当前目录下的文件如果配置正确,AI 会调用list_directory工具,返回你指定目录的文件列表。这时候再看日志,reading choices 报错应该消失。成功标志有三个:服务状态绿色、工具列表能展开、对话里能返回真实文件列表。
再补一个模型通道的验证。在 TRAE 里发一条普通对话,比如“用一句话说明当前项目结构”,确认模型能正常回复。如果模型请求失败,日志里可能出现 401 或通道错误,这跟 MCP 本身无关,但会干扰你判断。TaoToken 的 模型对话 页面可以单独测 Key,先确认那边通,再回来查 MCP。
实测下来,大部分 reading choices 在第一步终端验证时就能暴露原因:要么 npx 拉不到包,要么路径不存在导致服务秒退。把这两个排除,TRAE 里的报错基本就没了。
5. 本篇常见错排查对照
下面按真实报错逐条对照,每条都给触发原因和动作。
401 Unauthorized:模型通道的 Key 无效或没带上。检查TAOTOKEN_API_KEY是否写进 env,Key 有没有多余空格,Base URL 是不是https://taotoken.net/api。如果 Key 刚创建,确认没有复制漏字符。到 API Keys 重新生成一个再试。
local proxy failed:客户端在本地转发请求时失败,通常是 Base URL 写成了带路径的地址,或者网络层拦截了。确认 Base URL 只到/api,不要自己加/v1之类的后缀。如果公司网络有出口限制,换一个网络环境测试。
reading choices:本文主角。三种成因——服务进程没起来、stdout 被非 JSON 文本污染、路径配置错误导致服务秒退。动作:终端手动跑启动命令、检查 Node 版本、确认路径存在且有读写权限。
OAuth 相关报错:某些客户端在没配 Key 时会走 OAuth 流程,但 MCP 场景下应该用 API Key。检查配置里是否误开了 OAuth 选项,把认证方式切回 Key。Claude Code 的settings.json里如果残留 OAuth 字段,删掉再写 Key。
工具未找到 / tool not found:MCP 服务起来了,但 TRAE 没识别到工具。在对话里输入@filesystem看能否展开工具列表。如果展不开,检查服务名是否跟配置里的 key 一致,重启 TRAE 让配置重新加载。
路径权限错误:服务启动时报 EACCES 或 EPERM。确认配置里的目录真实存在,当前用户有读写权限。Windows 上注意反斜杠转义,别写成单反斜杠导致路径解析错位。
排查顺序建议固定:先终端验证服务、再查模型通道、最后看 TRAE 日志。每次只改一个变量,改完重启客户端,避免多个问题叠加。
6. 通道调整后的长期使用建议
把 Filesystem MCP 跑通之后,通道调整的动作可以固化下来。Base URL 固定https://taotoken.net/api,Key 定期轮换,Model ID 跟着文档更新。如果你长期做编码和 Agent 任务,可以考虑 Coding Plan,把模型通道和 MCP 工具链一起管起来,省得每次换项目重配。
日常使用中,路径开放保持最小化,一个项目一个配置,别图省事开放整个磁盘。TRAE 在执行写入、移动操作前会请求确认,这个确认别关,它是最后一道防线。配置里的 Key 属于敏感信息,别提交到 Git,用环境变量或本地配置文件管理。
遇到新报错时,先回到终端手动跑服务,看原始输出。MCP 的报错在客户端里往往被包装过,终端里的 stderr 才是真相。把终端输出和 TRAE 日志对照,定位速度会快很多。