しくみ
weave.op() デコレータを適用してパッチを当てることで、Model Context Protocol (MCP) の主要コンポーネントを自動的にトレースします。具体的には、mcp.server.fastmcp.FastMCP クラスおよび mcp.ClientSession クラスのメソッドにパッチを適用します。
このインテグレーションにより、Weave は次の MCP コンポーネントをトレースします。
インテグレーションを使用する
weave をインポートする行と初期化する行の 2 行を追加するだけで、トレースを有効化できます。
前提条件
設定
MCP_TRACE_LIST_OPERATIONS: サーバー側およびクライアント側の両方で、リスト操作(list_tools、list_resources、list_prompts)をトレースするにはtrueに設定します。
サーバーサイドインテグレーション
FastMCP のセットアップに 2 行を追加します。1 行は Weave をインポートし、もう 1 行はクライアントを初期化します。これらを追加すると、ツール、リソース、プロンプトの各操作は自動的にトレースされます。
クライアント側のインテグレーション
チュートリアル: mcp_demo サンプル
mcp_demo サンプルは、Model Context Protocol (MCP) と Weave をトレーシング用途でインテグレーションする方法を示します。クライアントおよびサーバー双方のコンポーネントにインストルメンテーションを追加し、それらのやり取りの詳細なトレースを取得する方法を紹介します。
サンプルを実行する
-
docs リポジトリをクローンして、
mcp_demoサンプルに移動します:このサンプルには、主に次の 2 つのファイルが含まれています:example_server.py:FastMCPで構築されたデモ用の MCP サーバー。ツール、リソース、およびプロンプトを定義します。example_client.py: サーバーに接続し、そのコンポーネントとやり取りするクライアント。
-
必要な依存パッケージを手動でインストールします:
-
デモを実行します:
このコマンドはクライアントとサーバーの両方を起動します。クライアント側で対話型 CLI が立ち上がり、さまざまな機能を試せます。
クライアント CLI コマンド
| Command | Description |
|---|---|
tools | 利用可能なツールを一覧表示する |
resources | 利用可能なリソースを一覧表示する |
prompts | 利用可能なプロンプトを一覧表示する |
add <a> <b> | 2 つの数値を加算する |
bmi <weight> <height> | BMI(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 サーバーに接続する
- 利用可能な tools、resources、prompts を検出する
- パラメーターを指定して tools を呼び出す
- リソース URI から読み取る
- 引数付きで prompts を生成する
- カスタムメソッド/関数で
weave.op()を使用する
よくある質問
なぜ MCP のトレーシングが必要なのですか?
- MCP サーバー側開発者: 複数のツール、リソース、プロンプトを MCP クライアントに公開したいと考えています。既存アプリケーションのツールやリソースなどを公開している、あるいはエージェントを構築している、またはオーケストレーターエージェントによって複数のエージェントをオーケストレーションしています。
- MCP クライアント側開発者: クライアント側アプリケーションを複数の MCP サーバーに接続したいと考えています。クライアント側ロジックの中核は、どのツールを呼び出すか、どのリソースを取得するかを決めるための LLM 呼び出しです。
- MCP サーバー兼クライアント開発者: サーバーとクライアントの両方を開発しています。
- アプリケーションを高速に反復改善する
- ワークフローや実行ロジックを監査する
- ボトルネックを特定する