仕組み
Weave 統合は、コアメソッドをweave.op() デコレータでパッチすることにより、Model Context Protocol (MCP) の主要コンポーネントを自動的にトレースします。具体的には、mcp.server.fastmcp.FastMCP および mcp.ClientSession クラスのメソッドにパッチを適用します。
この統合を通じて、Weave は以下の MCP コンポーネントをトレースします:
統合を使用する
Weave 統合は MCP サーバーとクライアントの両方で動作します。インストール後、weave をインポートする行と、それを初期化する行の2行のコードを追加するだけでトレースを有効にできます。
前提条件
始める前に、必要なパッケージをインストールしてください:設定
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.
クライアント側の統合
クライアント側では、トレースにも2つの変更だけが必要です:Weave をインポートして初期化します。すべてのツール呼び出し、リソースアクセス、プロンプトリクエストが自動的にトレースされます。Tutorial: mcp_demo 例
この mcp_example は、Model Context Protocol (MCP) と Weave の間のトレース用統合を示しています。クライアントとサーバーの両方のコンポーネントを計測して、それらの相互作用の詳細なトレースをキャプチャする方法を紹介しています。
例を実行する
-
リポジトリをクローンして
weaveリポジトリに移動しますmcp_demoexample:この例には2つの主要ファイルが含まれています:example_server.py:FastMCPで構築されたデモ MCP サーバー。ツール、リソース、プロンプトを定義しています。example_client.py: サーバーに接続してそのコンポーネントと対話するクライアント。
-
必要な依存関係を手動でインストールします:
-
デモを実行します:
このコマンドはクライアントとサーバーの両方を起動します。クライアントは対話型 CLI を開始し、そこでさまざまな機能をテストできます。
クライアント CLI コマンド
クライアントインターフェースは以下のコマンドをサポートしています:例の理解
この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 アプリケーション開発者として、あなたは次の3つのカテゴリのいずれかに該当します:- MCP サーバー側開発者: 複数のツール、リソース、プロンプトを MCP クライアントに公開したい。既存のアプリケーションのツール、リソースなどを公開するか、エージェントを構築したり、オーケストレーターエージェントによって複数のエージェントをオーケストレーションしたりしています。
- MCP クライアント側開発者: クライアント側アプリケーションを複数の MCP サーバーに接続したい。クライアント側ロジックの中核部分は、どのツールを呼び出すか、どのリソースを取得するかを決定するための LLM 呼び出しを行うことです。
- MCP サーバーとクライアントの開発者: サーバーとクライアントの両方を開発しています。
- アプリケーションを迅速に反復する
- ワークフローや実行ロジックを監査する
- ボトルネックを特定する