MCP サーバーとクライアントを使用してエージェント ツールを統合する

完了

ツールを Azure AI エージェントに動的に接続するには、まず、機能するモデル コンテキスト プロトコル (MCP) のセットアップが必要です。 これには、ツール カタログをホストする MCP サーバーと、それらのツールをフェッチしてエージェントで使用できるようにする MCP クライアントの両方が含まれます。

MCP サーバーとは

MCP サーバーは、エージェントが使用できるツールのレジストリとして機能します。 FastMCP("server-name")を使用して MCP サーバーを初期化できます。 FastMCP クラスは、Python 型ヒントとドキュメント文字列を使用してツール定義を自動的に生成するため、MCP ツールの作成と保守が簡単になります。 これらの定義は、クライアントから要求されたときに HTTP 経由で提供されます。 ツール定義はサーバー上に存在するため、エージェントを変更または再デプロイしなくても、いつでも新しいツールを更新または追加できます。

MCP クライアントとは

標準の MCP クライアントは、MCP サーバーと Azure AI エージェント サービスの間のブリッジとして機能します。 クライアントは MCP クライアント セッションを初期化し、サーバーに接続します。 その後、次の 3 つの主要なタスクが実行されます。

  • session.list_tools()を使用して MCP サーバーから使用可能なツールを検出します。
  • ツールをラップする Python 関数スタブを生成します。
  • これらの関数をエージェントに登録します。

これにより、エージェントは MCP カタログにリストされているすべてのツールを、ハードコーディングされたロジックなしでネイティブ関数であるかのように呼び出すことができます。

ツールを Azure AI エージェントに登録する

MCP クライアント セッションが初期化されると、クライアントは MCP サーバーからツールを動的にプルできます。 MCP ツールは、 session.call_tool(tool_name, tool_args)を使用して呼び出すことができます。 エージェントがそれらを呼び出すことができるように、各ツールを非同期関数にラップする必要があります。 最後に、これらの関数はバンドルされ、エージェントのツールセットの一部になり、実行時に任意のユーザー要求に使用できます。

MCP エージェント ツール統合の概要

  • MCP サーバーは、@mcp.toolで修飾されたツール定義をホストします。
  • MCP クライアントは、サーバーへの MCP クライアント接続を初期化します。
  • MCP クライアントは、session.list_tools()を使用して使用可能なツール定義をフェッチします。
  • 各ツールはsession.call_toolを呼び出すために非同期関数でラップされています。
  • ツール関数は、エージェントが使用できるようにする FunctionTool にバンドルされています。
  • FunctionToolはエージェントのツールセットに登録されます。

これで、エージェントは自然言語の対話を通じてツールにアクセスして呼び出すことができるようになります。 MCP サーバーとクライアントを設定することで、ツール管理とエージェント ロジックの間にクリーンな分離を作成し、新しいツールが使用可能になったときにシステムを迅速に適応できるようにします。