[ PROMPT_NODE_24766 ]
升级指南
[ SKILL_DOCUMENTATION ]
# 升级指南
> FastMCP 版本间升级的迁移说明
本指南涵盖了升级 FastMCP 时的破坏性变更和迁移步骤。
## v3.0.0
大多数服务器只需进行一项更改:将导入语句从 `from mcp.server.fastmcp import FastMCP` 更新为 `from fastmcp import FastMCP`。以下章节涵盖了较少见的破坏性变更。
### 破坏性变更
#### 移除 WSTransport
请改用 `StreamableHttpTransport`。
#### 移除 Auth Provider 环境变量
身份验证提供程序不再自动加载配置。请显式读取它们:
python
import os
auth = GitHubProvider(
client_id=os.environ["GITHUB_CLIENT_ID"],
client_secret=os.environ["GITHUB_CLIENT_SECRET"],
)
#### 组件 enable()/disable() 移至服务器
这些方法已从组件对象移动到服务器:
python
# 之前
tool = await server.get_tool("my_tool")
tool.disable()
# 之后
server.disable(names={"my_tool"}, components=["tool"])
#### 列表方法重命名并返回列表
`get_tools()`、`get_resources()`、`get_prompts()` 和 `get_resource_templates()` 已被 `list_tools()`、`list_resources()`、`list_prompts()` 和 `list_resource_templates()` 取代。新方法返回列表而不是字典:
python
# 之前
tools = await server.get_tools()
tool = tools["my_tool"]
# 之后
tools = await server.list_tools()
tool = next((t for t in tools if t.name == "my_tool"), None)
#### 提示词使用 Message 类
请使用 `Message` 代替 `mcp.types.PromptMessage`:
python
# 之前
from mcp.types import PromptMessage, TextContent
@mcp.prompt
def my_prompt() -> PromptMessage:
return PromptMessage(role="user", content=TextContent(type="text", text="Hello"))
# 之后
from fastmcp.prompts import Message
@mcp.prompt
def my_prompt() -> Message:
return Message("Hello")
#### 上下文状态方法变为异步
`ctx.set_state()` 和 `ctx.get_state()` 现在是异步的。状态在会话中持久存在:
python
# 之前
ctx.set_state("key", "value")
value = ctx.get_state("key")
# 之后
await ctx.set_state("key", "value")
value = await ctx.get_state("key")
#### 状态值必须可序列化
会话状态值现在默认必须是 JSON 可序列化的(字典、列表、字符串、数字等),因为状态是使用可插拔的存储后端在请求之间持久化的。
如果您需要存储不可序列化的值(例如,将 HTTP 客户端从中间件传递到工具),请使用 `serializable=False`。这些