ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

FastAPI-MCP 分布式部署指南:3 种 MCP 网关形态 + HTTP/SSE 传输快速接入

FastAPI-MCP 分布式部署指南:3 种 MCP 网关形态 + HTTP/SSE 传输快速接入 FastAPI-MCP 分布式部署指南3 种 MCP 网关形态 HTTP/SSE 传输快速接入【免费下载链接】fastapi_mcpExpose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi_mcp你的集群里有多个 FastAPI 服务MCP 客户端却要为每个服务单独配置连接。FastAPI-MCP 用零配置微服务通信解决这个问题自动把 FastAPI 端点转成 MCP 工具挂载后应用即成为标准 MCP 网关。本文覆盖安装、部署形态选型、客户端接入与上线前检查。认识 FastAPI-MCP从 OpenAPI 到 MCP 工具FastAPI-MCP 以 FastAPI 应用为输入读取其 OpenAPI 模式生成 MCP 工具每次工具调用最终都路由回对应端点执行全程无需手写通信代码。核心能力零配置转换自动识别端点并生成对应 MCP 工具不改业务代码暴露范围可控通过 operation ID 或 tag 的 include/exclude 过滤决定哪些端点以工具形式对外两种传输HTTP推荐与 SSE向后兼容认证支持token 透传或完整的 OAuth 2 流程请求头白名单默认只把authorization头转发给后端调用可通过headers参数扩充安装只需一行uv add fastapi-mcp # 或 pip install fastapi-mcp安装完成后网关位于 MCP 客户端与各个 FastAPI 服务之间⚙️ 三种部署形态怎么选① 内嵌部署单文件搞定开发验证在已有应用上直接创建实例并挂载from fastapi_mcp import FastApiMCP mcp FastApiMCP(app) # app 为你的 FastAPI 实例 mcp.mount_http() # 默认挂载到 /mcp何时选用本地开发与联调这是验证端点清单是否正确的最快方式。② 独立网关部署业务服务与网关分离从业务应用创建 MCP 实例但挂载到一个专用应用上两个进程分开启动from fastapi import FastAPI from fastapi_mcp import FastApiMCP mcp FastApiMCP(items_api) # 业务应用只提供端点 gateway FastAPI(titleMCP 网关) mcp.mount_http(gateway) # 挂载到独立的网关应用uvicorn items_api:app --host 0.0.0.0 --port 8001 # 业务服务 uvicorn gateway:mcp_app --host 0.0.0.0 --port 8000 # MCP 网关这种形态下网关与业务服务可独立扩缩和发布业务 API 不再直接对外暴露客户端只能通过 MCP 工具访问端点。完整实现见独立部署示例。何时选用生产环境中网关与业务服务需要独立扩展、独立更新时。③ 多实例 负载均衡生产扩容流量上来后启动多个网关实例并在前面放置负载均衡器各实例配置相同只是主机与端口不同由负载均衡器分发流量、分摊压力并提高可用性这是 FastAPI-MCP 分布式部署扩容的标准形态。何时选用流量增长或对可用性有硬性要求时。 传输协议速览与客户端接入两种传输对比HTTP推荐SSE向后兼容规范最新 MCP Streamable HTTP旧版 SSE 协议挂载方式mcp.mount_http()mcp.mount_sse()默认路径/mcp/sse另有/sse/messages/消息路径适用场景新客户端、生产环境仍停留在旧协议的客户端一行代码挂载 HTTP 传输mcp.mount_http() # 推荐HTTP 传输默认 /mcp mcp.mount_sse() # 兼容旧版客户端默认 /sse需要自定义路径时传入 APIRouter 即可与 prefix 组合from fastapi import APIRouter router APIRouter(prefix/api/v1) mcp.mount_http(router, mount_path/my-mcp-service) app.include_router(router) # 最终路径 /api/v1/my-mcp-service两种传输的规范差异与连接细节见传输协议文档。MCP 客户端配置怎么写客户端url指向对应挂载路径即可{ mcpServers: { fastapi-mcp: { url: http://网关主机:8000/mcp }, fastapi-mcp-sse: { url: http://网关主机:8000/sse } } }第一条是 HTTP 传输接入第二条是 SSE 传输接入按客户端支持的协议二选一。✅ 上线前检查清单安全启用认证token 透传或完整 OAuth 2 流程见认证文档全链路使用 HTTPS配置请求速率限制防止接口被滥用核对请求头白名单默认仅authorization会转发到后端调用按需扩充headers参数监控与日志接入 Prometheus 采集网关性能指标统一日志格式示例中的setup_logging()会为 uvicorn 与fastapi_mcp配置统一输出版本化URL 路径中携带版本段如/api/v1/items每个 API 版本部署独立网关避免新旧版本工具混在同一实例❓ 高频问题问网关能自动发现后端服务吗答目前是静态配置启动时由你指定 FastAPI 应用或其地址自动服务发现计划在后续版本支持。现阶段可用环境变量或配置文件管理后端地址。问API 做版本控制时怎么处理答在路径中带上版本号并为不同版本部署独立 MCP 网关让每个客户端只看到对应版本的工具互不干扰。问有 WebSocket 传输可选吗答暂不支持 WebSocket当前只有 HTTP推荐与 SSE 两种传输按上表选型即可。 更多资源完整示例代码覆盖基础用法、端点过滤、自定义路由、认证等场景贡献指南提交 Issue 或参与开发下一步行动给项目安装 FastAPI-MCP先跑通单文件内嵌示例确认工具清单正确把网关迁移到独立部署客户端配置指向网关的/mcp路径按检查清单逐项过一遍上线前优先完成认证与 HTTPS【免费下载链接】fastapi_mcpExpose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi_mcp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表