FastMCP Skill:Python 3 行代码搭建 MCP 服务器的生态地基

FastMCP 正在成为 AI Agent 工具生态的”隐形地基”。作为 Model Context Protocol 的 Python 封装框架,它让开发者用几行代码就能把任意 Python 函数暴露为 MCP 工具,供 Claude Code、Cursor、Cline 等主流 Agent 即插即用。当前全平台 70% 的 MCP 服务器底层跑着 FastMCP 代码,日均下载量突破 100 万次——这不是一个”流行框架”,而是已成基础设施级别的存在。

FastMCP 的设计原则非常明确:让协议细节消失,只留下业务逻辑。传统 MCP 服务器需要处理传输层、Schema 定义、认证配置、错误处理等大量底层工作,FastMCP 通过装饰器模式和 Pythonic API 把这些全部封装,开发者只需要写一个 @mcp.tool() 装饰的 Python 函数,Schema 生成、参数校验、文档补全全部自动完成。

GitHub Star 数约 27,000+(截至 2026-08-23),Forks 2,200+,过去一个月日均增长约 +30/day,8 月 23 日当天再次登上 GitHub Trending 榜单。Hacker News 曾在 2026 年 2 月将 FastMCP 3.0 GA 推上首页,2026 年 3 月”Welcome to FastMCP”再次获得 HN 80+ points。pip 安装量日均 100 万次,稳居 Python MCP 生态第一的位置。

GitHub:https://github.com/PrefectHQ/fastmcp

原作者为 PrefectHQ(Prefect 工作流编排平台的母公司),主要维护者 GitHub username 为 jlowin。Prefect 是开源工作流编排领域的成熟项目,背后有稳定的工程团队支撑,而非个人维护者。项目的技术债务低、更新节奏稳定、社区响应及时。

FastMCP 最初是 MCP Python SDK 的”最佳实践集合”,2024 年其 1.0 核心代码直接被合并进官方 MCP Python SDK——这意味着你现在用的官方 SDK 里,大量设计来自 FastMCP。但项目并未因此消失,而是继续独立演进,专注于提供比官方 SDK 更好的开发体验。

现在的 FastMCP 包含三大核心模块:

  • Servers:服务端开发,用装饰器声明工具、资源、Prompt;
  • Clients:客户端开发,连接任意 MCP 服务器并与之交互;
  • Apps:交互应用,内置 UI 可快速调试 MCP 工具。

此外还有 OpenAPI-to-MCP 自动转换(导入已有 API 直接生成 MCP 服务)、Pythonic sandbox(安全执行不受控代码)、Cloud 托管版本(Python 文件 30 秒变成托管 MCP 服务)等进阶能力。

核心特点如下:

  • 装饰器即 API@mcp.tool() 声明工具,@mcp.resource() 声明资源,@mcp.prompt() 声明 Prompt,无需手动写 Schema;
  • 自动 Schema 生成:函数签名 + 类型注解 → 完整 JSON Schema,参数校验开箱即用;
  • Server Composition:多个 MCP Server 可组合成一个应用,支持代理模式和链式调用;
  • OpenAPI 导入:已有的 FastAPI/OpenAPI 接口可一键转换为 MCP 服务,复用成本接近零;
  • 全链路客户端:不只建服务器,也能当 MCP 客户端,连接其他 MCP 服务并编程控制;
  • 上下文感知工具:内置 ctx.elicit(),工具可在执行中途向用户请求额外信息,支持多轮交互;
  • 每天 100 万次下载,全平台 70% MCP 服务器采用,生态成熟度高。

安装只需一行命令,推荐用 uv:

uv add fastmcp
# 或
pip install fastmcp

3 行代码即可跑通第一个 MCP 服务:

from fastmcp import FastMCP

mcp = FastMCP("MyServer")

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers"""
    return a + b

# 运行服务
mcp.run()

连接 Claude Desktop 或其他 MCP 客户端:

fastmcp install server.py

进阶用法——上下文请求(工具中途向用户提问):

from dataclasses import dataclass
from fastmcp import FastMCP, Context

mcp = FastMCP("Demo")

@dataclass
class DinnerPrefs:
    cuisine: str
    vegetarian: bool

@mcp.tool()
async def plan_dinner(ctx: Context) -> str:
    result = await ctx.elicit(
        "What are your dinner preferences?",
        response_type=DinnerPrefs,
    )
    if result.action == "accept":
        prefs = result.data
        return f"Menu: {prefs.vegetarian and 'vegetarian ' or ''}{prefs.cuisine} tonight!"
    return "Cancelled."

适用场景与目标人群:需要给 AI Agent 接入自建工具链的开发者;想把内部 API/数据库/业务流程封装给 Agent 调用的团队;MCP 服务器开发者(不想手写协议层代码);以及需要快速验证 MCP 协议能力的技术负责人。当前 Claude Code、Cursor、Cline、OpenHands 等主流 Agent 均原生支持 MCP,FastMCP 是它们背后最常见的”工具制造机”。

典型输入输出案例

输入(给 Agent):”帮我查一下韩国劳动法关于加班费的规定”(通过 korean-law-mcp MCP 工具)→ 输出:返回具体法条编号、内容、计算公式,以及相关判例摘要,全程无需人工查法条。

输入(给 Agent):”用 FastMCP 帮我把这个 OpenAPI 文档转成一个 MCP 服务,然后接入 Claude Code” → 输出:自动解析 OpenAPI Schema,生成完整 MCP Server 代码,注册工具并输出 Claude Desktop 配置 JSON,Agent 即可直接调用。


GitHub: https://github.com/PrefectHQ/fastmcp

评论区

0 条评论

登录后可评论。

Skill超级捕获手 16 阅读