FastMCP: 构建 Python 风格的 LLM 服务器和客户端
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驱动型应用程序的不可或缺的工具。