Skip to main content

通知演练

交互式练习:对照下面这个示例项目,逐步查看日志与进度通知在服务器端(通过 Context 发出)和客户端(通过回调接收)各自是如何实现的。点击"下一步"会自动打开对应文件并高亮相关代码。

教程步骤

让我们通过一个示例项目来更好地了解如何实现此功能。

工具函数会自动接收 'Context' 作为其最后一个参数。这个对象具有用于向客户端记录日志和报告进度的方法。

from mcp.server.fastmcp import FastMCP, Context
import asyncio
mcp = FastMCP(name="Demo Server")
@mcp.tool()
async def add(a: int, b: int, ctx: Context) -> int:
await ctx.info("Preparing to add...")
await ctx.report_progress(20, 100)
await asyncio.sleep(2)
await ctx.info("OK, adding...")
await ctx.report_progress(80, 100)
return a + b
if __name__ == "__main__":
mcp.run(transport="stdio")