درس ۱۷ از ۳۳

مرور عملی 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 کنید.