مرور عملی log و progress (Log & progress walkthrough)
هدف یادگیری: ساخت یک tool طولانی که progress و log را به client stream میکند.
مثال عملی — Python (tool async با progress + logging از طریق Context)
from mcp.server.fastmcp import FastMCP, Context
from mcp.server.session import ServerSession
mcp = FastMCP("BuildServer")
@mcp.tool()
async def build_index(path: str, ctx: Context[ServerSession, None]) -> str:
"""Build a search index, streaming progress and logs."""
files = list_files(path)
total = len(files)
for i, f in enumerate(files, 1):
await ctx.info(f"Indexing {f}")
index_file(f)
await ctx.report_progress(progress=i, total=total,
message=f"Indexed {i} of {total}")
return f"Indexed {total} files"
اشتباهات رایج
- فراموش کردن
awaitرویctx.info/ctx.report_progress. - ارسال progress آنقدر مکرر که کانال flood شود. throttle کنید.