FastAPI-MCP

FastAPI-MCP

一个零配置工具,可以自动将 FastAPI 端点暴露为模型上下文协议 (Model Context Protocol, MCP) 工具,从而允许像 Claude 这样的 LLM 系统与你的 API 交互,而无需额外的编码。

AI集成系统
访问服务器

README

<p align="center"><a href="https://github.com/tadata-org/fastapi_mcp"><img src="https://github.com/user-attachments/assets/609d5b8b-37a1-42c4-87e2-f045b60026b1" alt="fastapi-to-mcp" height="100"/></a></p> <h1 align="center">FastAPI-MCP</h1> <p align="center">一个零配置工具,用于自动将 FastAPI 端点公开为模型上下文协议 (MCP) 工具。</p> <div align="center">

PyPI version Python Versions FastAPI CI codecov

</div>

<p align="center"><a href="https://github.com/tadata-org/fastapi_mcp"><img src="https://github.com/user-attachments/assets/1cba1bf2-2fa4-46c7-93ac-1e9bb1a95257" alt="fastapi-mcp-usage" height="400"/></a></p>

特性

  • 直接集成 - 将 MCP 服务器直接挂载到您的 FastAPI 应用程序
  • 零配置 - 只需将其指向您的 FastAPI 应用程序即可工作
  • 自动发现 所有 FastAPI 端点并转换为 MCP 工具
  • 保留 请求模型和响应模型的模式
  • 保留文档 所有端点的文档,就像 Swagger 中一样
  • 扩展 - 在自动生成的工具旁边添加自定义 MCP 工具

安装

我们建议使用 uv,一个快速的 Python 包安装程序:

uv add fastapi-mcp

或者,您可以使用 pip 安装:

pip install fastapi-mcp

基本用法

使用 FastAPI-MCP 最简单的方法是将 MCP 服务器直接添加到您的 FastAPI 应用程序:

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="My API MCP",      # MCP 服务器的名称
)

就是这样! 您的自动生成的 MCP 服务器现在可以在 https://app.base.url/mcp 上使用。

高级用法

FastAPI-MCP 提供了几种自定义和控制 MCP 服务器创建和配置方式的方法。 以下是一些高级用法模式:

from fastapi import FastAPI
from fastapi_mcp import add_mcp_server

app = FastAPI()

mcp_server = add_mcp_server(
    app,                                    # 您的 FastAPI 应用程序
    mount_path="/mcp",                      # MCP 服务器的挂载位置
    name="My API MCP",      # MCP 服务器的名称
    describe_all_responses=True,            # 默认为 False。 在工具描述中包含所有可能的响应模式,而不仅仅是成功的响应。
    describe_full_response_schema=True      # 默认为 False。 在工具描述中包含完整的 JSON 模式,而不仅仅是 LLM 友好的响应示例。
)

# (可选)除了现有 API 之外,还可以添加自定义工具。
@mcp_server.tool()
async def get_server_time() -> str:
    """获取当前服务器时间。"""
    from datetime import datetime
    return datetime.now().isoformat()

示例

有关完整示例,请参见 examples 目录。

使用 SSE 连接到 MCP 服务器

一旦您的带有 MCP 集成的 FastAPI 应用程序正在运行,您可以使用任何支持 SSE 的 MCP 客户端连接到它,例如 Cursor:

  1. 运行您的应用程序。

  2. 在 Cursor -> Settings -> MCP 中,使用您的 MCP 服务器端点的 URL(例如,http://localhost:8000/mcp)作为 sse。

  3. Cursor 将自动发现所有可用的工具和资源。

使用 mcp-proxy stdio 连接到 MCP 服务器

如果您的 MCP 客户端不支持 SSE,例如 Claude Desktop:

  1. 运行您的应用程序。

  2. 安装 mcp-proxy,例如:uv tool install mcp-proxy

  3. 在 Claude Desktop MCP 配置文件 (claude_desktop_config.json) 中添加:

在 Windows 上:

{
  "mcpServers": {
    "my-api-mcp-proxy": {
        "command": "mcp-proxy",
        "args": ["http://127.0.0.1:8000/mcp"]
    }
  }
}

在 MacOS 上:

{
  "mcpServers": {
    "my-api-mcp-proxy": {
        "command": "/Full/Path/To/Your/Executable/mcp-proxy",
        "args": ["http://127.0.0.1:8000/mcp"]
    }
  }
}

通过在终端中运行 which mcp-proxy 找到 mcp-proxy 的路径。

  1. Claude Desktop 将自动发现所有可用的工具和资源

开发和贡献

注意: 我们目前正在重构我们的 MCP 自动生成系统。 为避免潜在的冲突,我们恳请您在从 README 中删除此通知之前延迟提交贡献。 感谢您的理解和耐心。

感谢您考虑为 FastAPI-MCP 开源项目做出贡献! 正是像您这样的人使我们社区中的用户能够实现它。

在开始之前,请参阅 CONTRIBUTING.md

社区

加入 MCParty Slack 社区 与其他 MCP 爱好者联系,提出问题并分享您使用 FastAPI-MCP 的经验。

要求

  • Python 3.10+
  • uv

许可证

MIT 许可证。 版权所有 (c) 2024 Tadata Inc.

关于

Tadata Inc. 开发和维护

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
AIO-MCP Server

AIO-MCP Server

🚀 集成了 AI 搜索、RAG 和多服务(GitLab/Jira/Confluence/YouTube)的一体化 MCP 服务器,旨在增强 AI 驱动的开发工作流程。来自 Folk。

精选
本地
https://github.com/Streen9/react-mcp

https://github.com/Streen9/react-mcp

react-mcp 与 Claude Desktop 集成,能够根据用户提示创建和修改 React 应用程序。

精选
本地
MCP Atlassian

MCP Atlassian

适用于 Atlassian Cloud 产品(Confluence 和 Jira)的 Model Context Protocol (MCP) 服务器。此集成专为 Atlassian Cloud 实例设计,不支持 Atlassian Server 或 Data Center 部署。

精选
any-chat-completions-mcp

any-chat-completions-mcp

将 Claude 与任何 OpenAI SDK 兼容的聊天完成 API 集成 - OpenAI、Perplexity、Groq、xAI、PyroPrompts 等。

精选
MySQL MCP Server

MySQL MCP Server

允许人工智能助手通过受控界面列出表格、读取数据和执行 SQL 查询,从而使数据库探索和分析更安全、更有条理。

精选
browser-use MCP server

browser-use MCP server

一个由人工智能驱动的浏览器自动化服务器,它实现了模型上下文协议,从而能够使用自然语言控制网页浏览器,以执行诸如导航、表单填写和视觉交互等任务。

精选
mcp-codex-keeper

mcp-codex-keeper

作为开发知识的守护者,为 AI 助手提供精心策划的最新文档和最佳实践访问权限。

精选