MCP Serverの認証ゲートウェイにAzure API Managementを活用する
この記事の内容
- MCPサーバーを企業利用する際に認証が重要な課題となる理由
- MCPサーバーに認証機能を持たせることの問題点(役割の二重化)
- Azure API ManagementをAIゲートウェイとして活用する構成パターン
- Microsoft Entra IDによる認証・認可フローの概要
- Azure FunctionsのMCPトリガーとの組み合わせによるエンタープライズ向け構成
MCPと認証の課題
昨今話題のMCP(Model Context Protocol)は、AIと外部システムを繋ぐ仕組みとして注目を集めています。個人利用であれば、ローカルマシン上でStandard IO通信を使い、コマンドを実行してその結果を扱うといったパターンで問題なく使えます。
しかし、企業内で従業員に広く使わせようとすると、認証の問題が真っ先に浮上します。認証がきちんとしていなければ、企業として安心して利用することはできません。これはMCPに限らず、エンタープライズ向けシステムにおける当然の要件です。
MCPサーバーに認証を持たせることの問題点
MCPの最新仕様では、サーバー側で認証を行う仕組みが盛り込まれています。しかし、MCPサーバーが認証処理とリソース管理の両方を担うと、役割が二重化してしまうという設計上の問題が生じます。
この問題を解決するアプローチとして、Azure APIマネジメントをAIゲートウェイとして間に挟み、認証・認可をゲートウェイ側で一元的に処理するという構成が提案されています。これがAgilインテグレーションサービスブログで紹介されているアーキテクチャの基本的な考え方です。
Azure API ManagementをAIゲートウェイとして使う
提案されている構成では、Azure API ManagementをMCPサーバーへのプロキシとして配置します。認証はAPI Management側で処理し、MCPサーバー本体はリソースの提供に専念するという役割分担です。
認証フローはMicrosoft Entra IDを軸に構成されます。具体的には、Entra IDに対応したウェブサイトにリダイレクトされ、次のような流れで処理が進みます。
- ユーザーがMCPクライアントを介してリクエストを送信する
- API ManagementがリクエストをEntra IDの認証エンドポイントにリダイレクトする
- ユーザーが認証を行い、アプリケーションへのコンセント(許可)を与える
- 発行されたトークンの権限範囲内でMCPサーバーへのアクセスが許可される
このフローは、一般的なEntra ID対応Webアプリケーションの認証体験と同様のものです。MCPにも同じ仕組みを適用することで、エンタープライズ標準の認証基盤と統合できます。
Azure FunctionsのMCPトリガーとの組み合わせ
近年、Azure FunctionsにMCPトリガーが追加されました。Azure Functions上でMCPサーバーを構築し、そこにAzure API Managementをゲートウェイとして組み合わせる構成が、Microsoftが提案するエンタープライズ向けの標準パターンの一つとなっています。
この組み合わせにより、次のような構成が実現できます。
サンプルリポジトリで試してみる
Microsoftは、この構成を試せるサンプルリポジトリをAzure Samplesとして公開しています。リポジトリ名は以下のとおりです。
Azure Developer CLI(azd)を使ってデプロイすることで、サンプル環境を素早く立ち上げることができます。エンタープライズ向けの認証付きMCP構成を試したい方は、このリポジトリをスタート地点として活用するとよいでしょう。
Azure API Managementを導入するメリット
Azure API Managementをゲートウェイとして導入することには、認証・認可の一元化以外にも多くのメリットがあります。
- ポリシー管理: レート制限、IPフィルタリング、リクエスト変換などのポリシーを柔軟に適用できる
- ログ取得: すべてのリクエスト・レスポンスのログを一元的に記録・監視できる
- 認証の一元化: 複数のバックエンドサービスへのアクセス制御を1か所で管理できる
- スケーラビリティ: エンタープライズ規模のトラフィックにも対応できる
設定のハードルがゼロではないため、すぐに導入しにくいと感じる場面もあるかもしれません。しかし、これらのメリットを考えると、企業向けMCP環境の構築において積極的に採用を検討する価値があります。
まとめ
MCPをエンタープライズ環境で安全に利用するには、認証・認可の仕組みが不可欠です。MCPサーバー自体に認証機能を持たせると役割が二重化するという問題があるため、Azure API ManagementをAIゲートウェイとして配置し、Microsoft Entra IDと連携した認証・認可をゲートウェイ側で処理する構成が有効です。
Azure FunctionsのMCPトリガーと組み合わせることで、よりエンタープライズ標準に近い構成が実現できます。Microsoftが提供するサンプルリポジトリ(remote-mcp-apim-functions-python)を活用すれば、この構成を実際に体験することができます。MCPの本番利用を検討している方は、ぜひ認証ゲートウェイの設計をアーキテクチャの早い段階から取り入れてみてください。