FastAPI-MCP
一个零配置工具,可以自动将 FastAPI 端点暴露为模型上下文协议 (Model Context Protocol, MCP) 工具,从而允许像 Claude 这样的 LLM 系统与你的 API 交互,而无需额外的编码。
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">
</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:
-
运行您的应用程序。
-
在 Cursor -> Settings -> MCP 中,使用您的 MCP 服务器端点的 URL(例如,
http://localhost:8000/mcp)作为 sse。 -
Cursor 将自动发现所有可用的工具和资源。
使用 mcp-proxy stdio 连接到 MCP 服务器
如果您的 MCP 客户端不支持 SSE,例如 Claude Desktop:
-
运行您的应用程序。
-
安装 mcp-proxy,例如:
uv tool install mcp-proxy。 -
在 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 的路径。
- 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
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
AIO-MCP Server
🚀 集成了 AI 搜索、RAG 和多服务(GitLab/Jira/Confluence/YouTube)的一体化 MCP 服务器,旨在增强 AI 驱动的开发工作流程。来自 Folk。
https://github.com/Streen9/react-mcp
react-mcp 与 Claude Desktop 集成,能够根据用户提示创建和修改 React 应用程序。
MCP Atlassian
适用于 Atlassian Cloud 产品(Confluence 和 Jira)的 Model Context Protocol (MCP) 服务器。此集成专为 Atlassian Cloud 实例设计,不支持 Atlassian Server 或 Data Center 部署。
any-chat-completions-mcp
将 Claude 与任何 OpenAI SDK 兼容的聊天完成 API 集成 - OpenAI、Perplexity、Groq、xAI、PyroPrompts 等。
MySQL MCP Server
允许人工智能助手通过受控界面列出表格、读取数据和执行 SQL 查询,从而使数据库探索和分析更安全、更有条理。
browser-use MCP server
一个由人工智能驱动的浏览器自动化服务器,它实现了模型上下文协议,从而能够使用自然语言控制网页浏览器,以执行诸如导航、表单填写和视觉交互等任务。
mcp-codex-keeper
作为开发知识的守护者,为 AI 助手提供精心策划的最新文档和最佳实践访问权限。