最近在折腾MCP服务,想着把本地跑的Ollama模型通过MCP协议暴露出来给其他应用调用。按照官方文档配了mcp.json,serverURL填的是http://localhost:11434,但客户端总是报“connection refused”。我Ollama服务是正常启动的,用curl测过能返回模型列表。是不是MCP需要单独装什么插件?还是说Ollama默认的API接口不能直接对接MCP?另外,我的Ollama跑的是qwen2.5:7b,是不是对模型类型也有要求?看文档有点晕,求指点。
部署MCP服务时一直连不上Ollama,有大佬知道怎么配吗?
全部回复
共 194 条这情况我上周刚踩过坑,问题大概率不是Ollama本身,而是MCP服务端需要走stdio或SSE传输,你直接填HTTP地址它当然连不上。建议先确认下你用的MCP SDK版本,新版一般要配transport类型,另外可以试试把serverURL改成ws://localhost:11434/sse试试。模型类型倒没限制,qwen2.5:7b完全没问题,主要卡在协议适配这块。
我之前也卡在这过,Ollama的HTTP API本身不是MCP协议,得用官方的ollama-mcp-server桥接一下,光改serverURL肯定不行。你那个connection refused大概率是MCP服务起在别的端口,或者没把Ollama的host设成0.0.0.0,只监听localhost的话容器里访问不到。模型类型倒没限制,qwen2.5:7b完全够用,重点是把transport配成streamable-http,别用stdio。检查下MCP进程日志,看它实际请求的是哪个地址,多半是端口写错或者没加/v1。
这问题我上周刚踩过坑,你curl能通但MCP连不上,大概率不是Ollama本身的问题,而是MCP客户端那边没把Ollama当成“工具”来适配。Ollama的API本身是OpenAI兼容的,但MCP协议要求的是JSON-RPC over stdio或者HTTP,你不能直接把serverURL指到11434就完事,得有个中间层转换。我后来用的是mcp-ollama-bridge这种社区项目,或者干脆用mcp-server-openai那个适配器,把Ollama的base_url替换成http://localhost:11434/v1,然后模型名照填。至于qwen2.5:7b,没听说有模型类型限制,只要Ollama能正常生成响应就行。你检查下mcp.json里是不是少了“transport”: “http”这个字段,我之前就是漏了这个,一直报connection refused。另外有些客户端默认走SSE,你得在服务端配置里明确启用streamable-http模式,不然Ollama那边根本收不到握手请求。最后建议你开一下MCP客户端的debug日志,看它实际请求的是哪个端口和路径,八成是路径不对,Ollama的根路径和/v1路径返回的内容结构不一样。
我之前也卡在这过,Ollama的API默认不走MCP那套协议,得用官方的mcp-ollama适配器或者自己包一层HTTP服务才行。你直接填localhost:11434肯定连不上,那个端口是给REST API用的,不是MCP的endpoint。模型倒没啥限制,qwen2.5:7b完全没问题,关键是把MCP server的地址指向适配器,比如用npx跑个转发服务,然后把serverURL改成那个转发端口。另外检查下客户端是不是用的http而不是https,有些环境会默认走TLS导致握手失败。
排查了下发现你大概率是把Ollama原生API和MCP的传输层搞混了,Ollama这边确实不直接暴露MCP端点,得用社区那个ollama-mcp-bridge做转换,或者干脆用n8n这类工具走HTTP请求封装。还有connection refused多半是端口绑定的问题,你确认下Ollama是不是监听在127.0.0.1而不是0.0.0.0,docker部署的话要加-p 11434:11434。qwen2.5:7b本身没限制,但记得MCP工具调用时模型得支持function calling,建议先用小模型测通再上7b。
这问题我上周刚踩过坑,Ollama的API本身不直接兼容MCP协议,你得用类似mcp-ollama或者自己写个适配层把工具调用转成HTTP请求。另外connection refused大概率是MCP服务跑在容器里而Ollama暴露在宿主机,这时候localhost指向的是容器自己,得换成host.docker.internal:11434。模型类型倒没啥限制,qwen2.5:7b完全能跑,主要是工具调用格式要对,建议先看下MCP客户端日志里具体请求路径是不是对上了。
这问题我上周刚踩过坑,Ollama的HTTP API和MCP协议压根不是一回事,官方那个mcp.json配的是给MCP客户端用的,得用专门的Ollama MCP适配器,比如mcp-server-ollama这种,直接裸连肯定拒。你curl能通说明服务没问题,换个思路,用npx跑个桥接服务,把Ollama包一层再暴露给MCP,模型类型其实无所谓,qwen2.5:7b完全够用。另外检查下是不是mcp.json里的transport类型写错了,有的客户端要配stdio或sse,不是单纯填个URL就完事。
Ollama的API本来就不兼容MCP协议,得用mcp-ollama这类适配层才行,直接填端口肯定连不上。
这问题我踩过坑,Ollama的API和MCP协议不是一回事儿,它原生不支持MCP,得靠中间层转发。我之前是用mcp-server-ollama这个社区适配器解决的,配置里填的不是http://localhost:11434,而是适配器自己的地址和端口。另外qwen2.5:7b没问题,模型类型不挑,只要适配器支持ollama的chat接口就行。你检查下是不是适配器没起或者端口写错了。
Ollama的HTTP API本身不直接兼容MCP协议,官方那个mcp.json配置其实只是把Ollama当普通HTTP端点用,但MCP客户端要求的是走stdio或SSE这类传输层,所以你得在中间加个适配层,比如用mcp-ollama-bridge这类项目。另外qwen2.5:7b没问题的,模型类型不限制,只要请求格式对就行。你curl能通但client refused,大概率是MCP进程没拿到localhost的权限,试试把serverURL改成127.0.0.1,或者检查下MCP容器/进程的网络模式是不是host。
我前两天也踩过这个坑,你curl能通但MCP连不上,大概率不是Ollama的问题,而是MCP客户端默认走了HTTPS或者代理。你试试把serverURL改成http://127.0.0.1:11434,有些环境localhost会解析成IPv6的::1,Ollama只监听了IPv4。另外确认下mcp.json里有没有配transport字段,有的实现需要显式声明用streamable-http而不是sse。模型类型倒不用太担心,qwen2.5走OpenAI兼容接口完全没问题,反正MCP这边只是个转发。你要是用Claude Desktop的话,还得在配置里把OLLAMA_HOST环境变量传进去,不然它子进程里连不到你系统里那个Ollama实例。
我之前也卡在这过,curl通不代表MCP能连,因为MCP客户端默认走的是sse或stdio,不是直接打你那个rest接口。你得确认mcp.json里配的是不是http://localhost:11434/sse,或者改用mcp-remote这种代理工具,不然connection refused很正常。另外qwen2.5:7b本身没问题,模型类型不影响连接,但建议先把Ollama的host绑到0.0.0.0试试,有时候localhost解析会出幺蛾子。
我之前也踩过这个坑,connection refused大概率不是Ollama本身的问题,而是MCP客户端解析serverURL的方式和你预期的不一样。你curl能通说明11434端口没问题,但MCP服务要求的是SSE或Streamable HTTP端点,而Ollama原生API(/api/generate那些)根本就不是MCP协议,所以直接填http://localhost:11434肯定不行。你得找Ollama的MCP适配器,比如官方有个ollama-mcp-server的Python包,装完后它会在另一个端口起服务,你的mcp.json里应该指向那个适配器的地址,而不是Ollama本体。另外qwen2.5:7b本身没问题,MCP不挑模型,但如果你用的是远程Ollama(比如Docker里跑的),记得把host改成0.0.0.0而不是默认的127.0.0.1,否则外部进程连不上。我当初就是漏了这步,折腾了半天。建议你先跑一下ollama-mcp-server --help看看它默认监听哪,然后客户端配置里把transport改成sse试试。
这问题我踩过坑,Ollama原生API确实不是MCP协议,你得用官方的ollama-mcp-server这个桥接服务,光配serverURL没用。另外connection refused大概率是MCP客户端跑在容器里,localhost指向的是容器自己,要改成host.docker.internal:11434。模型本身没限制,qwen2.5:7b完全够用,就是记得在MCP配置里把transport设成streamable-http,别用默认的stdio。
其实你这个curl通但MCP连不上的情况,大概率不是Ollama本身的问题,而是MCP服务端和客户端之间的协议握手没走对。Ollama那个原生API是OpenAI兼容的REST风格,跟MCP的JSON-RPC完全不是一回事,中间必须得有个适配层,比如官方那个mcp-ollama桥接工具,或者你自己写个轻量代理把请求转换一下。我之前也踩过这个坑,直接填Ollama的地址是行不通的,MCP要求的serverURL指向的是那个适配服务的端口,不是11434。另外你检查下mcp.json里的transport类型,如果写的是stdio但实际跑的是HTTP模式,那也会报connection refused,这个特别隐蔽。模型类型倒是没硬性要求,qwen2.5:7b完全够用,关键是看适配层支不支持tools调用的格式转换,有些桥接工具对非OpenAI原生的模型名解析会出问题。建议你先跑个最简单的官方示例,确认那个适配服务自己起来后能不能用curl访问到,再回头调客户端配置,别一上来就套复杂场景。
我之前也踩过这个坑,connection refused大概率不是Ollama本身的问题,而是MCP客户端和服务器的网络栈没对上。你curl能通,说明Ollama的HTTP接口没问题,但MCP走的是stdio或SSE那套,不是直接拿REST API去怼的,所以serverURL填localhost:11434可能压根就不对。MCP官方对Ollama的支持很有限,它默认的API返回格式和MCP需要的tool schema不兼容,你得自己写个适配层,或者用别人封装好的MCP-Ollama桥接器,比如mcp-ollama这种社区项目。模型类型倒不是硬性要求,qwen2.5:7b完全能跑,关键是你得把模型的能力映射成MCP的tool描述,比如让客户端知道这个模型能调用什么参数。我建议你先别纠结配置文件,直接用npx跑一个现成的ollama-mcp-server试试,看能不能连上,能连上再回头调自己的mcp.json。还有个细节,如果你是Windows或者WSL,localhost可能解析到IPv6的::1,而Ollama只监听了IPv4,这也会导致refused,试试改成127.0.0.1。最后问一句,你的MCP客户端是用的什么框架?如果是Claude Desktop或者自研的,它们对MCP的握手协议版本要求也不一样,这个也容易忽略。
我之前也踩过这个坑,connection refused大概率不是MCP的问题,而是Ollama的监听地址没对上。默认Ollama只绑定了127.0.0.1,但MCP客户端有时候会用host.docker.internal或者容器IP去访问,你curl能通是因为在宿主机上直接打的localhost,换个环境就断了。你试试把OLLAMA_HOST设成0.0.0.0:11434再重启服务,然后MCP配置里把serverURL改成局域网IP或者host.docker.internal,应该就能解决。
另外Ollama官方其实没有原生MCP支持,你得用社区做的桥接插件,比如mcp-ollama或者通过modelcontextprotocol的python SDK自己包一层HTTP服务,直接把localhost:11434填进MCP的serverURL是不行的,那个接口是REST风格,不是MCP的JSON-RPC格式。模型类型倒没限制,qwen2.5:7b只要支持openai兼容接口就能转,但你可能得在插件里指定模型名和请求模板。
还有个比较隐蔽的点,如果你用的是Docker跑的MCP客户端,记得检查网络模式,bridge模式下容器内访问宿主机要用172.17.0.1而不是localhost。我之前卡了整整一晚上,最后发现就是端口绑定的问题,改完OLLAMA_HOST和客户端地址就秒连了。你可以先用nc -zv 127.0.0.1 11434确认下端口状态,再一步步排查。
这问题我踩过,Ollama的API默认走的是HTTP+JSON,不是MCP协议,官方那个MCP适配器其实是个中转层,得单独用npx或者docker起一个mcp-ollama的桥接服务,直接用serverURL指到11434肯定不通。我当初是配了transport: "streamable-http"之后才连上的,你检查下mcp.json里是不是少了这个字段。模型类型没啥限制,qwen2.5能跑就行,主要是别用HTTP当streamable-http的端点。
curl能通说明Ollama本身没问题,问题出在MCP这边压根没转发对。官方那个mcp.json里的serverURL其实不是填Ollama的API地址,得填MCP适配器的地址,你试试装个mcp-server-ollama这类中间层,让它去跟11434通信。另外qwen2.5:7b应该没问题,MCP对模型没硬性要求,关键是适配器得把请求格式转换成Ollama能认的。我之前也是卡在这,后来发现是配置文件里漏了transport参数,你检查下是不是用的stdio还是sse。
Ollama的API本身不是MCP协议,得用mcp-ollama这种适配器转发下,端口别搞混了。