最近在折腾本地部署大模型,想用MCP来管理工具调用,但遇到个头疼的问题。我用ollama跑了qwen2.5,然后按照MCP文档配了客户端和server的config,但一启动客户端就报connection refused。查了半天,发现MCP server默认走的是HTTP还是WebSocket?端口也设了8080,但就是连不上。是不是需要先启动server再启动客户端?我试过先跑server的py脚本,没报错,但客户端那边还是提示“无法建立连接”。有没有大佬遇到过类似情况?或者推荐个靠谱的MCP部署教程?先谢过!
MCP在本地部署大模型时总是连不上,哪里配置不对?
全部回复
共 178 条我也遇到过类似的情况,折腾了好几天才搞定。你提到的MCP默认走的是HTTP还是WebSocket,其实是HTTP的SSE(Server-Sent Events),端口默认是8080没错,但你得确认server端有没有真正绑定到0.0.0.0或者对应IP,有时候本地跑默认只绑了127.0.0.1,外部客户端就访问不到了。另一个坑是ollama和MCP server的启动顺序,确实得先跑server再跑客户端,但你跑server没报错不代表它成功注册了工具,建议在server脚本里加个print或者日志看看有没有输出“listening on port”这类提示。另外,检查下防火墙是不是把8080端口封了,或者换个不常用的端口试试,像9090这种。我后来参考了GitHub上MCP官方仓库的example,把config里的host改成0.0.0.0,再配合ollama的API地址设置,才连上。你用的是哪个MCP客户端?有些客户端对配置文件格式要求挺严,比如JSON里不能有多余逗号。
我之前也卡在同样的问题上,后来发现MCP server默认走的是WebSocket,不是HTTP,你客户端配置里协议写对了吗?另外建议先确认server启动后端口是否真的监听,用netstat查一下,有时候ollama和MCP的端口冲突也会导致连接被拒。
我之前也踩过这个坑,MCP默认走的是HTTP,但端口8080被系统占用的概率挺大,建议换个不常用的端口比如9090试试。另外顺序确实重要,得先确保server脚本彻底跑起来、终端没报错,再启动客户端,不然连不上。还有检查下ollama的api地址是不是和MCP配置里的host一致,我上次就是本地host写错导致拒绝连接。教程的话搜“MCP ollama qwen2.5 配置”有个GitHub仓库写得挺清楚,可以翻翻issue区。
记得先确保MCP server的host设成了0.0.0.0而不是127.0.0.1,不然外部连不上。
看着像是MCP server默认走的是WebSocket,ollama那边用的HTTP,端口冲突或者协议没对上就容易报connection refused。建议先确认下MCP server的日志里有没有明确的监听端口和协议类型,有时候配置里写了8080但实际启动占用的是别的端口。我之前也卡过类似问题,换了个步骤:先确保server跑起来检查端口状态,再启动客户端连上去,顺序确实有影响。
端口8080看起来没问题,但MCP默认走的是HTTP还是WebSocket得看具体客户端实现,有些客户端比如OpenAI兼容层其实要求先启动server再连客户端。你试试在启动ollama后,手动跑一下MCP server的脚本,确认它确实在监听8080,然后用curl或者telnet测一下端口通不通。另外检查下config里有没有把host设成127.0.0.1而不是0.0.0.0,本地连接有时候会因为这个坑导致refused。
刚入门,这个对我帮助很大。
大概率是MCP server没监听在8080上,先检查下py脚本实际绑定的端口和协议。
这种情况我也踩过坑,MCP默认走的是WebSocket协议,你得确认客户端那边配置的协议类型是不是对了,光设8080端口大概率没用。另外建议先检查一下server启动后有没有在终端打印出“listening on ws://0.0.0.0:8080”这样的日志,没看到这个基本就是server没真正跑起来。还有ollama的模型服务监听地址是不是localhost,有时候端口冲突也会导致connection refused。
之前也踩过这个坑,MCP默认走的是WebSocket不是HTTP,你客户端配置里端口和协议得对应上。还有顺序问题,确实得先让server跑起来监听端口,ollama那边也得确保模型加载完成才能连。建议看看server的日志,一般会明确打印当前监听的地址和端口,跟客户端配置对比一下。
哎这个问题我折腾过好几轮,MCP的坑确实不少。你提到的connection refused大概率是server没真正跑起来,或者端口被占用了——先跑server脚本没报错不代表它就在8080上监听了,可以试试netstat -ano看下端口状态。另外MCP默认走的是HTTP over WebSocket,不是纯HTTP,所以客户端配置里得确认协议头写对了,比如ws://localhost:8080而不是http。还有个小细节,ollama跑的模型和MCP server是两套独立进程,MCP server得单独另开一个终端窗口运行,别混在ollama的shell里。我之前遇到过类似情况,最后发现是config里server的host写了127.0.0.1,但客户端在另一个容器里访问,改成0.0.0.0就通了。教程的话可以看看GitHub上MCP官方仓库的example目录,或者搜“MCP + ollama实战”有些中文笔记写得挺细,但注意版本号要对应,MCP最近更新挺频繁的。
大概率是server没跑起来就启动客户端了,先确认下MCP server的进程是否在监听8080端口。
大概率是server没绑定对IP,试试改成127.0.0.1而不是0.0.0.0,端口也检查下有没有被占用。
大概率是MCP server没监听对应端口,试试netstat看进程是否真在8080上跑着。
这问题我折腾过好几轮,感觉大概率不是端口或者协议本身的问题。MCP默认走的是HTTP over WebSocket,端口8080一般没问题,但ollama跑起来的qwen2.5可能默认绑定的是127.0.0.1,而MCP server如果监听的是0.0.0.0,或者反过来,就容易出现connection refused。你试试先确认一下ollama的服务绑定地址,用netstat或者lsof看看实际监听的是哪个IP和端口,两边保持一致。另外,启动顺序确实有讲究,得先确保MCP server完全启动并且打印出“listening on”之类的日志,再开客户端,不然客户端连上去的时候server还没准备好就会报错。还有个坑是防火墙或者docker网络模式,如果你是用容器跑的服务,记得把端口映射出来。至于靠谱教程,我建议直接去MCP官方GitHub仓库看examples目录,里面有个python的quickstart,比网上那些二手教程准得多。你跑server的py脚本没报错但客户端连不上,可以试试在server启动后curl一下它的health端点,看看是不是真的在监听。
MCP默认走的是HTTP,你设了8080端口但客户端连不上,大概率是server没正确绑定到那个端口,或者防火墙拦了。建议先确认server启动日志里有没有类似“listening on 0.0.0.0:8080”的提示,有时ollama的API地址和MCP的配置端口冲突也会导致拒绝连接。我之前用qwen2.5也遇到过类似问题,后来发现是客户端config里填的host写成了127.0.0.1,换成localhost就通了,你可以试试看。
我也遇到过类似情况,大概率是MCP server用的WebSocket协议,而客户端默认走HTTP或者端口号没对上。建议先确认server启动后监听的是哪个端口和协议,然后用curl或者netstat测一下。另外ollama本身也可能会占用端口,得避免冲突。我后来是用docker跑MCP server才稳下来的,你可以试试看。
我也遇到过类似问题,MCP默认走的是HTTP,但ollama和客户端之间端口冲突挺常见的。建议先确认下server脚本是不是真的在8080端口监听了,用netstat查一下。另外启动顺序确实重要,先跑server等它ready了再开客户端,否则容易连接拒绝。我之前是直接抄了MCP官方示例的config,把host设成127.0.0.1才解决,你可以试试。
大概率是server没先启动或者端口被占用了,ollama默认端口也不是8080,检查下配置的端口对不对。
大概率是server没完全启动成功,试试在客户端配置里把localhost换成127.0.0.1。