fastmcp 2.0
mcp server
# my_server.py from fastmcp import FastMCP from datetime import datetime import json mcp = FastMCP(name="MyServer") # 工具示例 @mcp.tool() def greet(name: str) -> str: """Greet a user by name.""" return f"Hello, {name}!" @mcp.tool() def calculate_stats(numbers: list[float]) -> dict: """计算基础统计数据""" return { "average": sum(numbers)/len(numbers), "max": max(numbers), "min": min(numbers), "timestamp": datetime.now().isoformat() } # 资源示例 @mcp.resource("data://config") def load_config(): """加载服务器配置""" return json.dumps({ "max_connections": 100, "timeout": 30, "analytics_enabled": True }) # 资源模板示例 @mcp.resource("users://{user_id}/profile") def get_user_profile(user_id: str): """获取用户资料模板""" return { "id": user_id, "preferences": {"theme": "dark"}, "last_login": datetime.now().isoformat() } # 提示模板示例 @mcp.prompt_template("analysis_request") def analysis_prompt(data_type: str) -> str: """生成数据分析请求模板""" return f""" 请分析以下{data_type}数据集: 1. 计算基础统计指标 2. 识别异常值 3. 生成趋势图表 完成后请用JSON格式返回结果。 """ if __name__ == "__main__": mcp.run(transport="streamable-http", host="127.0.0.1", port=9000)
client
from fastmcp import FastMCPClient import json def main(): # 连接HTTP服务端 with FastMCPClient("http://localhost:9000") as client: # 调用所有工具 print("调用greet工具:") print(client.tools.greet("Arthur")) print("\n调用calculate_stats工具:") stats = client.tools.calculate_stats([10, 20, 30, 40]) print(json.dumps(stats, indent=2)) # 访问资源 print("\n获取服务器配置:") config = client.resources.config() print(config) print("\n获取用户资料:") profile = client.resources.users(user_id="123").profile() print(json.dumps(profile, indent=2)) # 使用提示模板 print("\n生成分析请求:") prompt = client.prompts.analysis_request("销售数据") print(prompt) if __name__ == "__main__": main()
以下是基于提供的FastMCP服务器文档内容的精简总结,按功能模块分类:
1. 核心概念
- FastMCP服务器类:作为应用程序的核心容器,管理工具、资源、提示以及与MCP客户端的通信。
- 初始化参数:
name(服务器名称)、instructions(交互指南)、lifespan(生命周期管理)、tags(标签)、tools(工具列表)等。- 示例:
python复制
mcp = FastMCP(name="MyServer", instructions="数据分析工具集")
2. 组件类型
- 工具(Tools):客户端可调用的函数,标注为
@mcp.tool(),支持参数类型提示。 - 资源(Resources):数据源读取接口,如
@mcp.resource("data://config")。 - 资源模板:参数化资源路径(如
users://{user_id}/profile)。 - 提示(Prompts):LLM消息模板,例如生成数据分析请求的文本。
3. 运行与配置
- 启动方式:
- 默认通过
mcp.run()启动,支持多种传输协议(STDIO/HTTP/SSE)。 - 示例:
python复制
if __name__ == "__main__": mcp.run(transport="streamable-http", port=9000)
- 默认通过
- 配置选项:
- 通过
ServerSettings设置主机、端口、日志级别等。 - 环境变量前缀
FASTMCP_SERVER_或直接传递参数(如port=8080)。
- 通过
4. 高级功能
- 服务器组合(v2.2.0+):
- 使用
mount动态链接或import_server静态导入子服务器。
- 使用
- 代理模式(v2.0.0+):
- 通过
FastMCP.as_proxy()桥接不同传输协议的服务器。
- 通过
- 序列化定制(v2.2.7+):
- 自定义
tool_serializer(如YAML格式输出)。
- 自定义
- 认证(v2.2.7+):
- 支持OAuth 2.0,需配置
auth_server_provider和AuthSettings。
- 支持OAuth 2.0,需配置
5. 关键配置项
| 参数 | 作用 | 默认值 |
|---|---|---|
host |
SSE主机地址 | "127.0.0.1" |
on_duplicate_tools |
重复工具处理策略(如"error") |
"warn" |
log_level |
日志级别 | "INFO" |
总结
FastMCP是一个模块化的Python服务器框架,适用于构建基于MCP协议的AI工具服务,强调灵活性(组件组合、传输协议适配)和可扩展性(认证、序列化定制)。适合需要集成工具调用、数据访问和LLM交互的场景。


浙公网安备 33010602011771号