작동 방식
Weave 인테그레이션은 핵심 메소드에weave.op() 데코레이터를 패치하여 Model Context Protocol (MCP)의 주요 구성 요소를 자동으로 추적합니다. 구체적으로는 mcp.server.fastmcp.FastMCP 및 mcp.ClientSession 클래스의 메소드를 패치합니다.
이 인테그레이션을 통해 Weave는 다음 MCP 구성 요소를 추적합니다:
인테그레이션 사용하기
Weave 인테그레이션은 MCP 서버와 클라이언트 모두에서 작동합니다. 설치가 완료되면weave를 임포트하고 초기화하는 단 두 줄의 코드만으로 트레이싱을 활성화할 수 있습니다.
사전 요구 사항
시작하기 전에 필요한 패키지를 설치하세요:설정
MCP 인테그레이션은 환경 변수를 통해 설정할 수 있습니다:MCP_TRACE_LIST_OPERATIONS: 서버와 클라이언트 양측에서 리스트 작업(list_tools,list_resources,list_prompts)을 추적하려면true로 설정하세요.
서버 측 인테그레이션
MCP 서버를 추적하려면 기존FastMCP 설정에 Weave를 임포트하고 클라이언트를 초기화하는 두 줄의 코드를 추가하세요. 추가하고 나면 툴, 리소스, 프롬프트 작업이 자동으로 추적됩니다.
클라이언트 측 인테그레이션
클라이언트 측에서도 Weave를 임포트하고 초기화하는 두 가지 변경만 필요합니다. 모든 툴 호출, 리소스 엑세스, 프롬프트 요청이 자동으로 추적됩니다.튜토리얼: mcp_demo 예시
mcp_example은 트레이싱을 위한 Model Context Protocol (MCP)과 Weave 간의 인테그레이션을 보여줍니다. 클라이언트와 서버 구성 요소 모두를 인스트루먼트하여 상호작용의 상세한 트레이스를 캡처하는 방법을 보여줍니다.
예시 실행하기
-
weave리포지토리를 클론하고mcp_demo예시 디렉토리로 이동합니다:예시에는 두 개의 주요 파일이 포함되어 있습니다:example_server.py:FastMCP로 빌드된 데모 MCP 서버입니다. 툴, 리소스, 프롬프트를 정의합니다.example_client.py: 서버에 연결하고 해당 구성 요소와 상호작용하는 클라이언트입니다.
-
필요한 종속성을 수동으로 설치합니다:
-
데모 실행:
이 코맨드는 클라이언트와 서버를 모두 실행합니다. 클라이언트는 다양한 기능을 테스트할 수 있는 대화형 CLI를 시작합니다.
클라이언트 CLI 코맨드
클라이언트 인터페이스는 다음 코맨드를 지원합니다:| 코맨드 | 설명 |
|---|---|
tools | 사용 가능한 툴 목록 표시 |
resources | 사용 가능한 리소스 목록 표시 |
prompts | 사용 가능한 프롬프트 목록 표시 |
add <a> <b> | 두 숫자 더하기 |
bmi <weight> <height> | 체질량 지수(BMI) 계산 |
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()사용 예시 보여주기
FAQ
MCP 트레이싱이 왜 필요한가요?
LLM 애플리케이션 개발자로서 귀하는 다음 세 가지 범주 중 하나에 속할 것입니다:- MCP 서버 측 개발자: MCP 클라이언트에 여러 툴, 리소스 및 프롬프트를 노출하려고 합니다. 기존 애플리케이션의 툴, 리소스 등을 노출하거나, 에이전트를 구축했거나 오케스트레이터 에이전트에 의해 오케스트레이션되는 여러 에이전트를 보유하고 있습니다.
- MCP 클라이언트 측 개발자: 클라이언트 측 애플리케이션을 여러 MCP 서버에 연결하려고 합니다. 클라이언트 측 로직의 핵심 부분은 어떤 툴을 호출할지 또는 어떤 리소스를 가져올지 결정하기 위해 LLM 호출을 하는 것입니다.
- MCP 서버 및 클라이언트 개발자: 서버와 클라이언트를 모두 개발하고 있습니다.
- 애플리케이션을 빠르게 반복 개발
- 워크플로우 또는 실행 로직 감사
- 병목 현상 식별