编程 快速将 FastAPI 转换为 AI 可调用的 MCP 工具:FastAPI-MCP 实践指南

2025-04-18 21:07:53 +0800 CST views 1264

快速将 FastAPI 转换为 AI 可调用的 MCP 工具:FastAPI-MCP 实践指南

在 AI 应用日益普及的今天,如何高效地将现有的 API 接入 AI 模型,成为开发者关注的焦点。FastAPI-MCP 正是为此而生,它能自动将 FastAPI 应用的端点转换为符合 Model Context Protocol(MCP)的工具,使得 API 能被 AI 模型直接调用。


什么是 MCP?

MCP(Model Context Protocol)是一种开放标准,旨在为 AI 模型提供统一的接口,以访问外部工具和数据源。通过 MCP,AI 模型可以:

  • 突破上下文限制,获取最新信息;
  • 标准化地调用外部工具和 API;
  • 实现不同 AI 模型和工具之间的互操作性;
  • 无需重新训练,轻松添加新功能。

FastAPI-MCP 的核心功能

FastAPI-MCP 是一个零配置的工具,能够自动将 FastAPI 应用的端点暴露为 MCP 工具。其主要特点包括:

  • 直接集成:可将 MCP 服务器直接挂载到 FastAPI 应用中;
  • 零配置:只需指向 FastAPI 应用即可工作,无需复杂配置;
  • 自动发现:自动发现所有 FastAPI 端点,并将其转换为 MCP 工具;
  • 保留模式和文档:保留请求模型和响应模型的模式,以及所有端点的文档;
  • 支持自定义工具:可在自动生成的工具之外,添加自定义的 MCP 工具。

快速上手指南

安装

推荐使用 uv 安装:

uv add fastapi-mcp

或使用 pip:

pip install fastapi-mcp

基本使用

以下是一个简单的示例,展示如何将 MCP 服务器挂载到 FastAPI 应用中:

from fastapi import FastAPI
from fastapi_mcp import add_mcp_server

app = FastAPI()

# 挂载 MCP 服务器
add_mcp_server(
    app,
    mount_path="/mcp",  # MCP 服务器的挂载路径
    name="My API MCP",  # MCP 服务器的名称
)

运行后,MCP 服务器将自动暴露所有 FastAPI 端点,并保留其模式和文档。


高级配置示例

FastAPI-MCP 还支持高级配置,例如:

add_mcp_server(
    app,
    mount_path="/mcp",
    name="My API MCP",
    describe_all_responses=True,  # 描述所有可能的响应
    describe_full_response_schema=True,  # 提供完整的 JSON 模式
)

此外,还可以通过 include_operationsexclude_operationsinclude_tagsexclude_tags 等参数,对暴露的端点进行筛选。


添加自定义 MCP 工具

除了自动转换的端点外,还可以添加自定义的 MCP 工具:

mcp_server = add_mcp_server(app, mount_path="/mcp")

@mcp_server.tool()
async def get_current_time():
    """获取当前服务器时间"""
    from datetime import datetime
    return datetime.now().isoformat()

这样,get_current_time 函数将作为一个 MCP 工具,供 AI 模型调用。


与 AI 工具的集成

一旦 FastAPI 应用集成了 MCP,AI 工具(如 Claude Desktop)即可通过 MCP 服务器的 URL(例如 http://localhost:8000/mcp)自动发现并调用所有可用的工具。


实践案例:构建一个天气查询工具

以下是一个完整的示例,展示如何使用 FastAPI-MCP 构建一个天气查询工具:

from fastapi import FastAPI
from fastapi_mcp import add_mcp_server
import httpx

app = FastAPI()

@app.get("/weather/{city}")
async def get_weather(city: str):
    """获取指定城市的天气信息"""
    async with httpx.AsyncClient() as client:
        response = await client.get(f"https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q={city}")
        return response.json()

# 挂载 MCP 服务器
add_mcp_server(app, mount_path="/mcp", name="Weather API MCP")

运行后,AI 模型即可通过 MCP 服务器调用 /weather/{city} 端点,获取指定城市的天气信息。


结语

FastAPI-MCP 为开发者提供了一种高效、简洁的方式,将现有的 FastAPI 应用转换为 AI 模型可调用的 MCP 工具。通过自动发现端点、保留模式和文档,以及支持自定义工具,极大地降低了集成成本。无论是构建新的 AI 应用,还是升级现有的 API 服务,FastAPI-MCP 都是一个值得尝试的解决方案。


项目地址:

复制全文 生成海报 FastAPI AI 开发工具 API集成 自动化

推荐文章

Nginx 防止IP伪造,绕过IP限制
2025-01-15 09:44:42 +0800 CST
JavaScript 实现访问本地文件夹
2024-11-18 23:12:47 +0800 CST
FcDesigner:低代码表单设计平台
2024-11-19 03:50:18 +0800 CST
前端如何给页面添加水印
2024-11-19 07:12:56 +0800 CST
Python设计模式之工厂模式详解
2024-11-19 09:36:23 +0800 CST
2025,重新认识 HTML!
2025-02-07 14:40:00 +0800 CST
使用 `nohup` 命令的概述及案例
2024-11-18 08:18:36 +0800 CST
Golang 随机公平库 satmihir/fair
2024-11-19 03:28:37 +0800 CST
MySQL 日志详解
2024-11-19 02:17:30 +0800 CST
使用Python提取图片中的GPS信息
2024-11-18 13:46:22 +0800 CST
Redis和Memcached有什么区别?
2024-11-18 17:57:13 +0800 CST
前端如何优化资源加载
2024-11-18 13:35:45 +0800 CST
一文详解回调地狱
2024-11-19 05:05:31 +0800 CST
markdowns滚动事件
2024-11-19 10:07:32 +0800 CST
16.6k+ 开源精准 IP 地址库
2024-11-17 23:14:40 +0800 CST
#免密码登录服务器
2024-11-19 04:29:52 +0800 CST
Nginx 负载均衡
2024-11-19 10:03:14 +0800 CST
MySQL 优化利剑 EXPLAIN
2024-11-19 00:43:21 +0800 CST
什么是Vue实例(Vue Instance)?
2024-11-19 06:04:20 +0800 CST
使用Ollama部署本地大模型
2024-11-19 10:00:55 +0800 CST
纯CSS实现3D云动画效果
2024-11-18 18:48:05 +0800 CST
api接口怎么对接
2024-11-19 09:42:47 +0800 CST
程序员茄子在线接单