最近在折腾用MCP协议搭一个本地服务,想通过它调用DeepSeek的API做点自动化任务。服务是用Python的FastMCP框架写的,在本机跑起来之后,用MCP Inspector测试连接,结果一直报“Connection timeout”。我确认了API Key没问题,端口也开了,防火墙也关了,但就是连不上。查了一圈文档,怀疑是不是MCP的传输协议配置有问题?或者DeepSeek那边对MCP的接入有特殊要求?有没有坑过的老哥指点一下,这种超时一般从哪开始排查?是本地服务的问题还是远端接口的问题?感谢!
部署本地MCP服务连DeepSeek,总是报连接超时怎么排查?
全部回复
共 161 条遇到过类似问题,大概率是MCP传输层用的WebSocket或HTTP长连接没配好,可以先用curl直接测一下DeepSeek的API端口通不通,排除远端问题。如果本地能通,检查下FastMCP是不是默认绑了127.0.0.1,换成0.0.0.0试试。另外注意DeepSeek的MCP接口文档里有没有要求特定的请求头或认证方式,之前有个坑是没加Content-Type就超时了。
先检查下MCP传输协议是不是用了stream模式,DeepSeek好像默认走HTTP轮询。
先检查下MCP Inspector连的是不是本地地址,之前我也被这坑过。
先检查下MCP Inspector的target地址是不是写对了,别漏了端口号或路径。
先用 curl -v 直连 DeepSeek 的 API 端口,排除本地服务的问题再看传输协议。
这个超时问题我当初也踩过类似的坑,排查顺序建议先从本地MCP服务本身入手。FastMCP默认的传输方式可能是HTTP长轮询或WebSocket,你得确认MCP Inspector连接时用的协议和端口是否跟服务端实际监听的完全一致,有时候端口开了但协议不匹配也会超时。另外DeepSeek的API本身对MCP没有特殊要求,它只管接收标准HTTP请求,所以问题大概率出在本地服务的网络出口上。你可以先试试用curl直接调本地MCP服务的endpoint,看能不能正常返回,如果curl也超时那就是服务进程没跑对,比如绑定了127.0.0.1但Inspector从别的网络接口访问。如果curl正常,再检查MCP Inspector的配置,有些客户端默认会用wss而不是ws,或者需要显式指定传输类型。还有个容易被忽略的点:FastMCP框架在Windows上有时会因为防火墙残留规则或端口被其他进程占用导致假死,建议换个端口或用netstat确认服务真的在监听。最后实在不行,用Wireshark抓一下本地回环包,看TCP握手完成没,能快速定位是服务端没响应还是连接被中间过程阻塞。
我最近也踩过类似的坑,建议先检查MCP Inspector连接时指定的传输协议是不是跟FastMCP服务端一致(比如stdio还是sse),这个不匹配很容易导致超时。另外,如果DeepSeek API在国内访问,网络环境也可能背锅,试试在服务端加个超时日志或者用curl直接调DeepSeek接口看能不能通,先排除远端问题。
碰到过类似的情况,当时查了半天发现是FastMCP默认走的WebSocket,但DeepSeek的API只支持HTTP,得手动把transport改成http才行。另外建议先curl一下DeepSeek的接口看网络通不通,排除本地DNS或代理干扰,再检查MCP的endpoint地址是不是写对了。
我也遇到过类似的问题,后来发现是DeepSeek API的请求地址写错了,它和MCP默认的端点不太一样,建议先确认下请求的URL是不是完全匹配官方文档。另外FastMCP的配置里有个timeout参数,默认可能只有几秒,稍微调大一点试试看,比如设成30秒。如果还是超时,可以抓个包看看请求到底到哪一步断了,这样能快速定位是本地服务卡住还是网络到远端的问题。
这问题我也踩过坑,大概率不是DeepSeek那边的问题,而是MCP传输协议默认走的是stdio而不是HTTP,你如果用Inspector连本地服务得确认它用的是sse模式或者把传输层改对。另外可以试试先curl直调DeepSeek的API看通不通,排除本地网络代理的干扰,我之前就是公司内网代理没配导致超时。
我也踩过类似的坑,后来发现是MCP的传输协议默认走的是WebSocket,如果DeepSeek那边只支持HTTP轮询的话就会超时。你可以先确认一下FastMCP里transport参数设的是啥,换个模式试试。另外本地端口最好用1024以上的,我之前用8080被系统占过。
先确认下FastMCP里base_url是不是配成localhost了,换127.0.0.1试试,我之前就这么解决的。
我建议你先用curl直连DeepSeek的API看通不通,能通再查MCP的transport配置。
先别管远端,用mcp inspector连个本地echo服务试试,通了再排查DeepSeek那边的出口IP和代理设置。
先别盯着DeepSeek,用curl直连API试试通不通,能通再查MCP的transport配置。
先看下MCP客户端连的是不是localhost,换成127.0.0.1试试,我之前就是这么解决的。
我之前也遇到过类似情况,最后发现是FastMCP默认走的stdio,而Inspector那边可能没配对,导致两边握手没完成。你先试试直接用curl调一下DeepSeek的API看通不通,排除远端问题,然后再看MCP的transport是不是用了streamable-http,端口和路径得跟服务启动时完全一致才行。另外超时时间可以调大点,本地代理或VPN有时候也会干扰,我上次就是开了代理死活连不上,关掉秒好。
我之前也踩过类似的坑,FastMCP默认的传输方式是stdio,但MCP Inspector连接本地服务时经常走的是HTTP或者SSE,这俩协议配置不对就会一直卡在超时上。你先确认下启动服务的时候有没有明确指定--transport http或者--sse,如果没指定,Inspector默认按http去连肯定连不上。另外,DeepSeek那边的API网关对MCP的支持我记得还在试验阶段,官方文档里没写得太细,但有个关键点——如果你是用MCP作为中转去调DeepSeek的HTTP接口,那超时大概率不是远端问题,而是你本地服务根本没把请求发出去。可以先用curl直接测一下DeepSeek的API看通不通,排除外网问题,然后再用MCP Inspector的日志模式看请求到底卡在哪一步。还有个容易忽略的地方,FastMCP如果开了异步模式,回调地址没绑定对也会导致超时,你检查下服务监听的地址是不是127.0.0.1,有时候绑到IPv6的::1上Inspector走IPv4就挂了。最后建议把超时时间调大点试一次,默认几秒的话本地首次加载模型配置都可能不够用。
我之前也遇到过类似情况,折腾半天发现根本不是DeepSeek那边的问题,而是本地服务绑定地址写成了127.0.0.1,MCP Inspector走的是另一个网络栈,自然就超时了。你试试把host改成0.0.0.0,或者直接用localhost而不是127.0.0.1,有时候这种细节最坑。另外,FastMCP默认的传输方式如果是stdio,而你去连HTTP端点,那肯定会超时,得确认下你用的是不是streamable HTTP或者SSE模式,MCP协议这边对传输层要求挺严格的。还有个容易忽略的点,就是代理——如果你本机开了VPN或者系统代理,DeepSeek的API请求可能被拦截了,但MCP Inspector走的是直连,两边路径不一致就会出现“一边通一边不通”的假象。建议你先用curl直接测一下DeepSeek的API端点,排除网络层问题,然后再看MCP的日志,FastMCP本身会打印详细的连接信息,比瞎猜靠谱。我之前也是把防火墙关了,结果发现是Python的requests库默认超时时间太短,调长一点就好了。如果还不行,就在MCP Inspector里换一下transport参数,比如从http改成sse试试,有些服务端实现只支持其中一种。最后提醒下,DeepSeek官方文档里其实没明确说支持MCP接入,你用的可能是第三方适配器,那问题可能出在适配器版本和API兼容性上,查一下GitHub的issue列表,很多人踩过同样的坑。
先确认下MCP服务端有没有真正监听在0.0.0.0,别只绑了127.0.0.1。再不行抓包看下请求有没有出网。
大概率是本地服务没起来或者传输层用的SSE但DeepSeek那边不支持,直接换HTTP模式试试。
我之前也踩过类似的坑,建议先别急着怀疑DeepSeek那边,大概率还是本地服务的问题。你试试用curl直接调一下FastMCP暴露的HTTP端点,看看是不是能通,如果curl正常但MCP Inspector超时,那很可能是transport配置的host没绑对,比如默认绑了127.0.0.1但Inspector走了localhost的IPv6。另外确认下MCP协议版本是否匹配,有些服务端默认走streamable-http,但Inspector可能还在用旧的SSE格式,这俩对不上也会一直卡在超时上。