使用说明
FastMCP(孵化器)
FastMCP 是一个小型辅助工具,用于将选定的 FastAPI 路由通过 Streamable HTTP 传输方式暴露为一个 MCP 服务器。它被设计成可以后续独立复制为一个库。
亮点:
- 对FastAPI应用进行内省,并将路由转换为MCP工具
- 通过标签过滤,在不同端口上构建不同的MCP“角色”
- 可选的审批工作流程:通过可插拔存储和最小化门户排队等待人工审批的工具调用
这个孵化器位于下方 FastMCP/ 在这个仓库中用于初始化,并将被提取到一个独立的包中。
快速入门(在此仓库中)
- 入口点
FastMCP/http_server.py加载厨房FastAPI应用程序,并默认在8091端口上暴露一个MCP服务器。 - 通过环境变量进行配置:
- FASTMCP_HTTP_PORT:监听端口(默认 8091)
- FASTMCP_TAGS:逗号分隔的 FastAPI 路由标签,用于包含(可选)
- FASTMCP_REQUIRE_APPROVAL: 真/假,用于启用审批队列(可选)
当启用审批功能时,会在其下方安装一个简易门户 /portal 批准/拒绝/修改排队中的请求。
为每条路由添加MCP元数据
为您的路由端点函数附加属性,以自定义暴露的工具:
- mcp_enable: 布尔值(默认为 True)
- mcp_name: 字符串(默认为路由名称或路径派生)
- mcp_description: 字符串(或“字符串类型”)
- `mcp_tags`: 可迭代的字符串集合(与 FastAPI 路由标签合并)
- `mcp_requires_approval`: 布尔值(覆盖此路由的全局默认设置)
示例:
@router.post("/do_something", tags=["automation"])
async def do_something(payload: Payload):
do_something.mcp_name = "do_something_tool"
do_something.mcp_description = "Does something important"
do_something.mcp_tags = ["automation", "safe"]
do_something.mcp_requires_approval = True
return {"ok": True}
审批仓库
InMemoryApprovalStore提供了一个简单的测试商店。- 实施
ApprovalStore使用您选择的数据存储来支持队列的接口。
注释
- 这个MCP服务器使用其TestClient将调用代理回FastAPI应用程序。在生产环境中,建议通过网络委托给应用程序的HTTP API。
- 工具输入模式是一个通用对象。未来版本可能会推断请求模型以生成JSON模式。
- 这是一个孵化器;提取时API可能会发生变化。
