You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FastMCP SSE会话端口控制及Docker跨主机连接问题咨询

FastMCP Docker部署SSE跨容器连接问题解决方案

问题梳理

使用FastMCP 2.2.7 + MCP Python SDK 1.7.1时,不同部署场景下的SSE连接表现:

  • 主机内运行服务+主机客户端:正常,SSE会话基于初始8000端口建立,随机端口为客户端本地端口
  • Docker内服务+Docker内客户端:正常
  • Docker内服务+主机客户端:失败,核心原因并非随机端口无法映射,而是服务端回连地址错误

核心问题解答

1. 是否存在SSE会话端口控制配置?

不存在sse_port这类配置项。你看到的随机端口是客户端发起请求的本地端口,而非服务端监听端口。FastMCP的SSE交互完全基于你指定的port(如8000/8010)的HTTP长连接完成,服务端仅监听该端口,无需额外映射随机端口。

2. 服务端回连127.0.0.1导致的连接失败解决办法

判断准确——服务端从请求中获取的客户端地址是Docker内部的127.0.0.1,无法回连到主机客户端,解决步骤:

  • 客户端修改连接地址:
    不要用localhost,改用主机局域网IP(如192.168.1.100)或Docker主机专属地址(host.docker.internal,仅Docker Desktop支持):
    async with sse_client('http://192.168.1.100:8010/sse') as (read, write):
      async with ClientSession(read, write, read_timeout_seconds=timedelta(seconds=5)) as session:
        await session.initialize()
    
  • 服务端绑定外部可访问地址:
    启动服务时绑定0.0.0.0,允许接收任意来源的请求:
    mcp_server: FastMCP = FastMCP("mycorp", host="0.0.0.0", port=8010)
    
  • Docker端口映射正确配置:
    运行容器时映射服务端端口到主机:
    docker run -p 8010:8010 your-fastmcp-image
    

3. FastMCP是否支持跨机器/容器部署?

完全支持。只要满足:

  • 服务端绑定0.0.0.0,开放对应端口
  • 客户端能通过网络访问到服务端的IP和端口
  • 网络环境允许HTTP长连接(无防火墙/安全组拦截)

日志补充说明

日志中的NameResolutionError是服务端尝试访问ci-backend服务时的DNS解析失败,与SSE连接问题无关,需单独排查该服务的网络可达性或DNS配置。

内容的提问来源于stack exchange,提问作者Giorgi Sh.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 04:52:10