FastAPI-MCP:FastAPI 接口转 MCP 工具网关部署实践指南
FastAPI-MCPFastAPI 接口转 MCP 工具网关部署实践指南【免费下载链接】fastapi_mcpExpose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi_mcp需要把已有的 FastAPI 接口暴露给大模型 Agent 直接调用时FastAPI-MCP 可以零配置地把每个端点转换成模型上下文协议MCP工具并支持挂载到同一应用或独立部署为 MCP 网关。这份指南从最小示例出发覆盖部署、传输协议选择与生产要点读完你可以跑通同应用挂载与独立网关两种部署理解 HTTP 与 SSE 传输的取舍依据配置工具白名单、认证与超时避开注册时机等常见坑项目定位与适用边界FastAPI-MCP 解决的问题很具体把一个现成的 FastAPI 应用自动生成为 MCP 服务器端点即工具请求/响应模型Schema与接口文档原样保留。它不做服务发现不提供负载均衡与路由能力也不能替代 API 网关这些仍由前置基础设施承担。关键特性零配置指向应用即生成工具原生认证复用 FastAPI 的Depends()ASGI 传输进程内调用无网络开销灵活部署同应用挂载或独立网关环境依赖与安装硬性依赖Python 3.10官方推荐 3.12FastAPI 0.100.0随fastapi-mcp自动安装mcp 1.12.0随fastapi-mcp自动安装主安装方式uvuv add fastapi-mcp备选方式pippip install fastapi-mcp核心实操最小示例把已有 FastAPI 应用接入 MCP下面的代码在一个已有接口上生成 MCP 服务器并用mount_http()挂载流式 HTTP 传输Streamable HTTP端点默认在/mcpfrom fastapi import FastAPI from fastapi_mcp import FastApiMCP app FastAPI(title物品服务) app.get(/items/{item_id}, operation_idget_item) async def read_item(item_id: int): 根据 ID 查询物品详情404 表示不存在 return {item_id: item_id} # 1. 用现有 FastAPI 应用生成 MCP 服务器 mcp FastApiMCP(app) # 2. 挂载 HTTP 传输端点位于 /mcp mcp.mount_http() if __name__ __main__: import uvicorn uvicorn.run(app, host0.0.0.0, port8000)启动后MCP 客户端连接http://localhost:8000/mcplist_tools返回get_item工具其描述来自接口的 docstring。工具被调用时请求通过 httpx 的 ASGI 传输直接打到应用的路由上不经过真实网络请求因此延迟很低。⚠️ 常见误区0.4.0 起旧的mount()方法已弃用必须显式使用mount_http()推荐或mount_sse()。旧代码升级后继续调用mount()会在未来版本直接报错。MCP 客户端侧的配置{ mcpServers: { fastapi-mcp: { url: http://localhost:8000/mcp } } }独立部署网关的完整步骤大型系统中建议把 MCP 网关与业务接口分离业务 API 不再对外暴露只通过 MCP 提供能力。步骤如下导入业务 FastAPI 应用用它构造 MCP 实例创建一个全新的网关应用用mount_http(mcp_app)把 MCP 挂到网关上分别以不同端口启动网关业务应用随网关进程内运行from fastapi import FastAPI from examples.shared.apps.items import app as items_api # 业务服务 from fastapi_mcp import FastApiMCP # 1. 业务应用只作为工具生成源 mcp FastApiMCP(items_api) # 2. 创建独立的网关应用 mcp_app FastAPI(title独立MCP网关) # 3. 挂到网关应用业务 REST 接口不暴露在网关上 mcp.mount_http(mcp_app) if __name__ __main__: import uvicorn uvicorn.run(mcp_app, host0.0.0.0, port8000)uvicorn mcp_gateway:mcp_app --host 0.0.0.0 --port 8000运行效果客户端只连得到/mcp端点业务 REST 路由不在网关应用中注册。⚠️ 所谓独立部署是独立的 ASGI 应用与端口不是跨进程 RPCFastApiMCP通过 ASGI 在进程内调用业务应用对象因此业务应用必须能被网关进程 import。两个服务无法分属不同主机后仅靠网络互通。HTTP 与 SSE 传输怎么选mount_http()实现的是 Streamable HTTP 规范带状态化会话管理0.4.0 起是默认推荐方式端点为/mcp。mount_sse()面向旧版客户端端点为/sse消息走{路径}/messages/子路由。新客户端一律选 HTTP仅当必须兼容不支持 Streamable HTTP 的旧客户端时才用 SSE。两者都支持传入自定义APIRouter并指定挂载路径from fastapi import APIRouter router APIRouter(prefix/api/v1) # 挂到自定义路径最终端点为 /api/v1/my-mcp-service mcp.mount_http(router, mount_path/my-mcp-service) app.include_router(router)工具清单的精细控制与注册时机工具集合在FastApiMCP(app)构造时一次性生成支持按 tag 或 operation_id 过滤两组参数各自互斥# 只暴露 items 标签的接口搜索接口不进工具列表 mcp FastApiMCP(items_api, include_tags[items])构造之后再新增的端点不会自动出现需要手动刷新app.get(/new/endpoint/, operation_idnew_endpoint) async def new_endpoint(): 构造后新增的端点 return {message: Hello, world!} # 重新生成工具列表新端点才会出现在 list_tools 中 mcp.setup_server()⚠️ 工具注册时机是最高频的坑忘记调用mcp.setup_server()时客户端会看到一份永远缺最新接口的工具列表且没有任何报错。配置与扩展能力只列有决策价值的配置项FastApiMCP构造参数配置项默认值说明适用场景include_tags/exclude_tagsNone按标签过滤工具二者互斥只暴露部分模块接口include_operations/exclude_operationsNone按 operation_id 过滤工具二者互斥精确到单个接口的取舍headers[authorization]工具调用时透传给后端的请求头白名单认证接口的身份传递http_clientASGI 传输超时 10 秒自定义httpx.AsyncClient慢接口调大超时如timeout20describe_all_responses/describe_full_response_schemaFalse是否把所有响应 Schema 写入工具描述提升模型对返回结构的推断auth_configNoneOAuth 2.0 配置dependencies、issuer、setup_proxies等对接企业级 OAuth 提供方mount_path/mcpHTTP//sseSSE挂载路径可配合自定义APIRouter多版本网关的路径规划auth_config依赖 OAuth 2.0 规范2025-03-26 版setup_proxiesTrue时会自动在你现有 OAuth 提供方周围生成 MCP 合规的代理端点并默认启用模拟动态客户端注册。生产落地要点高可用网关实例多副本部署在负载均衡之后0.4.0 引入有状态会话管理扩容前先验证同一客户端的会话是否会落到同一实例避免会话状态丢失。由于工具调用走进程内 ASGI网关与业务应用是同一进程整体扩容时以进程为单位整体复制无需为两者单独规划容量。安全给AuthConfig传入会抛出 401/403 的Depends()依赖这是触发 MCP 客户端发起 OAuth 流程的必要条件认证逻辑直接复用你 FastAPI 里现成的依赖。对外一律走 HTTPSheaders透传白名单保持最小化默认只透传authorization不要随意扩大。可观测启用examples/shared/setup.py提供的setup_logging()网关启动时会输出 MCP 挂载路径与监听状态方便确认注册结果。盯住工具调用的超时率与耗时内部调用受http_client超时默认 10 秒约束超时率突增是后端接口变慢的第一信号。排错速查现象原因解决方式客户端连/mcp返回 404/405使用了弃用的mount()或传输协议与路径不匹配改用mount_http()确认客户端指向/mcp新增接口不出现在工具列表工具列表在构造时一次性生成调用mcp.setup_server()重新注册慢接口调用报超时内部调用默认超时 10 秒传入httpx.AsyncClient(timeout20)构造时抛ValueErrorinclude与exclude两组过滤参数同时传入只保留一组过滤参数启用认证后客户端不触发 OAuth 流程AuthConfig.dependencies未配置无法返回 401传入抛出 401/403 的Depends()依赖收尾项目当前版本 0.4.0Streamable HTTP 传输为默认方式SSE 保留做向后兼容后续演进集中在 mcp SDK 版本跟进与有状态会话管理。深度阅读可从examples/目录的九组示例、docs/advanced/deploy.mdx独立部署文档以及CONTRIBUTING.md贡献指南入手。【免费下载链接】fastapi_mcpExpose your FastAPI endpoints as Model Context Protocol (MCP) tools, with Auth!项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi_mcp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

文本摘要评估框架sumeval完全解析:ROUGE/BLEU一站搞定,多语言支持让评测不再头疼

文本摘要评估框架sumeval完全解析:ROUGE/BLEU一站搞定,多语言支持让评测不再头疼

文本摘要评估框架sumeval完全解析:ROUGE/BLEU一站搞定,多语言支持让评测不再头疼 【免费下载链接】sumeval Well tested & Multi-language evaluation framework for text summarization. 项目地址: https://gitcode.com/gh_mirrors/su/sumeval …

2026/8/24 9:49:15 阅读更多 →
cloudflare-operator安全加固完全指南:最小权限API Token与Cloudflare Access ZTNA防护实践

cloudflare-operator安全加固完全指南:最小权限API Token与Cloudflare Access ZTNA防护实践

cloudflare-operator安全加固完全指南:最小权限API Token与Cloudflare Access ZTNA防护实践 【免费下载链接】cloudflare-operator A Kubernetes Operator to create and manage Cloudflare Tunnels and DNS records for (HTTP/TCP/UDP*) Service Resources 项目…

2026/8/24 9:49:15 阅读更多 →
Bitnodes如何维护上万个比特币节点长连接:ping.py与gevent绿色线程并发模型深度剖析

Bitnodes如何维护上万个比特币节点长连接:ping.py与gevent绿色线程并发模型深度剖析

Bitnodes如何维护上万个比特币节点长连接:ping.py与gevent绿色线程并发模型深度剖析 【免费下载链接】bitnodes Bitnodes estimates the size of the Bitcoin peer-to-peer network by finding all of its reachable and unreachable nodes. 项目地址: https://gi…

2026/8/24 9:49:15 阅读更多 →

最新新闻

从单智能体到多Agent协作:基于Dify构建复杂任务处理系统实战

从单智能体到多Agent协作:基于Dify构建复杂任务处理系统实战

1. 先搞清楚“多 Agent 协作”到底能解决什么实际问题如果你正在用 Dify、Coze 这类平台做 AI 应用,大概率遇到过这种困境:单个智能体(Agent)能力有限,处理复杂任务时要么逻辑混乱,要么需要你手动在不同工具…

2026/8/24 13:32:23 阅读更多 →
别再瞎改了,AI写论文死就死在格式和引用上

别再瞎改了,AI写论文死就死在格式和引用上

两种人,两种结局:一种人用AI写论文,初稿出来就被导师打回,批注里写满“逻辑混乱”“不像你的水平”;另一种人交上去的论文,导师只问了一句“参考文献核过了吗”,然后顺利通过。差别不在谁更聪明…

2026/8/24 13:32:23 阅读更多 →
初稿找大模型、定稿用双降、复检只改标红:论文最后72小时降重降AI,3类工具+4步用法一篇说清

初稿找大模型、定稿用双降、复检只改标红:论文最后72小时降重降AI,3类工具+4步用法一篇说清

先抛一个反常识的实测结论:把同一篇论文定稿章节分别交给 6 类工具处理后,3 组用通用大模型直接“改写降重”的文本,AIGC 疑似率不仅没降,反而平均升高了 11% 左右;真正能在提交前把重复率和 AIGC 率同时压到 10% 以下…

2026/8/24 13:32:23 阅读更多 →
理工科硕士混用多模型写论文:初稿、中稿、定稿AIGC检测工具怎么选,一篇说清

理工科硕士混用多模型写论文:初稿、中稿、定稿AIGC检测工具怎么选,一篇说清

你用Deepseek梳理了3组对照实验的数据分析,让Kimi帮你补了12篇外文文献的综述逻辑,最后用GPT-4润色了讨论部分的专业表述——刚把整合好的论文贴进某免费检测工具,AIGC率显示68%,但你明明逐段调整了句式,甚至自己重写了…

2026/8/24 13:32:23 阅读更多 →
实测6款AI后,我用毕业之家30分钟做完开题:只解决导师最在意的文献真假问题

实测6款AI后,我用毕业之家30分钟做完开题:只解决导师最在意的文献真假问题

上周我用同一道硕士开题题——《基于多模态大模型的工业表面缺陷小样本检测方法研究》——分别让 ChatGPT、Claude、Gemini、DeepSeek R1、Kimi 和毕业之家生成开题报告初稿。结果很直接:毕业之家列出的12篇参考文献全部附 DOI 或知网跳转,逐篇可查&…

2026/8/24 13:32:23 阅读更多 →
如何使用 MMD Tools:从 PMX 导入到 VMD 导出的完整指南

如何使用 MMD Tools:从 PMX 导入到 VMD 导出的完整指南

如何使用 MMD Tools:从 PMX 导入到 VMD 导出的完整指南 【免费下载链接】blender_mmd_tools MMD Tools is a Blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools …

2026/8/24 13:31:23 阅读更多 →

日新闻

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践

前端内容安全与依赖审计实践 前端安全依赖分层防护。没有任何单一配置能替代输出编码、权限校验和依赖更新。 把不可信内容当作数据 默认使用框架的转义能力;确需渲染 HTML 时,先在服务端或可信的客户端库中进行白名单过滤。避免把用户输入直接赋给 inne…

2026/8/24 1:08:15 阅读更多 →
Windows登录密码存储机制全解析:从哈希算法到安全加固实战

Windows登录密码存储机制全解析:从哈希算法到安全加固实战

1. 项目概述:Windows登录密码的“黑匣子”每次你按下CtrlAltDel,输入密码,然后看到那个熟悉的桌面,这背后发生了一系列复杂而精密的操作。作为一名长期与Windows系统打交道的从业者,我经常被问到:“我的密码…

2026/8/24 1:08:15 阅读更多 →
AI面试系统安全挑战与解决方案

AI面试系统安全挑战与解决方案

1. 项目概述:AI面试系统的安全挑战去年参与某跨国企业AI面试系统部署时,遇到一个典型案例:候选人在视频面试中无意提到竞争对手产品名称,系统竟自动将该信息关联到企业知识库并生成竞品分析报告。这个看似"智能"的功能&…

2026/8/24 1:08:15 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 0:06:02 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 0:20:20 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 0:14:11 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/23 18:47:06 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →