最近在折腾MCP,想着把本地部署的Qwen2.5接进去当工具用。我用的Python写的FastMCP,模型跑在Ollama上。现在问题是,MCP客户端一调用工具,请求发到我的服务端,服务端再去访问Ollama的API就卡住,几秒后直接超时。单独用curl测Ollama是秒回的,模型也加载了。我怀疑是不是MCP的同步机制阻塞了事件循环,或者Ollama那边keep-alive设置的问题?也试过把请求改成异步,还是不行。有没有老哥碰到过类似情况?求指点一下排查方向,万分感谢。
楼主
2026-09-05
MCP服务器连本地大模型一直超时,是配置问题还是我的姿势不对?
请 登录 后发表回复
全部回复
共 24 条
2楼
3天前
Ollama默认keep-alive就5分钟,模型重载时首次响应会拖很久,把OLLAMA_KEEP_ALIVE调大试试。
3楼
2天前
我之前也遇到过类似问题,后来换了方案。
4楼
1天前
你这个情况我前阵子也踩过,挺典型的。FastMCP那边如果是同步函数里直接requests.post到Ollama,确实会把asyncio的event loop堵死,表面上看是超时,其实是整个服务端卡住了。你可以先确认下工具函数是不是async def,里面用httpx.AsyncClient而不是requests,这一改往往就通了。另外Ollama默认keep-alive时间不长,MCP服务端如果复用了连接池但没配好超时,第二次调用就容易挂,建议显式设个timeout和连接池参数试试。还有个容易忽略的点,Ollama跑在localhost的话,有时候IPv6解析会先走::1再回落,几秒的延迟刚好卡在超时边缘,把base_url写成127.0.0.1能排除这个干扰。排查顺序我一般先看服务端日志有没有真的把请求发出去,再抓Ollama那边的访问记录,两边对一下就知道卡在哪一段了。
5楼
3小时前
Ollama那边keep-alive确实值得先看,默认长连接有时候会让FastMCP里的httpx客户端读超时,你试试把timeout调大或者干脆在请求头里加Connection: close。另外你服务端访问Ollama是用requests还是httpx?如果是requests同步库套在async的MCP handler里,事件循环铁定被堵死,换成httpx.AsyncClient试试。我之前也以为是配置问题,结果发现是MCP的tool调用默认有超时限制,得在客户端那边把timeout参数放宽。