FastMCP: 构建 Python 风格的 LLM 服务器和客户端

June 30, 2025

FastMCP 2.0:大型语言模型交互的Pythonic核心

在快速演进的AI领域中,大型语言模型(LLM)与外部数据交互并执行特定功能的能力至关重要。FastMCP 2.0应运而生,这是一个开创性的开源Python框架,它为AI提供了“USB-C接口”——一种标准化、高效且符合Python风格的方式来构建模型上下文协议(MCP)服务器和客户端。

什么是模型上下文协议(MCP)?

模型上下文协议(MCP)是一项新标准,旨在使LLM应用程序能够安全、统一地访问外部数据和功能。可以将其理解为专门为LLM交互量身定制的API。MCP服务器能够:

  • 暴露资源:提供只读数据源,类似于GET端点,用于将信息加载到LLM的上下文。
  • 提供工具:通过执行Python函数,使LLM能够执行动作,类似于POST端点,用于计算、API调用或产生副作用。
  • 定义提示:创建可重用的消息模板,以指导LLM交互。

为什么选择FastMCP 2.0?

尽管MCP协议功能强大,但从零开始实现它会涉及大量的冗余代码。FastMCP 2.0消除了这种复杂性,它负责处理服务器设置、协议处理、内容类型和错误管理,让开发者可以专注于构建有价值的工具和资源。它被设计成高度抽象和Pythonic,通常只需一个简单的函数装饰器即可将功能暴露给LLM。

FastMCP 2.0不仅仅是一次升级,它是一个建立在FastMCP 1.0(现已整合到官方MCP Python SDK中)基础之上的全面生态系统。这一最新版本为生产就绪的AI应用程序提供了一套完整的工具包,包括:

  • 客户端库:以程序化方式无缝地与任何MCP服务器交互。
  • 认证系统:通过内置的认证支持,确保服务器和客户端的安全性。
  • 部署工具:提供将服务器本地运行或作为Web服务部署的简化选项。
  • 集成:根据现有的OpenAPI规范或FastAPI应用程序生成FastMCP服务器,即时将您的Web API带入MCP生态系统。
  • 测试框架:无需进程管理或网络调用,即可对服务器进行高效的内存中测试。
  • 高级功能:支持代理服务器、服务器组合、动态工具重写以及对LLM友好的文档格式。

FastMCP的核心概念

FastMCP通过直观的核心概念简化了MCP应用程序的创建:

  • FastMCP服务器:持有您的工具、资源和提示,并管理连接和配置的中心对象。
  • 工具:用@mcp.tool装饰的Python函数,LLM可以调用它们来执行动作。FastMCP会自动根据类型提示和文档字符串生成Schema。
  • 资源与模板:通过@mcp.resource暴露的数据源,支持静态数据或带有参数占位符的动态模板。
  • 提示:使用@mcp.prompt定义的可重用消息模板,用于指导LLM交互。
  • 上下文:在您的工具、资源或提示中访问MCP会话能力,实现日志记录、LLM采样(ctx.sample())、HTTP请求和进度报告。
  • MCP客户端fastmcp.Client可以连接到本地脚本、SSE端点,甚至内存中的服务器实例,从而实现高效测试。

FastMCP入门

FastMCP由Prefect倾心打造。安装非常简单,只需使用uv pip install fastmcp

要运行一个基本的服务器,只需在FastMCP实例中定义您的工具和资源,然后调用mcp.run()

# server.py
from fastmcp import FastMCP

mcp = FastMCP("Demo 🚀")

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

if __name__ == "__main__":
    mcp.run()

只需执行fastmcp run server.py即可在本地运行您的服务器。

FastMCP支持各种传输协议,包括STDIO(默认)、可流式HTTP和SSE,确保了开发和生产环境的灵活性。

FastMCP在GitHub上拥有超过1.36万个星标和830个分支,是一个快速发展的项目,并拥有活跃的社区支持。它对快速、简单、Pythonic和完整的承诺,使其成为任何希望构建健壮和可扩展的LLM驱动型应用程序的不可或缺的工具。

原创文章: 查看原文

分享本文