这个命令做什么
`claude mcp list` 会打印所有注册到 Claude Code 的 MCP server 及其连接状态。它回答的正是你此刻最想知道的问题:我刚改完配置,生效了吗?
有一点值得先理解:注册和连接是两回事。一个 server 可以注册正确——它出现在列表里——但依然连不上,因为连接意味着真的把进程拉起来并完成 MCP 握手。这个命令是判断你卡在哪一步最快的方法。
怎么读输出
每一条会显示你注册时用的名字、启动命令和状态。connected 表示已完成 initialize 握手,它的工具对模型可用。failed 表示进程被拉起来了但没有按预期响应——可能立刻退出了,也可能启动过程中崩了。
如果你刚加的 server 压根没出现在列表里,说明配置没被读到。这指向改错了文件或者改错了作用域,而不是 server 本身有问题。
配套会用到的命令
`claude mcp add <名字> -- <命令>` 注册一个 server。那个双横线很重要:它之后的所有内容都是 Claude Code 要执行的命令,这样属于 server 的参数才不会被当成 Claude 自己的参数。
`claude mcp remove <名字>` 取消注册。当一个没配好的 server 每次启动都失败、把输出刷得很乱时很有用。
`claude mcp get <名字>` 显示单个 server 的完整配置,是确认参数和环境变量有没有被 shell 引号搞坏的最快方式。
某个 server 显示 failed 时
先把这个 server 的命令直接在终端里跑一遍。如果在终端里也失败,问题就在 server 或它的包,跟 Claude Code 无关——你刚刚省下了在错误的层面上排查的时间。
如果终端里跑得好好的、只在 Claude Code 下失败,那就怀疑环境。需要 API key 的 server 在 key 没传进去时会在启动阶段失败;而在你 shell 里好用的 PATH,GUI 启动的客户端未必拿得到。Cursor 的 spawn npx ENOENT 就是同一类问题,诊断方式也一样。
能启动但一个工具都没暴露的 server,通常是在等凭据而不是坏了。我们的详情页记录了在无凭据的干净沙箱里安装时,每个 server 实际暴露出的工具列表——拿它和你看到的对比,能很快区分「这个 server 需要配置」和「这个 server 不正常」。