【ITニュース解説】🧩Consume an MCP Endpoint from Azure Logic Apps — with an Agent Loop
2025年09月26日に「Dev.to」が公開したITニュース「🧩Consume an MCP Endpoint from Azure Logic Apps — with an Agent Loop」について初心者にもわかりやすく解説しています。
ITニュース概要
Azure Logic Appsが「Agent」機能とループを使い、MCPサーバーと賢く連携する方法を解説。数式を受け取ると、Logic Appsが自動でMCPサーバーから最適な計算ツールを見つけ、セッションを確立し、ツールを実行して結果を返す。複雑な処理を自律的に行い、効率的な自動化を実現する。
ITニュース解説
この解説では、Azure Logic Appsというクラウドサービスを使い、MCP(Microservice Communication Protocol)と呼ばれる形式で連携するサーバーの機能を利用する方法について説明する。特に、Logic Appsが「Agent」と呼ばれる賢い仕組みを使って、MCPサーバー上の適切な機能(ツール)を自動的に選択し、実行する一連の流れを詳しく見ていく。
Azure Logic Appsは、様々なサービスやシステムをつなぎ、自動で処理を実行するためのクラウドベースのサービスである。一方、MCPサーバーは、特定の機能を提供するサーバーで、プログラムがその機能を利用するための決まったやり取りのルール(プロトコル)が定められている。ここでは、Logic Appsが数式を受け取り、MCPサーバーの算術計算ツールを使ってその結果を返すシンプルな例を考える。この一連の処理は、Logic Appsが単に指示されたことを実行するだけでなく、まるで自律的に考えて行動するかのように、必要なツールを見つけて使う点が特徴だ。
まず、処理はHTTPリクエストによって始まる。このリクエストには、例えば「10 + 50 * 25」のような数式が含まれている。Logic Appsがこのリクエストを受け取ると、最初に行うのはMCPサーバーとの「セッション確立」である。これは、MCPサーバーにinitializeというメソッドを使って初期化を要求するもので、これからMCPサーバーと一連のやり取りを開始するという意図を伝えるものである。このリクエストは、jsonrpcという形式で、protocolVersionやLogic Apps自身の情報を含んで送信される。MCPサーバーはこれに応答し、Mcp-Session-Idという特別な識別子を返す。このセッションIDは、以降のすべてのMCPサーバーとのやり取りで必要となる。Logic AppsはこのIDを内部の変数に保存し、今後のリクエストに必ず含めるようにする。このIDがあることで、MCPサーバーは一連の会話が同じクライアントから来ていることを認識できる。
セッションが確立されたら、次にLogic AppsはMCPサーバーがどのような機能を提供しているのかを知る必要がある。これを「ツール発見」と呼ぶ。Logic Appsはtools/listというメソッドを使ってMCPサーバーにリクエストを送る。このリクエストには、先ほど取得したMcp-Session-Idがヘッダに含まれる。MCPサーバーはこれに対し、利用可能なツールの一覧をJSON形式で返す。この一覧には、例えば「wf_arithmetic_add」(足し算)や「wf_arithmetic_subtract」(引き算)のようなツール名、そのツールの説明、そしてそのツールがどのような情報(パラメータ)を必要とするか(例: number1, number2)が詳細に記述されている。Logic Appsはこのツールカタログを内部に保存し、Agentがどのツールを使うべきかを判断する材料とする。
これらの準備が整うと、いよいよ本記事の肝である「Agentループ」の出番だ。Logic AppsのAgent機能は、ユーザーから受け取った数式と、MCPサーバーから取得したツールカタログを使って、どのように処理を進めるべきかを自律的に判断する。Agentは、入力された数式を解析し、それに最適なMCPツール(例えば、計算に必要な足し算や掛け算を行うツール)を選び出す。そして、そのツールを実行するために必要な情報(ツール名と引数)をJSON形式のデータとして準備する。
Agentは、選んだツールを直接MCPサーバーに呼び出すのではなく、「InvokeMCPTools」というカスタムツールを介して実行する。このInvokeMCPToolsはLogic Apps内で定義された、MCPサーバーへのリクエストを構築し送信する役割を担うものである。内部的にはHTTPアクションを使ってMCPサーバーへリクエストを送る。AgentがInvokeMCPToolsを呼び出す際、mcpToolName(実行したいMCPツールの名前)とmcpToolPayload(ツールに渡す引数を文字列化したJSONデータ)という二つのパラメータを設定する。Logic AppsはmcpToolPayloadの文字列をJSONオブジェクトに変換し、最終的にMCPサーバーに送るtools/callリクエストのボディを構築する。このリクエストボディには、jsonrpcのバージョン、一意のID、tools/callというメソッド名、そしてname(実行したいMCPツール名)とarguments(引数)が含まれる。もちろん、HTTPヘッダには忘れずにMcp-Session-Idが付加される。
MCPサーバーはtools/callリクエストを受け取ると、指定されたツール(この例では算術計算ツール)を実行し、その結果をLogic Appsに返す。Agentは、この結果を受け取ると、さらなる処理が必要であれば別のツールを選択してループを繰り返す。しかし、今回の例では最終的な計算結果が得られればよいため、Agentは最終結果を呼び出し元に返す。このように、Agentは内部でどのようにツールを選び、どのような処理を行ったかを隠蔽し、最終的な出力のみを提供する。
この一連の仕組みを組み合わせることで、Logic Appsは単なる自動化ツールを超え、より賢く、自律的に外部サービスと連携できるようになる。セッションの確立からツールの発見、そしてAgentによる最適なツールの選択と実行までを自動で行うことで、ユーザーは具体的なツールの呼び出し方法を意識することなく、高レベルな指示(例: 「この数式を計算して」)を与えるだけで目的を達成できる。これは、複雑なシステム連携を簡素化し、Logic Appsの柔軟性と応用範囲を大きく広げる強力なパターンである。