강좌
11개 강의 중 4번째 · Model Context Protocol: Advanced Topics알림 둘러보기
Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Not nowSign in

튜토리얼 단계

샘플 프로젝트를 살펴보면서 이 기능을 구현하는 방법을 더 잘 이해해 보겠습니다.

건너뛰기다음
1. 도구 함수가 Context 인수를 받음

도구 함수는 마지막 인수로 'Context'를 자동으로 받습니다. 이 객체에는 클라이언트에 로깅 및 진행 상황을 보고하기 위한 메서드가 있습니다.

2. context로 로그 및 진행 상황 생성하기

도구 함수 전반에서 info(), warning(), debug(), 또는 error() 메서드를 호출하여 클라이언트에 다양한 유형의 메시지를 기록합니다. 또한 report_progress() 메서드를 호출하여 도구 호출에 남은 작업량을 추정합니다.

3. 클라이언트에서 콜백 정의하기

클라이언트는 로깅 및 진행 상황 콜백을 정의해야 하며, 이는 서버가 로그 또는 진행 상황 메시지를 보낼 때마다 자동으로 호출됩니다. 이러한 콜백은 제공된 로깅 및 진행 상황 데이터를 사용자에게 표시하려고 시도해야 합니다.

4. 적절한 함수에 콜백 전달하기

로깅 콜백은 ClientSession에, 진행 상황 콜백은 call_tool() 함수에 제공해야 합니다.

← 이전다음 →
server.py×
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")