最近在折腾本地部署大模型,想用MCP来管理工具调用,但遇到个头疼的问题。我用ollama跑了qwen2.5,然后按照MCP文档配了客户端和server的config,但一启动客户端就报connection refused。查了半天,发现MCP server默认走的是HTTP还是WebSocket?端口也设了8080,但就是连不上。是不是需要先启动server再启动客户端?我试过先跑server的py脚本,没报错,但客户端那边还是提示“无法建立连接”。有没有大佬遇到过类似情况?或者推荐个靠谱的MCP部署教程?先谢过!
MCP在本地部署大模型时总是连不上,哪里配置不对?
全部回复
共 186 条我之前也踩过这个坑,折腾了大半天才搞明白。MCP server默认其实是走stdio的,不是HTTP也不是WebSocket,所以你在config里填了8080端口根本没用,客户端压根不会去连那个端口。你要是想让客户端通过端口连,得用SSE模式启动server,或者在config里明确指定transport类型。另外启动顺序确实有讲究,虽然理论上客户端会自己拉起server,但本地调试的时候最好先手动跑server脚本,确认它真的在监听。还有个容易忽略的点,ollama那边只是负责模型推理,MCP的工具调用跟它是两套独立的东西,别把两边的配置混在一起看。建议你先用官方的inspector工具测一下server能不能正常响应,能通的话再排查客户端配置。实在不行去GitHub翻翻issues,stdio和SSE混用的问题好多人问过。
先确认下server是不是只绑了127.0.0.1,客户端换localhost试试,我之前就栽在这。
我也碰到过这个坑,MCP的server和client其实是两套独立进程,得先把server跑起来再连client,顺序反了就会connection refused。另外8080端口有时候会被占,建议换成3000或者5000试试,或者用netstat看下端口到底通没通。还有个小细节,config里填的地址别用localhost,改成127.0.0.1有时候能解决玄学问题。
这个问题我前段时间也踩过坑,折腾了大半天才搞明白。MCP server默认走的是stdio而不是HTTP,所以你在config里配8080端口根本没意义,客户端压根不会去连那个端口。ollama那边只是负责跑模型,MCP的工具调用是另一条链路,两者要分开看。你那个connection refused大概率是因为客户端以为要连网络端口,结果server其实在等标准输入输出。建议你先确认用的MCP客户端是不是支持stdio模式,比如Claude Desktop那种配置方式,command指向python脚本,args传server路径就行。另外server脚本单独跑没报错不代表它真的在监听,stdio模式下它启动后就静静等着输入,看起来跟卡住一样。你可以试试把server和client的日志都开到debug级别,看看到底卡在哪一步握手。
我之前也遇到过类似问题,后来换了方案。
我之前也卡在这儿过,你检查下MCP server启动后是不是真的绑在127.0.0.1上,有些实现默认监听localhost但客户端解析成ipv6的::1就refused了。另外8080端口有没有被别的进程占着,用lsof确认一下比较稳。顺序上确实要先起server再起客户端,但更关键的是看server日志有没有收到握手请求,没收到就是网络层没通。实在不行可以试试把server绑到0.0.0.0,再不行就抓个包看看tcp有没有建起来。