FastMCP教程:27.9k星快速构建MCP服务器,Pythonic方式定义工具和资源

📌 项目:PrefectHQ/fastmcp | 星数:27.9k(2026-09-25) | 协议:Apache-2.0 | 语言:Python | GitHub

一句话定位:"用Python装饰器定义MCP工具——FastMCP让构建MCP服务器像写Flask一样简单。" FastMCP是Prefect团队出品的MCP框架,用装饰器语法声明工具、资源和提示词,自动处理MCP协议细节,几分钟就能搭好一个MCP服务器。

⚡ 核心设计:装饰器即工具

FastMCP的核心是装饰器语法,把普通Python函数变成MCP工具:

from fastmcp import FastMCP

mcp = FastMCP("My Server")

@mcp.tool()
def calculate(a: float, b: float, operation: str) -> str:
    """计算两个数的运算结果"""
    if operation == "add":
        return str(a + b)
    return "unknown operation"

@mcp.resource("file://{path}")
def read_file(path: str) -> str:
    """读取文件内容"""
    with open(path) as f:
        return f.read()

@mcp.prompt()
def code_review(code: str) -> str:
    """生成代码审查提示"""
    return f"请审查以下代码:\n{code}"

FastMCP自动从类型注解生成MCP schema,AI助手能看到参数类型和描述。和 Chrome DevTools MCP 桥接已有工具不同,FastMCP是构建自定义MCP服务器的框架。

🚀 快速开始

pip install fastmcp

# server.py
from fastmcp import FastMCP
mcp = FastMCP("My First Server")

@mcp.tool()
def greet(name: str) -> str:
    """问候"""
    return f"Hello, {name}!"

if __name__ == "__main__":
    mcp.run()  # 默认stdio传输

支持两种传输模式:mcp.run(transport="stdio")用于本地集成,mcp.run(transport="sse", port=8000)用于远程访问。

🔧 高级特性

⚖️ 优缺点

✅ 优点⚠️ 不足
装饰器语法,极简定义工具/资源/提示词功能较新,生态仍在发展
自动从类型注解生成MCP schema部分高级场景文档示例少
支持stdio和HTTP/SSE双传输
Prefect团队出品,工程质量高
Apache-2.0协议

📚 常见问题

FastMCP和官方MCP Python SDK有什么区别?

官方SDK更底层,需手动处理协议细节。FastMCP用装饰器封装了这些细节,几行代码就能定义工具。FastMCP底层基于官方SDK构建。

支持异步工具吗?

支持。用async def定义工具函数即可,FastMCP自动处理异步调用。

如何部署到生产环境?

用transport="sse"模式启动,通过反向代理(nginx)暴露。也可用Docker打包部署。