最近在折腾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的API和MCP不是一回事,MCP需要服务端主动实现协议,Ollama原生不支持,你得用社区写的适配器或者自己包一层。我之前也卡在这,后来换了个叫mcp-ollama-bridge的中间件,配置里直接填模型名就行,不用动Ollama本身。你qwen2.5:7b完全没问题,跟模型类型无关。connection refused大概率是中间件没起来,或者端口写错了,你检查下那个适配器的listen端口是不是默认的8000。
这问题我上周刚踩过坑,Ollama的API确实不能直接当MCP端点用,它只暴露了原生HTTP接口,得用官方的ollama-mcp-server或者自己包一层MCP适配器。你mcp.json里填的serverURL应该是那个适配器的地址,不是Ollama本身的端口。另外qwen2.5:7b没问题,MCP跟模型类型无关,主要看工具调用格式。你试试先跑起来npx @modelcontextprotocol/server-ollama这个中转服务,再把URL指到它监听的端口。
connection refused大概率不是Ollama的问题,curl能通说明服务本身没毛病。MCP这边其实不是直接连Ollama的HTTP接口,你得装个MCP adapter或者用社区写的Ollama bridge,官方文档那套serverURL配置是给兼容OpenAI协议的端点用的。我之前也卡在这,后来换成mcp-ollama这个项目,在mcp.json里把command指向它的启动脚本,再把Ollama地址作为参数传进去就通了。模型类型倒没限制,qwen2.5:7b完全能跑,但记得adapter里要显式指定model名称,不然默认可能找不到。你试试看是不是少配了transport那层?
Ollama的API和MCP协议不兼容,得用社区写的mcp-ollama桥接器,配置里填localhost:11434肯定拒连。
模型类型没限制,但qwen2.5:7b得确认下上下文窗口够不够,之前我卡这上面好久。
这问题我上周刚踩过坑,Ollama本身不提供MCP协议端点,你得用类似mcp-ollama-bridge这种中间层把HTTP API转成MCP格式。另外检查下mcp.json里的serverURL是不是写成了/ollama的路径,有些实现要求带版本前缀。qwen2.5:7b没问题,MCP对模型没特殊限制,主要卡在协议转换那步。
大概率不是模型的问题,qwen2.5:7b本身支持MCP工具调用,关键是Ollama官方那个接口(/api/chat)压根不是MCP协议,你得用社区做的ollama-mcp-adapter或者干脆用npx跑个桥接服务才行。另外检查下客户端那边是不是走了代理,localhost被代理拦截也会报connection refused。我之前配的时候也卡这儿,后来把serverURL改成http://127.0.0.1:11434,再手动指定了adapter的端口就通了。
curl能通但MCP连不上,八成是mcp.json里serverURL的路径没写对,Ollama的API根路径是/api,你直接填http://localhost:11434肯定不行,试试http://localhost:11434/api。另外MCP这边一般不需要额外插件,但得确认下你用的MCP客户端是不是支持Ollama的OpenAPI兼容模式,有些客户端要单独开个适配器。模型类型倒没啥限制,qwen2.5:7b走chat接口没问题,关键是请求格式得匹配,建议抓个包看看MCP实际发的请求体是不是和Ollama期望的一致。
Ollama那个是原生HTTP API,不是MCP协议,你得加个MCP适配器中转一下,光改URL没用。
Ollama那个端口本来就是HTTP接口,MCP要套一层SSE或stdio适配器,直接连肯定拒。你搜下mcp-ollama-bridge试试。
官方文档确实没说清楚,关键是MCP需要走streamable HTTP,Ollama原生API不兼容,建议用npx装个中间层转发一下。
你curl通但MCP连不上,大概率不是Ollama的问题,而是MCP客户端那边没走对协议——Ollama本身不原生支持MCP,得靠一个适配层或者中间服务转一下,比如用mcp-ollama-bridge之类的项目。我之前也卡在这,后来发现直接填Ollama的API地址是不行的,得把MCP的serverURL指到那个桥接服务的端口上。模型类型倒没限制,qwen2.5:7b完全没问题,主要就是看你的MCP配置里有没有正确声明transport和端口。你检查下客户端日志,看看是不是把HTTP请求发到Ollama的根路径了,而不是/v1/chat/completions。
Ollama的API和MCP协议不是一回事,得用官方的mcp-ollama适配器才行,直接填端口肯定连不上。
Ollama的API和MCP协议不直接兼容,得用mcp-ollama这类适配器中转一下,端口别搞混了。
这问题我踩过,Ollama默认的HTTP API和MCP协议压根不是一回事,MCP需要走它自己的SDK或工具适配层,直接填localhost:11434肯定连不上。你试试装个mcp-ollama之类的社区适配器,或者看下是不是Ollama的端口没绑到对外地址,localhost有时候在容器环境里会指向错误。另外qwen2.5:7b本身没毛病,MCP主要是管工具调用和协议握手,模型类型不影响连接,报错多半还是适配层没起对。
还有个小坑,如果用了Docker跑MCP服务,记得把宿主机的11434映射进去,别用127.0.0.1要用host.docker.internal。我之前卡了一下午就是这原因,curl在本机通,但容器里访问不到。你确认下MCP进程和Ollama是不是同一个网络命名空间,不然就算填了正确端口也一样refused。
这问题我踩过一模一样的坑,你curl能通但MCP连不上,大概率不是Ollama的问题,而是MCP服务端压根没把请求转发到Ollama的HTTP接口上。MCP本身不直接对接模型API,它需要你写一个适配层(或者用社区现成的Ollama MCP adapter),把MCP的tool调用转换成Ollama的chat/completion请求。你直接在mcp.json里填serverURL,等于让MCP客户端去当Ollama的客户端,但MCP协议和Ollama的REST API根本不是一回事,所以才会connection refused。
另外检查一下MCP服务运行的环境,如果它是跑在Docker容器里,那localhost指向的是容器内部,而不是你宿主机上的Ollama,得改成host.docker.internal:11434。还有权限问题,有些MCP框架默认监听127.0.0.1,但Ollama如果绑定了0.0.0.0,有时候端口冲突也会导致奇怪的现象。
至于qwen2.5:7b,模型本身没限制,但MCP的适配器可能对工具调用的格式有要求,比如需要模型支持function calling,qwen2.5是支持的,但需要你在适配层把prompt格式调对,不然模型会乱回复。最省事的办法是去GitHub搜一下现成的“mcp-ollama”项目,很多都写好了transport层,你直接改配置文件里的模型名和端口就行,别自己硬造轮子。还有个小细节,客户端连不上时先抓包看下握手过程,是TCP层就断了还是HTTP层报错,这样能快速定位是网络隔离还是协议不匹配。
我之前也卡在这过,Ollama本身不直接支持MCP协议,它那API是给HTTP请求用的,你得用个适配层,比如mcp-ollama这种社区插件桥接一下。另外connection refused大概率不是模型问题,qwen2.5:7b完全可以跑,先检查下Ollama的host是不是绑了127.0.0.1,有些版本默认不监听外部请求。你试试把serverURL改成http://127.0.0.1:11434,或者用docker跑MCP服务时记得加network=host,不然容器里访问不到宿主机。
Ollama那个接口是OpenAI兼容的,MCP要的是自己的协议,你得用mcp-server-ollama这种适配器中转一下,直接填URL肯定连不上。我之前也卡在这,装个npx的mcp-remote再配下transport就行。模型倒没限制,qwen2.5:7b没问题,关键是把Ollama的host改成0.0.0.0试试,有时候localhost在容器里解析不对。
这问题我前几天也踩过坑,Ollama的HTTP API和MCP协议不是一回事儿,它本身不直接支持MCP,得用类似mcp-ollama这种桥接层才行。你那个serverURL填localhost:11434只是连上了Ollama本身,MCP客户端要连的是桥接服务的端口,不是这个。建议先确认下桥接进程有没有起来,端口是不是默认的8000或者别的,curl一下那个地址看看通不通。另外qwen2.5:7b应该没问题,MCP主要管通信,模型格式不太影响。
你这配置大概率是漏了层转换工具,Ollama原生API只暴露了/v1接口,MCP那边要的是走SSE或stdio的协议格式,两者对不上。我之前用docker起了个mcp-server-ollama的容器,把host.docker.internal:11434映射进去,客户端连容器的端口就通了。你本地跑的话试试直接用npx启动一个适配器,别让MCP直连Ollama。模型类型倒不用太担心,只要Ollama能正常load就行,qwen2.5跑MCP工具调用没毛病。
这个问题我之前也踩过坑,Ollama默认的HTTP API确实不能直接被MCP当server用,MCP需要单独起个适配层。你本地curl通不代表MCP能连,因为MCP走的是stdio或SSE协议,不是简单调HTTP接口。
建议你去看看mcp-ollama这个项目,或者用Docker跑一个mcp-proxy把Ollama包一层,配置里serverURL要填那个代理的地址,不是11434。模型类型倒没啥限制,qwen2.5:7b肯定能用,主要是连接方式不对。
另外检查下客户端是不是用了HTTPS,有些MCP实现默认走加密通道,本地HTTP直接被拒。你试试把URL改成ws://localhost:11434/mcp看看,或者直接看下MCP日志里的具体报错。
我之前也踩过这个坑,Ollama的HTTP API和MCP协议不是一回事,MCP需要的是专门的transport端点,不是直接怼11434端口。你得用mcp-server-ollama这类适配器,或者看看是不是要配成SSE模式,别直接用默认的REST接口。另外qwen2.5:7b这种模型本身没问题,关键是你的MCP客户端得支持Ollama的tool calling格式,不然连上了也没法调工具。建议先跑一下npx @modelcontextprotocol/server-ollama看看日志,大概率是endpoint路径没写对。
这个坑我也踩过,Ollama本身没有原生MCP端点,你直接填它的HTTP API地址肯定连不上。得用类似mcp-ollama-bridge或者自己写个适配层把Ollama的接口转成MCP协议,模型类型倒没限制,qwen2.5能跑通。你检查下是不是没在mcp.json里加transport类型,默认streamable-http可能会握手失败。我之前是用stdio模式才通的,你可以试试。