最近在折腾MCP,想给Claude Code接一个本地文件系统的MCP服务器(用的官方filesystem模板)。照着文档配了claude_desktop_config.json,路径、命令、参数都核对了,但每次启动Claude Code时,连接MCP服务器总会卡在“connecting”状态,然后直接报超时。
MCP服务器连Claude Code总超时,是配置问题还是工具链太新?
全部回复
共 106 条八成是Node版本问题,我换到20 LTS后就没再超时过,可以试试。
配置看着没问题的话,试试把超时时间调大点,新工具链默认值确实太保守了。
我也遇到过一模一样的情况,尤其是官方filesystem模板,配完以后卡connecting简直成了日常。后来我仔细查了下,发现大概率不是配置问题,而是Claude Code启动时对MCP server的握手超时设置特别短,而本地文件系统模板初始化的时候会扫描目录,如果路径下文件多或者有网络挂载盘,一下就超了。你可以试试把MCP server的启动命令改成带日志输出的形式,先手动跑一遍看它到底卡在哪一步,我那次就是发现它卡在读取某个隐藏文件夹的权限上。另外,工具链太新这点也成立,Claude Code的MCP客户端实现还在频繁改,很多server的协议版本对不上就会静默失败,你换个更早的SDK版本反而能通。还有个歪招,把超时时间调大,虽然官方文档没直接写,但环境变量里能设,我之前调到60秒就再没出过这问题了。你要是试了这些还不行,建议看下Claude Code的debug日志,里面会明确告诉你server是没起来还是连接被拒,比瞎猜配置强多了。
我之前也遇到过一模一样的情况,官方filesystem模板按理说最稳,结果连超时搞得人想砸电脑。后来发现是Claude Code对本地路径的权限校验特别严格,得在配置里显式加上--allow-root或者把工作目录指到实际有读写权限的文件夹才行。另外你检查下node版本没?太新的Node 20+有时候跟MCP的stdio通信会有兼容坑,降级到18或者用nvm切一下试试,说不定就好了。
我之前也踩过一模一样的坑,后来发现大概率不是配置问题,而是Claude Code那个MCP客户端对stdio协议的处理方式有点特殊。官方filesystem模板默认走的是stdio,但如果你本地Node版本跟它要求的LTS不一致,很容易出现进程起来了但握手迟迟没完成的情况,表现出来就是connecting卡死。可以先试试用npx直接跑一下那个server命令,看看单独启动时有没有报错,或者能不能正常响应JSON-RPC的initialize请求。另外那个claude_desktop_config.json其实只对桌面版生效,如果你用的CLI,得检查下~/.claude.json或者项目里的.mcp.json,很多人把这两个搞混。还有个小技巧,超时时间别用默认值,手动改成30秒甚至更长,有时候是机器性能问题导致首次扫描文件系统太慢,尤其是接整个home目录时。我最后是换成了rust写的mcp-server-fs才稳定下来,工具链太新确实容易有兼容性暗坑,但多试几个实现总有一个能用。
我之前也踩过这个坑,后来发现大部分时候不是配置写错了,而是MCP server启动本身太慢,Claude Code那边的超时阈值又卡得很死。官方那个filesystem模板虽然简单,但node进程拉起来加上依赖初始化,确实容易超过默认的几秒等待。你可以试试在配置里手动加长超时参数,或者先单独在终端跑一下那个命令,看看它到底多久能返回ready,如果这里就慢,那基本就是工具链的锅了。另外,版本问题也很常见,Claude Code跟MCP的协议更新特别快,有时候官方文档跟实际发布的npm包对不上,你检查下是不是用了最新的@modelcontextprotocol/sdk,老版本跟新客户端握手时会话建立就有问题。我最后是换成了用stdio模式直接连,绕开了那个desktop配置的坑,虽然丑但稳定。你那边方便贴下完整的启动日志吗?可能报错信息比超时本身更有线索。
我之前也踩过这个坑,后来发现是node版本太老导致MCP的stdio握手一直失败,换了LTS版本就秒连了。你可以先试试在终端手动跑一下那个启动命令,看有没有报错输出,比干等超时强。另外Claude Code对config里args的解析挺严格的,路径带空格或者引号没转义也会卡住。工具链确实迭代太快,官方文档有时候都没跟上,多翻翻GitHub issues比看README管用。