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

n8n连接自建FastAPI MCP本地服务器失败求助

问题描述

我正在搭建可调用自建FastAPI MCP本地服务器工具的n8n工作流,但n8n始终无法连接该MCP服务器。已完成以下排查:

  • 通过MCP-Inspector和Cursor验证MCP服务器运行正常(附相关截图)
  • 运行n8n的Docker命令已添加N8N_SKIP_RESPONSE_COMPRESSION环境变量,尝试解决SSE传输的gzip问题,但未生效
  • 参考过相关社区线程后仍无法解决

现附上n8n工作流、MCP Client配置截图及n8n调试信息,寻求解决方案。

可能的解决方案

1. 排查容器与本地服务的网络互通

如果n8n运行在Docker容器中,默认网络模式下无法直接用localhost访问宿主机的MCP服务:

  • 将MCP服务器的监听地址改为0.0.0.0,允许外部访问
  • 在n8n的MCP Client配置中,替换localhost为宿主机局域网IP(如192.168.x.x),或使用Docker宿主机别名host.docker.internal(仅适配Windows/macOS Docker Desktop)

2. 确认环境变量正确加载

验证N8N_SKIP_RESPONSE_COMPRESSION是否被n8n容器读取:

  • 进入n8n容器执行命令:echo $N8N_SKIP_RESPONSE_COMPRESSION,检查输出是否为true
  • 若未生效,修正Docker启动命令,确保环境变量配置正确,示例:
    docker run -it --rm -p 5678:5678 -e N8N_SKIP_RESPONSE_COMPRESSION=true n8nio/n8n
    

3. 配置FastAPI的CORS规则

FastAPI默认可能限制跨域请求,导致n8n无法连接。添加CORS中间件:

from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 生产环境建议指定n8n实际域名/IP
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

4. 启用n8n调试日志定位错误

添加调试级日志获取详细错误信息:

  • 在Docker启动命令中加入N8N_LOG_LEVEL=debug环境变量
  • 查看容器日志:docker logs <n8n-container-id>,定位具体错误(如连接超时、4xx/5xx响应码)

5. 直接测试MCP服务器的SSE端点

用curl验证MCP的SSE数据流是否正常:

curl -N http://<mcp-server-ip>:<port>/your-sse-endpoint

若curl能接收数据,问题出在n8n配置或网络层面;若curl也失败,排查MCP服务器的SSE实现逻辑。

内容的提问来源于stack exchange,提问作者Hedgineering

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:18:16