仕組み
weave.op() デコレータを適用することで、Model Context Protocol (MCP) の主要なコンポーネントを自動的にトレースします。具体的には、mcp.server.fastmcp.FastMCP クラスと mcp.ClientSession クラスの method にパッチを適用します。
このインテグレーションにより、Weave は次の MCP コンポーネントをトレースします。
インテグレーションを使用する
weave を import するための 1 行と初期化するための 1 行を追加するだけで、トレースを有効にできます。
前提条件
設定
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 (体格指数) を計算する |
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 を読み取る
- 引数を使ってプロンプトを生成する
- カスタムの method/function で
weave.op()を使用する方法を示す
FAQ
MCPトレースが必要な理由
- MCPサーバー側の開発者: MCPクライアントに対して、複数のツール、リソース、プロンプトを公開したい場合です。既存のアプリケーションのツールやリソースなどを公開している、agent を構築している、またはオーケストレーター agent によって複数の agent を連携させているケースがこれに当たります。
- MCPクライアント側の開発者: クライアント側のアプリケーションを複数のMCPサーバーに接続したい場合です。クライアント側ロジックの中核となるのは、どの tool を call するか、どのリソースを取得するかを判断するためのLLM callsです。
- MCPサーバーおよびクライアントの開発者: サーバーとクライアントの両方を開発している場合です。
- アプリケーションをすばやく反復改善する
- workflow や実行ロジックを監査する
- ボトルネックを特定する