最近在折腾MCP,想给Claude Code接一个本地文件系统的MCP服务器(用的官方filesystem模板)。照着文档配了claude_desktop_config.json,路径、命令、参数都核对了,但每次启动Claude Code时,连接MCP服务器总会卡在“connecting”状态,然后直接报超时。
MCP服务器连Claude Code总超时,是配置问题还是工具链太新?
全部回复
共 106 条我之前也踩过这个坑,倒不是配置写错,而是Node版本和MCP SDK的兼容性在作怪。Claude Code对MCP的握手协议卡得比较死,尤其是本地stdio传输,超时阈值给得很短,你那个filesystem模板如果是用npx直接跑的,第一次启动要下载依赖,加上Node冷启动,很容易就超过5秒的默认等待了。建议先手动在终端跑一遍npx命令,确认能不能秒回,如果能,再检查下是不是Claude Code的进程环境变量没继承到PATH,导致它找不到node。另外有个小技巧,把MCP服务器改成用绝对路径的node脚本去启动,别用npx,能省掉解析和网络请求的时间。工具链确实是太新,官方文档里的示例配置都是理想状态,实际用起来得自己调超时参数,但Claude Code这边又没暴露这个设置项,所以有时候只能曲线救国,比如写个本地守护进程常驻,再用MCP去连它。你试试把filesystem换成那个社区维护的mcp-server-filesystem的打包版,用esbuild打成单文件,启动速度能快一倍,至少我这边是这么解决的。
我之前也踩过这个坑,折腾半天发现是Node版本的问题,官方模板对版本要求挺严格,升级到LTS之后连接就稳了。另外你检查下config里路径是不是用了相对路径,Claude Code有时候对绝对路径更友好。超时的话可以试试把启动命令里的超时参数调大点,比如加个--timeout 60000,我这么干之后基本没再卡过。不过说实话,这工具链迭代太快,文档跟不上的情况太常见了,可能真不是你的锅。
八成是Node版本或环境变量问题,官方模板对路径挺敏感的,试试用绝对路径跑npx再瞅瞅日志。
这情况我也踩过坑,先检查下MCP server是不是自己崩了,单独跑一遍看报错,别光盯着Claude Code那边。
我之前也踩过这个坑,后来发现是Node版本太老导致的,官方模板对ESM支持要求比较高,升到18以上就稳了。你如果用的nvm管理版本,可以切一下再试试。另外超时那块儿,把MCP的启动超时参数从默认的30秒调到60秒,有时候本地进程冷启动确实会慢半拍。配置本身大概率没问题,这工具链确实新,文档更新速度跟不上趟。
我之前也卡在这过,后来发现是node版本太旧,MCP的stdio传输对Node 18+有依赖,换到20以后就稳了。另一个坑是配置文件里如果写了相对路径,Claude Code的工作目录不同也会导致超时,建议直接用绝对路径试试。另外你观察下是不是只有首次连接慢,后面重试就正常了,如果是的话可能是启动时扫描文件系统花了太多时间,把scope调小点能缓解。工具链确实新,文档和实际行为经常对不上,多看看GitHub的issue区比官方文档管用。
八成是Node版本或stdio握手的问题,官方模板对路径里的空格也敏感,换绝对路径试试。
我上次也这样,最后发现是环境变量没继承,直接在启动脚本里source一下就好了。
八成是node版本和MCP SDK不兼容,降级到18试试,我之前也卡这。
我之前也卡这儿,后来发现是环境变量没配上,检查下PATH里有没有node路径。
我也碰到过这个情况,后来发现是Node版本太老导致MCP服务起不来,但Claude Code那边又不会明确报错,只显示超时。你可以先单独在终端跑一下那个filesystem的启动命令,看看有没有输出报错,能省不少排查时间。另外如果用的是官方模板,记得确认下环境变量和当前shell的PATH一致,不然很容易出现这种“连不上但配置看着没问题”的尴尬。
我之前也卡在这,折腾半天发现是config里用了相对路径,而Claude Code的工作目录和终端不一样,导致服务器根本没启动。建议直接把命令和参数都写成绝对路径试试,顺便检查下MCP服务器那边有没有日志文件,有时候超时是因为它启动后崩了,但客户端还在傻等。
这个我上周刚踩过坑,大概率不是工具链太新,而是配置里有个隐蔽的坑。官方filesystem模板默认走的是stdio,但Claude Code在macOS上对绝对路径的解析有bug,尤其是~符号展开不一致,你试试把路径写成/Users/你的用户名/...全路径,别用$HOME。另外超时多半是启动时MCP server在等stdin输入,而Claude Code没正确握手,检查下是不是node版本太高,v20以上某些版本对子进程的IPC处理有兼容问题,降级到18或者设置NODE_OPTIONS=--no-experimental-fetch能解决。还有个偏方,把claude_desktop_config.json里的args改成数组形式,比如["/path/to/server.js"],别用字符串拼接,官方文档那个示例其实是给老版本用的。我最后是直接换成了@modelcontextprotocol/server-filesystem的npx包,反而一次就通了,感觉官方模板的维护有点滞后。你要是愿意折腾,可以开个--debug模式看日志,里面会明确告诉你卡在哪一步,是spawn失败还是连接超时,比盲猜有效率得多。
这问题我上周刚踩过坑,大概率不是配置抄错,而是node版本太新导致MCP的stdio握手协议兼容性问题。你可以试试把启动命令里的node换成npx的绝对路径,或者干脆降级到Node 18 LTS,我这么弄完立马就通了。另外超时时间也可以自己调一下,Claude Code默认的等待太短,本地文件系统扫描慢一点就很容易触发。
我前几天也踩过这个坑,后来发现是Node版本的问题,官方模板要求Node 18+,但我系统里默认的是16,直接卡在握手阶段。你可以先跑一下npx @modelcontextprotocol/server-filesystem试试看能不能独立启动,如果单独能起来那问题多半出在stdio通信上,检查下Claude Code是不是用的绝对路径。另外如果用的是WSL或者Docker,localhost映射也会导致超时,我之前就是被这个坑了半天。
八成是启动命令里npx路径没配对,Windows下尤其容易踩坑,试试绝对路径加node环境变量。
这工具链迭代太快,官方模板有时候跟最新版CLI对不上,直接锁个稳定版本号试试。
超时大概率是网络代理拦了localhost,把NO_PROXY加上再跑一遍。
八成是Node版本和MCP SDK不匹配,我之前也卡这,降级到18就好了。
八成是Node版本或PATH问题,官方模板对这块挺敏感的,换LTS试试。
我之前也卡在这过,后来发现是node版本太老,MCP的stdio传输对Node 18+有依赖,换到20就好多了。你可以先终端直接跑一下那个filesystem命令,看能不能正常起服务,排除路径问题。另外Claude Code的MCP超时时间好像写死了,本地服务启动慢一点就容易触发,可以试试把配置里加个env字段指定NODE_OPTIONS=--dns-result-order=ipv4first,有点玄学但对我管用。
我之前也卡在这过,后来发现是node版本太新跟MCP的stdio通信有兼容问题,降级到LTS版本就好多了。你也可以试试把超时时间调大点,官方默认的等待时长确实有点短。另外如果你用的是Windows,记得检查下PATH环境变量,有时候命令能执行但子进程找不到路径就会一直挂着。
我之前也踩过这个坑,后来发现不是配置问题,是Claude Code对MCP的握手协议卡得比较死,超时阈值设得很短。你试着在配置里加一下timeout参数,或者把启动命令改成绝对路径,有时候环境变量没加载对也会导致这种诡异现象。另外官方filesystem模板本身有点依赖Node版本,太新或太旧都可能出问题,可以先用npx手动跑一遍看日志报什么错。工具链确实迭代太快,这类问题大概率是版本兼容性在作怪,别急着怀疑自己配置。
我之前也踩过这个坑,后来发现是Node版本太老导致的,官方模板对Node 18+有依赖,升完级秒连。你可以先node -v确认下,如果版本没问题再检查下config里有没有写绝对路径,相对路径有时候会莫名触发超时。另外Claude Code最近更新挺频繁的,说不定是它自己改了握手协议,你留意下GitHub issues,昨天还有人报类似问题。
我之前也踩过这个坑,尤其是Windows下路径里带空格或者引号没转义,直接卡connecting。你可以试试把node和MCP server的绝对路径写全,然后先手动在终端跑一遍那个启动命令,看有没有报错。另外,官方模板对Node版本挺敏感的,我升级到20以上就稳定多了,你可以先排查下这两点。如果还不行,试试把超时时间调长点,最近这工具链迭代太快,很多配置项都改了,文档有时候没跟上。
我也踩过这个坑,后来发现多半不是配置格式的问题,而是MCP server启动后没等它就超时了。你可以试试把命令改成绝对路径,然后先手动跑一下那个server,看它能不能正常起来,有时候是node版本或者环境变量的问题。另外,如果用的是WSL或者Docker,网络桥接那层也容易卡,直接在本地跑反而没事。实在不行就调大超时时间,官方模板默认等待时间确实有点短。