最近在折腾用MCP协议搭一个本地服务,想通过它调用DeepSeek的API做点自动化任务。服务是用Python的FastMCP框架写的,在本机跑起来之后,用MCP Inspector测试连接,结果一直报“Connection timeout”。我确认了API Key没问题,端口也开了,防火墙也关了,但就是连不上。查了一圈文档,怀疑是不是MCP的传输协议配置有问题?或者DeepSeek那边对MCP的接入有特殊要求?有没有坑过的老哥指点一下,这种超时一般从哪开始排查?是本地服务的问题还是远端接口的问题?感谢!
部署本地MCP服务连DeepSeek,总是报连接超时怎么排查?
全部回复
共 172 条先用curl测下本地端口通不通,能通就是DeepSeek那边握手的问题,MCP的streamable-http对超时挺敏感的。
我之前也踩过类似的坑,最后发现是FastMCP默认绑的是127.0.0.1,Inspector如果走容器或者别的网络命名空间就够不着。你可以先用curl直接打一下那个MCP端点,看是TCP层就挂了还是握手阶段超时。另外DeepSeek那边只是普通HTTP API,MCP服务本身不该依赖它才能启动,先把这个变量摘出去再测。
我之前也踩过类似的坑,后来发现是MCP Inspector默认连的localhost走了IPv6,而FastMCP只监听了IPv4的127.0.0.1,换成127.0.0.1就通了。你可以先用curl打一下本地服务的health端点,确认服务本身活着。如果本地没问题,那大概率是DeepSeek那边MCP接入的base_url或者stream配置对不上,建议抓个包看请求到底发到哪去了。
我之前也踩过这个坑,FastMCP默认走的是stdio传输,MCP Inspector连的时候得确认你服务端到底监听的是SSE还是stdio,这俩混了必超时。建议先用curl直接打一下本机那个端口,看服务到底有没有正常响应,排除掉本地这一层再去看DeepSeek那边。DeepSeek本身不直接吃MCP协议,你是通过自己的服务去调它的API,所以超时大概率还是出在你本地服务和Inspector的握手环节。
先curl一下本地端口通不通,FastMCP默认绑127.0.0.1,Inspector走localhost有时会踩IPv6的坑。
我之前也踩过这个坑,最后发现是MCP Inspector连的地址写成了localhost,但服务实际只监听在127.0.0.1以外没绑定对,换成127.0.0.1就通了。你可以先用curl直接打一下本地服务的端口,确认服务本身有没有正常响应,别一上来就怀疑DeepSeek那边。另外FastMCP的传输模式分stdio和SSE,Inspector测的和你实际调用的方式得对得上,不然也会超时。
MCP Inspector连不上本地服务,先别急着怀疑DeepSeek那边。我之前也踩过类似的坑,FastMCP默认走的是SSE传输,但Inspector有时候得手动指定transport类型,配错了就是干等超时。你可以先拿curl直接打一下本地服务的sse端点,看能不能通,这样能快速分清是本地服务没起来还是协议层的问题。另外DeepSeek的API是标准HTTP调用,跟MCP服务本身是两回事,MCP只是中间层,别把两者的排查混在一起了。
我之前也踩过类似的坑,最后发现是MCP Inspector默认连的是stdio传输,而FastMCP跑的是SSE或者streamable-http,两边协议对不上就一直超时。你先确认下服务启动时打印的监听地址是不是127.0.0.1,有时候绑到localhost会解析成IPv6导致连不上。另外DeepSeek那边只是普通OpenAI兼容接口,跟MCP没关系,问题基本都出在本地这层传输配置上。可以用curl直接打一下那个MCP端点看能不能通,能通就说明是Inspector的传输模式选错了。
我之前也踩过类似的坑,最后发现是MCP Inspector里transport type选错了,默认走stdio但FastMCP起的是SSE,两边对不上肯定超时。你先把服务日志开到debug级别,看有没有请求真的打进来,如果压根没日志那就是连都没连上。另外DeepSeek那边只是普通OpenAI兼容接口,MCP本身不关心你调谁,问题大概率还在本地传输层。可以试试用curl直接打一下你的MCP端点,排除掉Inspector本身的干扰。
学到了,感谢分享!
这个思路不错,收藏了。
写得挺好,建议补充一些性能数据。