最近在折腾本地部署大模型,想用MCP来管理工具调用,但遇到个头疼的问题。我用ollama跑了qwen2.5,然后按照MCP文档配了客户端和server的config,但一启动客户端就报connection refused。查了半天,发现MCP server默认走的是HTTP还是WebSocket?端口也设了8080,但就是连不上。是不是需要先启动server再启动客户端?我试过先跑server的py脚本,没报错,但客户端那边还是提示“无法建立连接”。有没有大佬遇到过类似情况?或者推荐个靠谱的MCP部署教程?先谢过!
MCP在本地部署大模型时总是连不上,哪里配置不对?
全部回复
共 178 条MCP默认走的是HTTP,端口8080没错,但你得确认server脚本真的在监听那个端口,可以netstat看一下。另外ollama和MCP server的启动顺序确实有讲究,建议先确保server完全启动、日志里没有报错,再开客户端。我之前也卡在这步,后来发现是server的config里绑定了127.0.0.1,而客户端试图连局域网IP,改成本地回环地址就通了。可以试试把server的host设成0.0.0.0再重启。
同样踩过这个坑,MCP默认走的是WebSocket,端口8080也容易被本机其他服务占用,建议先netstat查一下端口状态。另外记得服务端要加--host 0.0.0.0参数,让监听地址对外可见,客户端连127.0.0.1试试。如果ollama和MCP server在同一台机器,可以先把防火墙关了排除网络问题。
这问题我上周也踩过坑,大概率不是配置本身的问题,而是MCP server的启动顺序和网络绑定地址没对上。MCP现在主流实现走的是HTTP over WebSocket,默认端口是8080没错,但你得先确认server脚本启动时是不是真的在监听0.0.0.0,有时候本地写死成127.0.0.1,客户端那边设的又是localhost或者别的IP,就容易报connection refused。另外ollama本身跑在11434端口,MCP server是独立的进程,你得先确保server的py脚本跑起来后,用curl或者浏览器直接访问http://127.0.0.1:8080能拿到响应,再启动客户端去连它。如果server没报错但客户端连不上,可以试试把客户端配置里的host改成127.0.0.1而不是localhost,有些系统对localhost的解析会走IPv6导致不通。还有个小细节,MCP的config文件里有时候需要显式声明transport类型,比如填ws或者http,不同版本的默认值不一样。建议翻一下你用的MCP库的github issue区,这类问题讨论挺多的,比文档更贴近实际踩坑场景。
这问题我折腾过,MCP默认走的是HTTP,不是WebSocket,端口8080没问题但得确保server先启动并且没绑定到127.0.0.1这种本地地址上。你可以试试在server脚本里加个--host 0.0.0.0参数,或者检查下ollama和MCP server是不是在同一个网络模式下跑的,docker和本地进程容易端口冲突。另外建议用mcp-cli那个测试工具先单独验证server是否正常响应,能省很多排查时间。
我猜是MCP server没监听8080端口,试试netstat看下实际运行的端口号。
大概率是server没监听对地址,试试把host设成0.0.0.0或者127.0.0.1,别用localhost。
八成是MCP server用的WebSocket,ollama那边得配成同协议才行,要不先看看日志里具体报啥错。
MCP默认走WebSocket,先确认server端有没有真的监听在8080上,netstat查一下端口状态。
我也踩过这个坑,MCP默认走的是WebSocket,你客户端那边配成HTTP肯定连不上。可以先确认下server启动后日志里有没有打印出具体的连接地址和端口,有时默认端口不是8080。另外启动顺序确实重要,得先确保server跑起来没报错,再开客户端,不然它找不到服务端就会拒绝连接。
大概率是server先启动后还没绑定端口,试试等几秒再启动客户端。
我之前也遇到过类似问题,后来换了方案。
遇到过类似问题,大概率是MCP server启动后监听的地址和客户端配置的地址不一致,比如server默认绑了127.0.0.1但你用了0.0.0.0或者宿主机IP。另外ollama跑qwen2.5时MCP走的是stdio还是HTTP得看具体实现,8080端口可能是WebSocket的,建议检查下server端日志确认实际端口和协议,或者先试个最简单的echo server排除网络问题。
大概率是server没跑在正确的端口上,或者防火墙没放行,先netstat看看8080有没有在监听。
先确认下MCP server是不是真的在8080上监听,用netstat -an看看端口状态。
本地跑MCP的话,先确认下ollama的API端口是不是跟MCP server设成了同一个,8080冲突很常见。
我之前也栽过这个坑,MCP默认走的是HTTP,端口8080没错,但关键得先确保server脚本确实在监听状态,用netstat -an查一下端口有没有起来。还有个容易忽略的点,ollama跑的模型地址和MCP server的配置里填的host要一致,别一个用127.0.0.1一个用localhost。另外建议试试把配置文件里的transport改成sse试试,有些实现默认走WebSocket反而更稳。
这问题我当初也折腾了好一阵,感觉MCP的文档写得有点简略,默认协议是HTTP over WebSocket没错,但你得确认server端是不是真的在监听8080——有时候ollama和MCP server的端口会冲突,或者你跑server的py脚本时没绑定到0.0.0.0,只绑了127.0.0.1,那外部客户端就找不到。我建议你先netstat -anp看看8080端口到底有没有进程在监听,没有的话八成是server启动失败了,检查下依赖包装全没,特别是websockets和httpx这些。另外,客户端配置文件里的endpoint地址别写成localhost,试试127.0.0.1或者本机真实IP,有些环境localhost解析会出问题。还有个小坑:MCP client启动时默认会尝试连接server,所以顺序不重要,但server要是没完全就绪就会报connection refused,你可以等server打印出“listening on”之类日志后再启动客户端。教程的话,我看过官方GitHub的example,但更推荐搜下“MCP ollama qwen2.5”的组合,社区有人写过带docker-compose的demo,省去很多环境问题。
端口8080被占用了?我之前也遇到过类似问题,MCP默认走的是WebSocket,但ollama本身也占着端口,冲突了。建议先查一下8080是不是被其他进程占着,或者换个端口试试,比如8081。另外,server启动后最好等几秒再开客户端,有时候启动日志里没报错但实际还没绑定端口。
这个问题我上周刚踩过坑,MCP默认走的是WebSocket,不是HTTP,所以光设8080端口没用,得确认server端监听的是ws协议。另外client和server的启动顺序确实有讲究,建议先确保server完全启动成功(看控制台有没有输出listening之类的日志),再启动客户端,不然连接会报错。还有就是ollama跑的qwen2.5如果挂在不同端口,MCP工具调用时也要对应配好,不能混用。
大概率是MCP server没监听在8080上,试试用netstat看下实际端口,或者检查下config里有没有写错协议。