仕組み
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 操作 (list_tools、list_resources、list_prompts) がトレースされます。
サーバー側インテグレーション
MCP サーバーを構築またはインストルメントする場合は、このセクションを参照してください。MCP サーバーをトレースするには、既存のFastMCP のセットアップに、Weave をインポートする行とクライアントを初期化する行の 2 行を追加します。追加すると、Weave がツール、リソース、プロンプトの操作を自動的にトレースします。
クライアント側のインテグレーション
MCP クライアントを構築またはインストルメントする場合は、このセクションを参照してください。クライアント側でも、トレースに必要な変更は Weave のインポートと初期化の 2 つです。Weave は、すべてのツール呼び出し、リソースへのアクセス、プロンプトのリクエストを自動的にトレースします。チュートリアル: mcp_demo の例
mcp_demo の例では、MCP と Weave を連携させてトレースを行う方法を紹介します。クライアントとサーバーの両方のコンポーネントをインストルメントし、両者のやり取りの詳細なトレースを取得する方法を示します。このコードを実行すると、MCP アプリケーションのクライアント側とサーバー側の両方のトレースを Weights & Biases UI で確認できます。また、ご自身の project に応用できる具体的な参考例としても活用できます。
サンプルを実行する
-
docs リポジトリをクローンし、
mcp_demoサンプルのディレクトリに移動します。このサンプルには、主に次の 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
このセクションでは、Weave の MCP トレースを使用する理由とその使い方について、よくある質問にお答えします。MCP トレースが必要な理由
LLM アプリケーションの開発者は、次の 3 つのタイプのいずれかに該当します。- MCP サーバー側の開発者: 複数のツール、リソース、プロンプトを MCP クライアントに公開したい開発者です。既存のアプリケーションのツールやリソースを公開している場合や、エージェントを構築している場合、またはオーケストレーターエージェントで複数のエージェントを連携させている場合が該当します。
- MCP クライアント側の開発者: クライアント側のアプリケーションを複数の MCP サーバーに接続したい開発者です。クライアント側のロジックの中核は、どのツールを呼び出すか、どのリソースを取得するかを判断するための LLM Call です。
- MCP サーバーとクライアントの開発者: サーバーとクライアントの両方を開発している開発者です。
- アプリケーションを反復的に改善する。
- ワークフローや実行ロジックを監査する。
- ボトルネックを特定する。