작동 방식
weave.op() 데코레이터를 패치하여 Model Context Protocol(MCP)의 주요 구성 요소를 자동으로 추적합니다. 구체적으로는 mcp.server.fastmcp.FastMCP 클래스와 mcp.ClientSession 클래스의 메서드를 패치합니다.
이 통합을 통해 Weave는 다음 MCP 구성 요소를 추적합니다:
통합 사용하기
weave를 import하는 코드이고, 다른 하나는 Weave를 초기화하는 코드입니다.
사전 준비 사항
구성
MCP_TRACE_LIST_OPERATIONS: 서버와 클라이언트 양쪽에서 목록 작업(list_tools,list_resources,list_prompts)을 추적하려면true로 설정합니다.
서버 측 통합
FastMCP 설정에 두 줄을 추가합니다. 하나는 Weave를 import하는 코드이고, 다른 하나는 클라이언트를 초기화하는 코드입니다. 이 두 줄을 추가하면 도구, 리소스, 프롬프트 관련 작업이 자동으로 추적됩니다.
클라이언트 측 통합
튜토리얼: mcp_demo 예제
mcp_demo 예제는 Model Context Protocol (MCP)과 Weave를 연동하여 트레이싱하는 방법을 보여줍니다. 클라이언트와 서버 컴포넌트 모두를 계측해 상호작용에 대한 자세한 트레이스를 기록하는 방법을 시연합니다.
예제 실행하기
-
docs 저장소를 클론하고
mcp_demo예제로 이동합니다:이 예제는 다음 두 개의 주요 파일로 구성됩니다:example_server.py:FastMCP로 구현된 데모 MCP 서버입니다. 도구, 리소스, 프롬프트를 정의합니다.example_client.py: 서버에 연결해 해당 구성 요소들과 상호작용하는 클라이언트입니다.
-
필요한 의존성을 수동으로 설치합니다:
-
데모를 실행합니다:
이 명령은 클라이언트와 서버를 모두 실행합니다. 클라이언트는 다양한 기능을 테스트할 수 있는 대화형 CLI를 시작합니다.
클라이언트 CLI 명령어
| Command | Description |
|---|---|
tools | 사용 가능한 도구 목록을 표시합니다 |
resources | 사용 가능한 리소스 목록을 표시합니다 |
prompts | 사용 가능한 프롬프트 목록을 표시합니다 |
add <a> <b> | 두 숫자를 더합니다 |
bmi <weight> <height> | 체질량지수(Body Mass Index)를 계산합니다 |
weather <city> | 지정한 도시에 대한 날씨 데이터를 가져옵니다 |
greeting <name> | 사용자 맞춤 인사말을 반환합니다 |
user <id> | 사용자 프로필을 조회합니다 |
config | 앱 구성 정보를 가져옵니다 |
code-review <code> | 코드 리뷰용 프롬프트를 생성합니다 |
debug <error> | 디버깅용 프롬프트를 생성합니다 |
demo | 사용 가능한 모든 기능의 전체 데모를 실행합니다. 각 기능을 순차적으로 실행하고 Weave UI에서 상호작용의 전체 트레이스 타임라인을 생성합니다. |
q | 세션을 종료합니다 |
예제 이해하기
example_server.py 서버는 다음을 정의합니다:
- 도구(Tools):
add(),calculate_bmi(),fetch_weather()같은 함수 - 리소스(Resources):
greeting://{name},config://app,users://{id}/profile같은 엔드포인트 - 프롬프트(Prompts):
review_code()및debug_error()같은 템플릿
weave.init()으로 초기화하면, 모든 서버 측 작업은 Weave에 의해 자동으로 추적됩니다.
example_client.py 클라이언트는 다음을 보여줍니다:
- MCP 서버에 연결하기
- 사용 가능한 도구, 리소스, 프롬프트 검색하기
- 매개변수를 사용해 도구 호출하기
- 리소스 URI에서 읽기
- 인자를 사용해 프롬프트 생성하기
- 사용자 정의 메서드/함수와 함께
weave.op()를 사용하는 방법
자주 묻는 질문
왜 MCP 트레이싱이 필요한가요?
- MCP 서버 측 개발자: MCP 클라이언트에 여러 도구, 리소스, 프롬프트를 노출하려고 합니다. 기존 애플리케이션의 도구, 리소스 등을 노출하거나 에이전트를 구축했으며, 여러 에이전트를 오케스트레이션하는 오케스트레이터 에이전트를 사용하고 있을 수 있습니다.
- MCP 클라이언트 측 개발자: 클라이언트 측 애플리케이션을 여러 MCP 서버에 연결하려고 합니다. 클라이언트 측 로직의 핵심은 어떤 도구를 호출할지, 어떤 리소스를 가져올지를 결정하기 위해 LLM 호출을 수행하는 것입니다.
- MCP 서버 및 클라이언트 개발자: 서버와 클라이언트를 모두 개발하고 있습니다.
- 애플리케이션을 빠르게 반복 개선
- 워크플로 또는 실행 로직 감사
- 병목 구간 식별