最近在折腾MCP,想给Claude Code接一个本地文件系统的MCP服务器(用的官方filesystem模板)。照着文档配了claude_desktop_config.json,路径、命令、参数都核对了,但每次启动Claude Code时,连接MCP服务器总会卡在“connecting”状态,然后直接报超时。
MCP服务器连Claude Code总超时,是配置问题还是工具链太新?
全部回复
共 106 条我之前也踩过这个坑,后来发现大概率不是配置抄错了,而是Node版本的问题。官方filesystem模板对Node的版本要求挺严格的,我当时用的Node 18一直超时,换到20之后就秒连了,你可以先试试升级一下运行时。另外有个细节容易忽略,就是MCP服务器启动时的stdio通信,Windows下如果路径里有空格或者中文,超时概率会高很多,建议把项目挪到纯英文路径再跑一次。还有,Claude Code现在的版本迭代太快,配置文件里的参数格式可能已经变了,比如之前用的args数组写法,新版本可能更吃command加env的组合,这个去GitHub的issue区翻翻,最近好几个人都在反馈类似问题。如果这些都不行,试着关掉代理或者VPN,有时候本地端口被占用也会导致握手卡死,用lsof -i查一下最稳。反正这工具链确实新得有点离谱,官方文档都跟不上自己代码的更新速度,超时问题大概率是版本间兼容性导致的,不一定是你的错。
我之前也遇到过一模一样的情况,不过后来发现是npx版本和Node版本不匹配导致的。你试试在终端先手动跑一下那个filesystem命令看能不能正常启动,如果能启动但Claude Code连不上,大概率是config里command路径写死了某个node版本。另外Claude Code现在对MCP的握手超时时间设得特别短,如果你本地文件系统在索引大目录,很容易卡在connecting,可以试试换个轻量的MCP服务或者把超时时间调大点。
我之前也踩过这个坑,最后发现是Node版本太旧导致MCP的stdio通信不稳定,升到18以上就好了。你可以先单独跑一下npx @modelcontextprotocol/server-filesystem看能不能正常启动,排除掉命令本身的问题。另外超时那个参数在配置文件里其实能调,但默认值确实短得离谱,工具链太新反而是好事,说明生态在快速迭代。
我之前也踩过这个坑,后来发现八成是版本兼容性问题。官方那个filesystem模板更新得特别快,但Claude Code的MCP客户端实现还停留在老协议上,两边握手的时候对初始化参数的理解不一致,就会一直卡在connecting。你可以试试把MCP服务器那边的日志级别调到debug,看它到底卡在哪一步,是tools/list没返回还是资源初始化没完成。另外有个很隐蔽的点,就是本地路径如果带空格或者特殊符号,有些模板代码不会自动转义,导致服务器进程直接崩了但Claude Code还傻等响应。我最后是换了个思路,不用官方模板,自己写了个几十行的Python脚本用stdio模式跑,反而稳得一批。工具链太新确实是个大问题,社区里现在都是各改各的,没有统一标准,你至少得确保Claude Code和MCP SDK的版本号能对上,最好都升到最新再试一次。
我之前也踩过这个坑,后来发现是node版本太旧导致MCP的stdio通信握手慢,升级到18以上就好了。你可以先试试在终端手动跑一下那个filesystem命令,看是不是能正常返回JSON-RPC响应,能的话再排查Claude Code那边的超时时间设置。另外官方模板最近更新挺频繁的,不排除是版本兼容性问题,直接去GitHub Issues翻翻同款报错,说不定有热乎的解决方案。
我之前也踩过这个坑,后来发现是Node版本太旧导致MCP的stdio通信不稳定。你可以试试把Node升到18以上,或者直接用npx启动时加个--experimental-modules参数,能解决一部分超时问题。另外,官方模板对Windows的路径兼容性有点迷,检查下有没有中文路径或空格,我之前就是路径里有空格卡了半天。实在不行可以看看日志,Claude Code的debug模式会打印具体卡在哪一步,比瞎猜配置强多了。工具链确实太新,很多坑都得自己趟,习惯就好。
八成是npx首次拉包太慢,把超时时间调大点或者先手动跑一次缓存好。
我也遇到过,后来发现是Node版本问题,升到20就稳了。
我也碰到过一模一样的状况,折腾了整整一晚上。后来发现不一定是配置写错,Claude Code这边对MCP的握手要求特别严格,尤其本地服务器如果启动时输出任何非协议内容,比如日志、警告,它就会一直等下去直到超时。你可以试试在启动命令里把stdout重定向到日志文件,只留stderr给进程通信,或者反过来,反正得保证标准输出是干净的。另外官方filesystem模板默认监听端口可能和Claude Code期望的不一致,得看它实际绑定的是哪个地址,有时候127.0.0.1和localhost的区别就能卡死。还有一种可能是Node版本问题,太新的Node对某些stdio行为有改动,MCP SDK还没完全跟上,降级到18或20的LTS版本试试。最后,如果你用npx启动,记得先手动跑一次让缓存热起来,不然首次拉包超时也会被误判成连接失败。工具链确实太新,尤其MCP协议本身还在快速迭代,很多坑都是文档没写的。
八成是stdio路径没配对,Windows下尤其容易踩坑,试试把命令写成绝对路径。
超时多半是node版本问题,换LTS版再跑一次,官方模板对新版本兼容还不太行。
我上周也踩过这个坑,最后发现是node版本太旧,MCP的stdio通信对Node 18+有硬性要求,升完级秒连。你可以先跑一下npx @modelcontextprotocol/server-filesystem --version看能不能正常输出,能输出基本就是Claude Code这边缓存了旧的配置。另外试试把超时时间调大点,有些机器首次启动要编译依赖,默认的10秒确实不够用。工具链确实太新了,文档更新速度跟不上,现在全靠社区互相踩坑。
我之前也遇到过一模一样的情况,最后发现是npx首次拉包太慢导致的假超时。你可以试试先手动在终端跑一遍npx @modelcontextprotocol/server-filesystem,等依赖装完再启动Claude Code,往往就好了。另外如果用的是Windows,路径里的反斜杠转义也容易出问题,建议统一改成正斜杠试试。
八成是JSON里环境变量或路径没转义对,我之前也卡这,换成绝对路径+反斜杠转义就好了。
我最近也踩过类似的坑,官方filesystem模板其实挺容易出问题的。你检查下MCP server有没有正确编译,有时候模板需要先build一下再配路径,直接指源码目录就会超时。另外Claude Code对MCP的握手协议卡得很严,WSL或者Docker环境下网络层容易拖后腿,试试把超时时间调长点或者改用stdio模式看看。工具链确实太新了,文档更新速度跟不上实际改动,多翻翻GitHub的issue比看官方文档有用。
我之前也踩过这个坑,后来发现是npx首次拉包太慢导致的超时,不是配置问题。可以试试先用命令行手动跑一遍那个filesystem命令,把依赖缓存好再连Claude Code,成功率会高很多。另外检查下Node版本,官方模板对v22+支持更好,老版本容易莫名其妙挂起。如果还不行,把超时时间调长点,或者直接换成本地编译的二进制,绕开npx那层。
我之前也遇到过一模一样的坑,后来发现是Node版本太旧,MCP的stdio传输对版本有要求,升级到20以上就稳了。你可以先试下在终端直接跑npx @modelcontextprotocol/server-filesystem看能不能正常起服务,能起的话再排查Claude Code那边的配置。另外超时时间在设置里能调,具体字段我忘了,但搜一下“requestTimeout”应该能找到,别急着怀疑工具链太新,多半还是环境问题。
八成是版本坑,官方模板和Claude Code的MCP协议握手有兼容问题,直接换stdio模式或者锁个旧版试试。
遇到过类似的,多半是node版本不够新,MCP的传输层对异步处理要求高,升到20+后基本就稳了。
我之前也遇到过一模一样的情况,折腾了两天才发现不是配置的问题。官方那个filesystem模板其实有个坑,它默认绑定的端口和Claude Code内部默认的端口有时候会冲突,你试试在config里显式指定一个不常用的端口,比如--port 4321,然后Claude Code那边也同步改一下。另外超时这个事儿,很多时候是本地防火墙或者代理在捣乱,尤其是如果你开了系统代理或者VPN,MCP的localhost请求会被拦截,你可以在启动Claude Code前临时关掉代理试试。还有一个我后来才注意到的点,就是Node版本,官方模板要求Node 18+,但如果你用的nvm管理版本,可能全局路径和本地路径不一致,导致spawn的时候找不到命令,这个用which node看一眼就能确认。工具链确实太新了,很多文档还是按老版本写的,社区里也没几个完整的排错帖,我最后是直接去GitHub的issue区翻到一个类似的讨论才解决的。你要是还卡着,可以试试把日志级别调成debug,看具体是卡在握手还是初始化,那个输出信息比超时提示有用得多。
我也碰到过一模一样的情况,最后发现是Node版本的问题,官方模板要求Node 18以上,但我系统里默认的还是16,MCP的stdio传输直接挂掉。你可以先终端里手动跑一下npx @modelcontextprotocol/server-filesystem看看能不能正常启动,如果报错就说明不是配置的事。另外那个超时大概率不是网络问题,因为本地回环根本不存在延迟,更像是Claude Code在等MCP进程返回握手信息,但进程自己崩了或者卡住了。还有个坑是路径别带中文或空格,Windows上尤其容易出幺蛾子。工具链确实太新,文档都还没跟上,我上周看GitHub上还有人在提Windows下路径转义导致的启动失败,你如果用的PowerShell记得检查一下参数是不是被解析成了数组而不是字符串。实在不行就降级到0.1.x版本,新版反而更不稳定,我最后锁在0.1.6才顺畅。
我也遇到过类似情况,尤其是官方filesystem模板,版本更新特别快,文档和实际行为经常对不上。你先试试把config里超时参数调大点,比如socketTimeout或者环境变量,有时候默认的几十秒根本不够。另外确认下MCP server是不是真的启动成功了,可以单独跑一下命令看有没有报错,我上次就是node版本太低导致进程直接崩了,但Claude Code那边还傻等。工具链太新确实坑多,建议先锁定一个已知能用的版本组合,别追最新。
我也碰到过这个,折腾半天最后发现是npx版本对不上,MCP那个模板默认用的启动命令在本地解析有问题。你试试把filesystem模板直接装成全局包,然后用绝对路径去启动,超时概率会低很多。另外Claude Code对MCP握手时限卡得挺紧的,第一次拉起node进程慢就容易超时,可以看看日志里有没有具体卡在哪一步。
顺带提一句,官方模板现在对Node版本要求挺新的,如果本地是18以下的旧环境,建议先升级再测。这工具链确实迭代太快,上周还正常的配置这周可能就废了,有时候真不是你的锅。