작동 방식
현재 이 통합은 클라이언트 측과 서버 측 작업을 별도로 캡처하지만, 상호 작용에 대한 엔드투엔드 가시성은 제공하지 않습니다. MCP에 OpenTelemetry 트레이스 지원을 추가하여 엔드투엔드 관찰 가능성을 활성화하는 제안이 진행 중입니다. 자세한 내용은 다음을 참조하세요 GitHub discussion #269.
weave.op()
데코레이터로 핵심 메서드를 패치하여 모델 컨텍스트 프로토콜(MCP)의 주요 구성 요소를 자동으로 추적합니다. 구체적으로 mcp.server.fastmcp.FastMCP
및 mcp.ClientSession
클래스의 메서드를 패치합니다.
이 통합을 통해 Weave는 다음과 같은 MCP 구성 요소를 추적합니다:

통합 사용하기
Weave 통합은 MCP 서버와 클라이언트 모두에서 작동합니다. 설치 후에는weave
를 가져오는 한 줄과 이를 초기화하는 또 다른 한 줄, 단 두 줄의 코드만으로 추적을 활성화할 수 있습니다.
전제 조건
시작하기 전에 필요한 패키지를 설치하세요:구성
MCP 통합은 환경 변수를 통해 구성할 수 있습니다:MCP_TRACE_LIST_OPERATIONS
:true
로 설정하여 목록 작업(list_tools
,list_resources
, 및list_prompts
)을 서버와 클라이언트 측 모두에서 추적합니다.
서버 측 통합
MCP 서버를 추적하려면 기존FastMCP
setup: one to import Weave and one to initialize the client. Once added, tool, resource, and prompt operations will be automatically traced.
클라이언트 측 통합
클라이언트 측에서도 추적은 Weave를 가져오고 초기화하는 두 가지 변경만 필요합니다. 모든 도구 호출, 리소스 접근 및 프롬프트 요청이 자동으로 추적됩니다.Tutorial: mcp_demo
예제
이 mcp_example
는 모델 컨텍스트 프로토콜(MCP)과 Weave 간의 추적을 위한 통합을 보여줍니다. 클라이언트와 서버 구성 요소 모두를 계측하여 상호 작용에 대한 상세한 추적을 캡처하는 방법을 보여줍니다.
예제 실행
-
다음
weave
저장소를 복제하고mcp_demo
example:이 예제에는 두 개의 주요 파일이 포함되어 있습니다: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
서버는 다음을 정의합니다:
- 도구:
add()
,calculate_bmi()
,fetch_weather()
- 리소스:
greeting://{name}
,config://app
,users://{id}/profile
- 프롬프트:
review_code()
및debug_error()
weave.init()
로 초기화하면 모든 서버 측 작업이 Weave에 의해 자동으로 추적됩니다.
이 example_client.py
클라이언트는 다음을 수행하는 방법을 보여줍니다:
- MCP 서버에 연결
- 사용 가능한 도구, 리소스 및 프롬프트 검색
- 매개변수를 사용하여 도구 호출
- 리소스 URI에서 읽기
- 인수를 사용하여 프롬프트 생성
- 사용자 정의 메서드/함수와 함께
weave.op()
사용 방법 보여주기.
FAQ
왜 MCP 추적이 필요한가요?
LLM 애플리케이션 개발자로서, 다음 세 가지 범주 중 하나에 속합니다:- MCP 서버 측 개발자: MCP 클라이언트에 여러 도구, 리소스 및 프롬프트를 노출하고자 합니다. 기존 애플리케이션의 도구, 리소스 등을 노출하거나, 에이전트를 구축했거나 오케스트레이터 에이전트에 의해 여러 에이전트가 조율됩니다.
- MCP 클라이언트 측 개발자: 클라이언트 측 애플리케이션을 여러 MCP 서버에 연결하고자 합니다. 클라이언트 측 로직의 핵심 부분은 어떤 도구를 호출하거나 어떤 리소스를 가져올지 결정하기 위해 LLM 호출을 하는 것입니다.
- MCP 서버 및 클라이언트 개발자: 서버와 클라이언트 모두를 개발하고 있습니다.
- 애플리케이션을 빠르게 반복
- 워크플로우 또는 실행 로직 감사
- 병목 현상 식별