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