fastapi-mcp让你的API接口秒变MCP tools

你是否曾想过,让你精心构建的 FastAPI 应用接口,能够被 AI 模型(比如 Cursor、Claude 等)直接调用,成为它们强大的“外部工具”?

想象一下,不再需要手动为 AI 编写繁琐的工具描述和接口规范,只需几行代码,你的 API 就能无缝接入 AI 的工作流。

听起来很酷?现在,这一切都成为了可能!隆重介绍 FastAPI-MCP

🤔 什么是 MCP?

你可能第一次听说 MCP。简单理解,MCP 是一种新兴的开放标准,旨在规范 AI 模型如何发现、理解和使用外部工具(比如 API、函数等)。有了这个标准,AI 就能更智能、更统一地与外部世界互动。


✨ FastAPI-MCP 的亮点?简直不要太方便!

厌倦了为 AI 手动适配 API?FastAPI-MCP 来拯救你了!

  • 🤝 直接集成,无缝对接: 无需复杂的设置,直接将 MCP 服务挂载到你现有的 FastAPI 应用上。
  • ⚙️ 零配置,开箱即用: 真的!你只需要告诉它你的 FastAPI 应用在哪里,剩下的交给它。
  • 🤖 自动发现,智能转换: 它会自动扫描你所有的 FastAPI 路由(endpoints),并将其转换为 MCP 工具。
  • 📑 保留模式,信息不丢失: 你精心设计的 Pydantic 请求/响应模型(schemas)会被完整保留,AI 清晰知道如何发送请求和解析响应。
  • ✍️ 保留文档,AI 也爱看: 你在 Swagger/OpenAPI 中为端点编写的描述文档也会被一并转换,让 AI 准确理解每个工具的用途。
  • 🧩 轻松扩展,自定义无忧: 除了自动生成的工具,你还可以轻松添加自定义的 MCP 工具,满足更复
<think>我们正在讨论如何使用FastAPI实现MCP服务。根据引用内容,FastAPI-MCP是一个工具,它可以帮助我们将FastAPI应用转换为MCP服务。具体步骤和实现方法如下: 1. **环境准备与依赖安装**:首先需要安装FastAPIfastapi_mcp库。可以使用pip进行安装。 2. **创建FastAPI应用**:使用FastAPI创建一个基本的应用实例。 3. **挂载MCP服务器**:使用fastapi_mcp库中的`add_mcp_server`函数将MCP服务器挂载到FastAPI应用上,并指定挂载路径和名称。 4. **运行应用**:使用uvicorn或其他ASGI服务器运行应用。 根据引用[3]的代码示例,我们可以这样实现: ```python from fastapi import FastAPI from fastapi_mcp import add_mcp_server # 创建FastAPI应用 app = FastAPI() # 挂载MCP服务器 add_mcp_server( app, # 你的FastAPI应用 mount_path="/mcp", # 挂载MCP服务器的路径 name="MyAPIMCP", # MCP服务器的名称 ) ``` 这样,我们就创建了一个基本的MCP服务。但是,我们可能还需要定义一些工具(tools)以供AI模型调用。引用[4]中提到了一个示例文件(05_reregister_tools_example.py),我们可以参考它来注册工具。 具体步骤: 1. 定义工具函数:这些函数将作为AI模型可以调用的工具。 2. 使用`register_tool`装饰器注册这些函数,以便MCP服务能够识别它们。 例如,假设我们有一个获取天气的工具函数: ```python from fastapi_mcp import register_tool @register_tool def get_weather(city: str) -> str: """ 根据城市名获取天气信息 Args: city (str): 城市名称 Returns: str: 天气信息 """ # 这里实现获取天气的逻辑,例如调用第三方API return f"{city}的天气是晴天" ``` 然后,我们将这个工具注册到MCP服务中。注意,上面的`register_tool`装饰器会自动将工具注册到MCP中。 最后,我们运行应用: ```bash uvicorn main:app --reload ``` 这样,MCP服务就运行在指定的路径(例如:/mcp)下,AI模型可以通过这个端点来调用我们注册的工具。 另外,引用[1]提到,FastAPI的高性能特性(异步支持和优化的请求处理流程)使得构建的MCP服务器具有高性能。同时,FastAPI的模块化和插件系统也方便我们扩展MCP服务器。 总结步骤: 1. 安装依赖:fastapi, uvicorn, fastapi_mcp 2. 创建FastAPI应用 3. 使用`add_mcp_server`挂载MCP服务 4. 使用`register_tool`注册工具函数 5. 运行应用 注意:fastapi_mcp的具体用法可能还需要参考其文档(引用[4]提供的链接)。 如果我们需要更复杂的功能,比如跨模态上下文传递,可能需要扩展MCP协议,但根据当前问题,我们只需要实现一个基本的MCP服务即可。 现在,我们根据上述步骤编写一个完整的示例。</think>### 使用 FastAPI 实现 MCP 服务的完整指南 #### 1. **环境准备与依赖安装** ```bash # 创建虚拟环境(可选) python -m venv mcp-env source mcp-env/bin/activate # 安装核心依赖 pip install fastapi uvicorn fastapi-mcp ``` #### 2. **基础服务搭建** ```python from fastapi import FastAPI from fastapi_mcp import add_mcp_server # 初始化 FastAPI 应用 app = FastAPI(title="AI 服务网关") # 挂载 MCP 服务器 add_mcp_server( app=app, # FastAPI 应用实例 mount_path="/mcp", # MCP 服务端点路径 name="AIServiceMCP", # MCP 服务名称 description="AI 模型集成平台" # 服务描述 ) ``` #### 3. **注册自定义功能工具** ```python from fastapi_mcp import register_tool # 注册天气查询工具 @register_tool async def get_weather(location: str) -> dict: """ 获取指定位置的天气信息 参数: - location: 城市名称 (如 "北京") 返回: - 包含温度、天气状况的字典 """ # 这里实现实际的天气API调用 return {"location": location, "temp": 25, "condition": "晴"} # 注册股票查询工具 @register_tool async def get_stock_price(symbol: str) -> float: """ 查询股票实时价格 参数: - symbol: 股票代码 (如 "AAPL") 返回: - 当前股价 """ # 这里实现实际的股票API调用 return 175.43 ``` #### 4. **配置上下文管理** ```python from fastapi_mcp import McpContext # 自定义上下文处理器 @app.middleware("http") async def add_context(request: Request, call_next): # 创建MCP上下文对象 context = McpContext( user_id=request.headers.get("X-User-ID"), session_id=request.cookies.get("session_id") ) # 将上下文附加到请求状态 request.state.mcp_context = context response = await call_next(request) # 更新上下文状态(如保存对话历史) context.save_session_data() return response ``` #### 5. **启动服务** ```bash # 使用 Uvicorn 启动服务 uvicorn main:app --reload --port 8000 ``` #### 6. **服务验证** 访问以下端点验证服务状态: - MCP 服务文档:`http://localhost:8000/mcp/docs` - 工具列表:`http://localhost:8000/mcp/tools` - 服务健康检查:`http://localhost:8000/mcp/health` #### 7. **AI 模型集成示例** ```python # 在 FastAPI 路由中使用 MCP @app.post("/ask-ai") async def ask_ai(question: str, request: Request): # 获取当前上下文 context = request.state.mcp_context # 构建 AI 请求 ai_response = await context.query_ai( prompt=question, model="gpt-4", max_tokens=500 ) # 处理可能的工具调用 if ai_response.tool_calls: results = await execute_tools(ai_response.tool_calls) return {"answer": results} return {"answer": ai_response.content} ``` #### 8. **高级配置选项** ```python # 高级 MCP 配置 add_mcp_server( app=app, mount_path="/mcp", name="AdvancedMCP", # 性能优化配置 max_workers=8, # 最大工作线程数 rate_limit="100/minute", # 请求速率限制 # 安全配置 api_keys=["SECRET_KEY_1", "SECRET_KEY_2"], # 模型集成 default_model="claude-3", fallback_model="gpt-3.5-turbo" ) ``` #### 关键优势与特性 1. **高性能基础**:继承 FastAPI 的异步特性,支持高并发请求处理[^1] 2. **自动文档生成**:内置 OpenAPI 文档,自动展示所有注册工具 3. **上下文管理**:支持跨请求的上下文持久化 4. **工具热注册**:运行时动态添加/移除工具函数 5. **统一错误处理**:标准化错误响应格式 6. **多模型支持**:可同时集成多个AI模型后端 > 实际部署时建议添加: > - API网关层(如 Nginx) > - 监控系统(Prometheus/Grafana) > - 分布式缓存(Redis) > - 消息队列(RabbitMQ/Kafka)用于异步任务处理 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值