无需重构地将现有 FastAPI 应用暴露为 MCP
何时使用: 你已经部署了 FastAPI API。你想让智能体使用它。你不想维护并行的代码库。
前置条件
- 能正常运行的 FastAPI 应用,其请求/响应使用 Pydantic 模型 — 如果你的路由返回
dict,先重构为 Pydantic BaseModel——否则工具模式会是object
步骤
-
安装和挂载将
fastapi-mcp添加到我的项目。在 main.py 中,app = FastAPI()之后,添加FastApiMCP(app).mount()。显示差异。✓ 已复制→ 差异很小;服务器仍能运行 -
验证工具出现运行服务器。用
npx -y mcp-remote http://localhost:8000/mcp连接。列出工具——我的所有 GET/POST 路由都显示了吗?✓ 已复制→ 工具已列出,名称与路由 operation_id 匹配 -
过滤暴露内容我不想暴露 /admin/* 路由。用
include_operations重新配置或通过标签排除。✓ 已复制→ 管理路由不再显示在工具列表中
结果: 你的现有 API 现在是 MCP 可寻址的,模式和逻辑无任何重复。
注意事项
- 每个路由都会变成工具——包括你没打算暴露的内部路由 — 在上线前显式设置
include_tags=['public']或exclude_operations=[...] - 没有 operation_id 的路由会生成类似
read_item_items__item_id__get这样的名字——很丑 — 始终为路由设置显式operation_id:@app.get('/items/{id}', operation_id='get_item')