三步搭出零配置MCP网关:FastAPI分布式部署实战

三步搭出零配置MCP网关:FastAPI分布式部署实战 三步搭出零配置MCP网关FastAPI分布式部署实战【免费下载链接】fastapi_mcpExpose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi_mcp3 个 FastAPI 服务0 行胶水代码FastAPI-MCP 会把每个端点自动转成 MCP 工具把整套服务暴露成零配置的 MCP 网关接管微服务通信的最后一公里。下面从装包到独立网关本地跑通全程照着做即可。5分钟跑通第一个MCP网关先确认环境Python 3.8 以上FastAPI 0.100.0 以上。装包一条命令uv add fastapi-mcp # 或 pip install fastapi-mcp然后是完整的最小可运行示例from fastapi import FastAPI from fastapi_mcp import FastApiMCP app FastAPI(title商品服务) app.get(/items/{item_id}) async def read_item(item_id: int, q: str | None None): return {item_id: item_id, q: q} mcp FastApiMCP(app) # 读完 OpenAPI端点逐个变成 MCP 工具 mcp.mount_http() # 挂到默认路径 /mcp if __name__ __main__: import uvicorn uvicorn.run(app, host0.0.0.0, port8000)启动后用 MCP Inspector 验证另开终端执行npx modelcontextprotocol/inspector地址填http://127.0.0.1:8000/mcpTools 面板点 List Tools能看到read_item就说明链路通了。从写完FastApiMCP(app)那一刻起所有接口都已是 MCP 工具你一行包装代码都不用写。MCP网关在系统里的位置三种部署模式对比部署模式做法适合场景单进程内嵌mount_http()不传参网关与业务同进程单服务、快速验证独立网关FastApiMCP(业务app)后mount_http(mcp_app)挂到新建的空应用上聚合多个业务服务业务 HTTP 接口不再直接对外多实例 负载均衡独立网关起多份前面挂负载均衡器生产环境高可用独立模式有两个值得注意的细节。第一默认情况下网关进程内通过 ASGI 直接调用业务应用的路由不走网络往返所以分开部署指的是分开两个 FastAPI 应用、分开两份配置而不是必须拆成两台机器。第二业务应用的原始 HTTP 接口不会随网关一起暴露出去外部只能经 MCP 协议访问。完整写法见 独立部署示例。需要真正跨机器调用远端服务时给FastApiMCP传一个设置了base_url的httpx.AsyncClient调用就会走真实网络。SSE还是HTTP一张表选明白对比项mount_http()mount_sse()协议规范MCP Streamable HTTP最新SSE旧版默认挂载路径/mcp/sse会话管理支持可选会话连接处理更健壮长连接事件流适合客户端新版客户端或mcp-remote桥接只支持 SSE 的旧客户端新项目直接选 HTTP只有需要兼容旧客户端时才上 SSE。挂载路径也可以自定义挂到APIRouter上时mount_path会接在 router 的 prefix 后面from fastapi import APIRouter router APIRouter(prefix/api/v1) mcp.mount_http(router, mount_path/my-mcp) # 最终路径 /api/v1/my-mcp app.include_router(router)客户端怎么接两套JSON配置主流 MCP 客户端Claude Desktop、Cursor、Windsurf 等用同一套mcpServers格式只改 URL。HTTP 传输{ mcpServers: { fastapi-mcp: { url: http://localhost:8000/mcp } } }SSE 传输把 URL 换成/sse{ mcpServers: { fastapi-mcp: { url: http://localhost:8000/sse } } }客户端只支持 stdio、或需要走 OAuth 流程时用npx mcp-remote做桥接具体写法见 快速入门 里的 mcp-remote 一节。MCP网关生产部署检查清单启用 OAuth 认证构造AuthConfig传入FastApiMCP字段含义见 认证文档网关默认会把authorization头转发给业务接口token 透传写法参考 Token 透传示例前置 HTTPS 终结把 TLS 交给网关前面的反向代理网关实例之间走内网配置请求限流在负载均衡器或反向代理层按来源限流挡住异常放大接入指标与日志Prometheus 采集网关指标日志格式复用examples/shared/setup.py里的setup_logging()处理会话粘连HTTP 传输按会话管理连接多实例部署时给负载均衡器开启粘滞路由容易踩的坑4个常见误区误区mount 之后再补端点以为会自动注册。工具列表在FastApiMCP(...)构造时一次性生成之后不会跟着路由表更新。正解把端点定义全部放在构造调用之前确需后补的调用mcp.setup_server()重建见 工具重注册示例。误区以为网关能自动发现远端微服务。它只读取你传入的那个应用默认还是进程内调用。正解跨机器时在构造参数里注入带base_url的httpx.AsyncClient。误区客户端 URL 与挂载路径不一致。HTTP 默认/mcp、SSE 默认/sse走APIRouter时 prefix 也是路径的一部分。正解客户端url填完整最终路径与网关日志里打印的监听路径逐字对齐。误区慢接口照跑不误。内置 HTTP 客户端超时偏短长耗时接口会被掐断。正解注入自定义客户端调超时见 超时配置示例。继续深入快速入门从零到客户端连通的完整流程含 mcp-remote 用法认证配置AuthConfig字段与 OAuth 代理的完整说明部署指南更多生产部署场景贡献指南想给项目提代码从这里找入口如果网关已经接上客户端下一步建议读 工具命名规范给多个服务统一一套工具命名卡住的问题先翻 FAQ。【免费下载链接】fastapi_mcpExpose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi_mcp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考