仕組み
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 セットアップに 2 行追加します。1 つは Weave のインポート、もう 1 つはクライアントの初期化です。これらを追加すると、ツール、リソース、プロンプトの操作が自動的にトレースされます。
クライアント側のインテグレーション
クライアント側でも、トレースには 2 つの変更(Weave のインポートと初期化)が必要なだけです。すべてのツールの呼び出し、リソースへのアクセス、プロンプトのリクエストが自動的にトレースされます。チュートリアル: mcp_demo の例
mcp_example は、トレースのための Model Context Protocol (MCP) と Weave のインテグレーションを示しています。クライアントとサーバーの両方のコンポーネントを計測して、それらの相互作用の詳細なトレースをキャプチャする方法を紹介します。
サンプルの実行
-
weaveリポジトリをクローンし、mcp_demoサンプルに移動します。このサンプルには 2 つの主要なファイルが含まれています。example_server.py:FastMCPで構築されたデモ MCP サーバー。ツール、リソース、プロンプトを定義しています。example_client.py: サーバーに接続し、そのコンポーネントと対話するクライアント。
-
必要な依存関係を手動でインストールします。
-
デモを実行します。
このコマンドはクライアントとサーバーの両方を起動します。クライアントは、様々な機能をテストできるインタラクティブな CLI を開始します。
クライアント CLI コマンド
クライアントインターフェースは以下のコマンドをサポートしています。| コマンド | 説明 |
|---|---|
tools | 利用可能なツールを一覧表示 |
resources | 利用可能なリソースを一覧表示 |
prompts | 利用可能なプロンプトを一覧表示 |
add <a> <b> | 2つの数値を加算 |
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 アプリケーションの開発者は、通常以下の 3 つのカテゴリのいずれかに当てはまります:- MCP サーバーサイド開発者: 複数のツール、リソース、プロンプトを MCP クライアントに公開したい。既存のアプリケーションのツールやリソースなどを公開する場合や、エージェントを構築したり、オーケストレーターエージェントによって複数のエージェントをオーケストレーションしたりする場合。
- MCP クライアントサイド開発者: クライアントサイドのアプリケーションを複数の MCP サーバーに接続したい。クライアントサイドのロジックの核となる部分は、どのツールを呼び出すか、どのリソースを取得するかを決定するために LLM を呼び出すことです。
- MCP サーバーおよびクライアント開発者: サーバーとクライアントの両方を開発している。
- アプリケーションの迅速な反復開発
- ワークフローや実行ロジックの監査
- ボトルネックの特定