本内容は、2025/12/05 時点でプレビュー扱いの内容です。将来的に内容は変更される可能性があります。
この記事は Microsoft Power Automate Advent Calendar 2025 5 日目の記事です。
Logic Apps を MCP サーバーにする
Azure Logic Apps は、Microsoft Azure のクラウドベースで提供される、ローコードまたはノーコードの自動化プラットフォームです。コード不要でさまざまなワークフローを構築したり、豊富なコネクタを活用してさまざまなサービスと連携できます。
非常に似たものとしてよく Power Automate が取り上げられますが、Power Automate は主にビジネスユーザー (非エンジニア) に焦点が当てられているのに対し、Azure Logic Apps は開発者やエンジニアに焦点が当てられた製品です。
つまり、Power Automate が「現場の便利ツール」とするならば、Azure Logic Apps は「組織の仕組みを支える基盤」といったものになります。
Azure Logic Apps 上で作成された従来のワークフローは、基本的に定められた仕様に則って動作します。
今回は Azure Logic Apps の基盤を MCP サーバー化し、基盤上で作成しているワークフローを MCP のツールとして定義した後、外部の AI エージェントから呼び出して動作させてみようと思います。
MCP サーバー化する手順
この内容は、Azure Logic Apps の Standard プランのうち、以下のホスティングオプションでのみ実施できます。
- ワークフロー サービス プラン
- App Service Environment v3
マルチテナントの従量課金形式は非対応のため、Azure Logic Apps のサービスデプロイと同時に月額課金が始まる点に注意ください。
Standard プランの課金形態については、公式ページ を参照ください。
Logic Apps は裏で App Service 基盤が構築されますが、これが物理的な MCP サーバーの境界となります。
Logic Apps 上で構築した各ワークフローは MCP サーバー (AI エージェント) で言うところの ツール に相当する扱いとなります。
ただし、後述の mcpservers.json の設定により、1 つの Azure Logic Apps 基盤で複数の MCP サーバーを論理的に構築することは可能です。
つまり、アプリ開発でいうところの、「1 つのサーバにいくつもアプリを載っけてそれぞれ動かせるよ(ただし物理は共有しているから性能周りは要把握だよ)」ってやつに似ています。
Azure Logic Apps のデプロイ
Logic Apps サービスをデプロイします。この記事では sample-logicapps-mcp という名前でサービスデプロイをします。
ワークフローの作成
MCP サーバーのツールとして動作させるワークフローを作成します。ワークフローの種別は Stateful (ステートフル) で必ず作成します。
名前は、後続で MCP サーバーのツールとして定義するのもあり、読んで/見て容易に理解できる適切な名称にすることを推奨します。この記事では、指定テンプレートのメールを送信するので、SendMail とします。
ワークフローのトリガーは、Request コネクタの When an HTTP request is received コネクタを使用します。MCP サーバーとして外部の AI エージェントからの処理を受け付けるため、このコネクタ指定は必須になります。
トリガーとして Request コネクタの When an HTTP request is received トリガーを選択したら、トリガー内容の設定を行います。
パラメーター タブの Request Body JSON Schema 欄を MCP サーバーとして動作するように設定します。やることとしては下記の 2 つです。
- 接続してくる AI エージェントがツールの意味を理解できるよう、トリガーの説明を定義する
- ツール (ワークフロー実行) に必要なプロパティを Body で受け取るよう定義する
- AI エージェントが各プロパティを理解できるよう、Body 内で定義した各プロパティに description 属性を追加し、プロパティの説明を定義する
今回はサンプルとして、受け取ったメールアドレスを宛先にメールを送信するワークフローとするため、トリガーの説明欄は以下のように設定します。
このトリガーは、トリガーの URL に対して、ワークフローのアクションを実行するために必要なパラメーター値を含む HTTPS リクエストが送信されたときに、ワークフローを開始します。
ワークフローは「MailAddress」パラメーターで指定されたメールアドレスを宛先として、メールを送信します。
トリガーの Body 部分は下記のように設定します。
{
"type": "object",
"properties": {
"MailAddress": {
"type": "string",
"description": "メール送信を行う際の宛先のメールアドレス"
}
},
"required": [
"MailAddress"
]
}
トリガーの後ろで設定するアクションは、通常のワークフローと同じように設定すれば OK です。
今回はメール送信なので、メール送信のコネクタアクションを設定しておきます。
シンプルですが、作業が完了したらワークフローは以下のようになっていると思います。
MCP をセキュアに利用するための認証設定を追加する
MCP はいわゆるプロトコルであり、指定の URL (エンドポイント) に接続元の AI エージェントが接続できれば使用できるものです。そのため、MCP サーバー単体では認証機能がないため、セキュリティ面で課題がありました。
その点、Microsoft Azure では、Microsoft Entra ID とシームレスに連携ができるため、従来の MCP サーバー単体では実現ができなかった認証機能 (Easy Auth) を追加できます。Logic Apps も Microsoft Azure のサービスのため、これが適用できます。
これにより、作成した MCP サーバーを使用する際は Microsoft Entra ID の ID 認証を必須とし、アカウント認証なしでの利用をできなくすることを強制できます。基本的に Logic Apps で MCP サーバーを作成する背景には、企業/組織内のユーザーに限定して公開し活用してもらうことがあると思いますので、Microsoft Entra ID と連携して認証機能を追加することを行なってください。
機能としては、認証なしの匿名公開で Logic Apps を MCP サーバー化することも可能です。
方法は 公式ドキュメント に記載の内容を参照してください。
認証機能を追加するには、
- 認証用の Microsoft Entra のアプリ登録 (サービスプリンシパル) を実施
- Logic Apps と作成したアプリを紐づける
こちらを実施する必要があります。
アプリの作成および Logic Apps との紐付けは、公式ドキュメントに従ってやれば OK です。
アプリの名前は好きなものを入れれば良いと思いますが、わかりやすい名前にしておくことを推奨します。(EasyAuth-hogehoge とか)
スコープの追加 ペインでの [管理者の同意] 周辺の内容は、ユーザーが認証する際に画面表示される内容なので、MCP サーバー経由で行う内容について記載しておけば良いです。
アプリ (サービスプリンシパル) を作成したら、Logic Apps と紐付けます。こちらも上述のページを参照すれば問題ないと思いますが、いくつか要注意ポイントがあります。
許可されるトークン対象ユーザー の設定値ですが、最後に / を必ず追加してください。作成したアプリ側のコピーリンクでは、末尾の / が含まれませんが、ここでは指定必須になります。
クライアントアプリケーションの要件 では、MCP サーバー (Logic Apps) へのアクセス時における認証元アプリを限定できます。
公式ドキュメントでは、ここで Visual Studio Code のエンタープライズアプリの ID 指定をする旨の記載がありますが、認証を行う Microsoft Entra ID 上に Visual Studio Code のエンタープライズアプリが未登録の可能性もあると思います。
未登録の場合は [任意のアプリケーションからの要求を許可する] でいったん大丈夫です。(あとで修正できます)
ID の要件 に関しては、認証できるユーザーを制限したい場合に設定できるものですが、[任意の ID からの要求を許可する] で基本 OK です。認証ユーザーを制限したい場合はここではなく、先に作成したアプリ (サービスプリンシパル) 側で実施すれば問題ないです。
App Service 認証 の項目は、一度 ID プロバイダー設定を行った後の画面で確認できます。
Logic Apps を MCP サーバーとして識別させる
ワークフローを作成しただけでは Logic Apps が MCP サーバーとして認識されないため、MCP サーバーとして認識させるための設定を行います。
Logic Apps のリソース画面にて、[開発ツール] -> [高度なツール] から、Kudu 画面を開きます。
[Debug console] -> [CMD] を選択します。
コマンド画面で以下を入力し、site/wwwroot ディレクトリを開きます。(手動で階層移動しても OK です)
cd site/wwwroot
wwwroot の横の [+] を選択し、[new file] を選択します。
mcpservers.json と入力しファイルを新規作成します。
ファイルを作成したら、mcpservers.json ファイルの横の鉛筆アイコンを選択し、ファイル編集画面を開きます。
mcpservers.json ファイルを編集します。このファイルの内容をミスすると MCP サーバー識別がエラーになるので、内容を理解して作業してください。
-
mcpServers 要素は配列で、論理的に MCP サーバーを定義するものになります
物理的な Logic Apps リソースは 1 つですが、MCP サーバーを論理的に複数建てられる、ということです。 -
name 要素は MCP サーバーの名前ですが、変な名前はつけないでください
MCP サーバーの エンドポイント URL に使用されます。 -
tools 要素は、MCP サーバーが使うワークフロー名を定義します
絶対に Logic Apps のワークフロー名と値を一致するようにしてください
今回は 1 つだけ MCP サーバーを定義します。
{
"mcpServers": [
{
"name": "mcp-mailsender",
"description": "First MCP server",
"tools": [
{
"name": "SendMail"
}
]
}
]
}
次に、mcpservers.json と同じディレクトリ (階層) に存在する host.json ファイルを編集します。
ここでは extensions 要素を追加するだけで OK です。もし指定可能なプロパティを明示的に設定したい場合は、公式ドキュメント に記載の内容を参考にしてください。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Workflows",
"version": "[1.*, 2.0.0)"
},
"extensions": {
"workflow": {
"McpServerEndpoints": {
"enable": true
}
}
}
}
これで、Logic Apps を MCP サーバー化することができます。
MCP サーバーのアドレス
以下の形式の URL になります。
https://<Logic Apps 名>.azurewebsites.net/api/mcpservers/<mcpservers.json で定義した MCP サーバー名>/mcp
この記事でサンプルとして作成したものだと、下記のような URL になります。
Logic Apps の一意なドメイン機能を使用している場合は、azurewebsites.net のドメイン部分の前に一意の値を追加する必要があると思います。
https://sample-logicapps-mcp.azurewebsites.net/api/mcpservers/mcp-mailsender/mcp
MCP サーバー化 Logic Apps を呼び出す
今回は公式ドキュメント同様、Visual Studio Code の GitHub Copilot Chat から MCP サーバー化された Logic Apps を呼び出してみます。
MCP サーバーを登録し認証を行う
まずは、Visual Studio Code 上で MCP サーバーを登録します。
mcp.json を開いて MCP サーバー情報を追加します。
MCP サーバー名 (上記でいう MailSender) は任意のものを指定可能です。GitHub Copilot Chat 上で使用する MCP サーバーを指定する際に使うので、自分がわかりやすいものにすれば OK です。
mcp.json は必ずファイルを上書き保存してください。上書き保存しないと認証に進めません。
上書き保存を行うと、再起動などの表示が出るので、認証作業を実施してください。
認証処理が始まると、以下のような画面が出ます。許可をします。
ブラウザのポップアップが起動し、Microsoft Entra のユーザー認証をします。
ユーザー認証が完了すると、初回認証時のみ、アプリ (サービスプリンシパル) で設定したスコープやアクセス許可の承諾画面が出るので、承諾します。
認証が完了すると以下のような表示になるので、ブラウザのポップアップは終了して問題ありません。
認証が正常に完了すると、先ほどのエラーの表示も正常状態に切り替わります。
MCP サーバーを呼び出して処理をさせる
MCP サーバーの登録および認証が完了したら、あとは AI エージェント経由で呼び出して利用するだけです。
GitHub Copilot Chat の Agent モードで、使用する MCP サーバーが有効状態であることを確認します。今回は検証のため、登録した Logic Apps の MCP サーバーのみ有効化します。
ちなみに、MCP サーバー内のツールの使用有無まで設定することも可能です。
実際にチャットを送ってみると、初回時などは MCP サーバーを利用するための事前情報を確認される場合があります。その場合は助けてあげてください。
特に問題ない場合は、下記のように、MCP サーバーを使って良いかの確認が出ます。任意の内容で利用を承諾してあげてください。
MCP サーバー利用の許可が確認されると、エージェント側で MCP サーバーを呼び出し、処理を完了した旨の表示が出ます。
実際に、ちゃんと Logic Apps 側が呼び出されてワークフローを実行したかを確認してみると、ちゃんとログとして残っていることも確認できます。
今回はメール送信なので、実際にメールが送られることも確認しておきます。
というわけで、Logic Apps を MCP サーバー化し、作成したワークフローを AI エージェント経由で実行することができました。
まとめ
Logic Apps を MCP サーバー化し、ワークフローをツールとして識別させ、外部の AI エージェントから呼び出す方法について、実機画面を交えて紹介しました。
トリガー部分は変更する必要がある可能性もありますが、ほぼ既存の資産 (ワークフロー) をそのまま、トリガー部分を MCP プロトコルに切り替えることが可能なことを理解できたと思います。(基本的には既存のワークフローを MCP 用に複製した後、トリガーだけ差し替える、みたいな形にはなると思いますが...)
企業/組織での AI 活用について悩んでいる方で、現在 Power Automate や Logic Apps で業務を自動化している方は、ぜひ MCP サーバー化を試してみてはいかがでしょうか。きっとあなたの AI エージェント × MCP についての理解を深める良い材料となると思います。
参考情報































