Microsoft が考える MCP の安全な利用方法
はじめに
本記事では、Model Context Protocol (MCP) を活用するうえで、Microsoftがどのように安心安全に利用を実現しようとしているかを、公開されている情報をもとに紹介します。MCP ServerとAzureのサービス、特にAzure API Management (APIM) を活用したアーキテクチャや、Remote MCP Serverの公開方法、認証・認可の仕組みについてまとめます。
🛠️MCPとAzure MCP Serverなのか
MCP(Model Context Protocol)は、AIモデルが外部ツールと標準的に連携するためのプロトコルです。Anthropic社によって提案され、AIエージェントがツールと連携し、タスクの実行や外部データの取得を可能にします。
MCPの構成要素
- MCPホスト: VS CodeのGitHub Copilotなど、外部機能と連携するLLMアプリケーション
- MCPクライアント: ホストアプリケーション内でサーバーと1:1接続を維持
- MCPサーバー: 特定機能を提供し、クライアントへツールやプロンプトを提供する軽量プログラム
-
MCPプロトコル: クライアントとサーバー間の通信を担うトランスポートレイヤ
Azure MCP Serverとは?
- Model Context Protocol (MCP) に準拠したAzure専用サーバー実装
- AIエージェントとAzureサービスを「自然言語指示」でつなぐ中継サーバー
- Node.jsベースの軽量サーバーとして提供
- GitHub Copilotなどのエージェントと組み合わせて利用可能
- Public Preview 段階(正式版ではない)
できること(プロンプト例)
AIエージェントに以下のような指示を出すことでAzureの操作が可能:
- 🔍 Azureリソースの探索
- 「私のStorageアカウントを一覧表示して」
- 「Cosmos DBにあるデータベースを教えて」
- 📊 ログやデータのクエリ
- 「Log Analyticsのワークスペースを検索して」
- 「AI Searchインデックスで
foo
を探して」
- ⚙️ 構成情報の操作
- 「App Configurationのキーを見せて」
- 🔧 応用操作
- 「CDNエンドポイントを一覧表示して」
- 「Node.jsでAzureアプリを作成したい」
Azure MCP Serverで利用できる主なサービスと機能
-
Azure AI Search
- インデックス一覧表示・スキーマ確認・クエリ実行 -
Azure Cosmos DB
- Cosmos DBアカウントの一覧取得
- データベース・コンテナーやアイテムの操作
- SQLクエリの実行
-
Azure Storage
- Storageアカウントの一覧取得
- BlobコンテナーやBlobの操作
- Tableのクエリ
-
Azure Monitor (Log Analytics)
- ワークスペースの一覧取得
- Kusto Query Language (KQL)を用いたログクエリ
-
Azure App Configuration
- App Configurationストアの一覧取得
- キー・バリューの管理、ロック/アンロック
-
Azure Resource Groups
- リソースグループの一覧と管理
-
Azure CLI / Azure Developer CLI (azd)
- Azure CLI/azdのコマンドを直接実行可能
- JSONフォーマットでの出力やテンプレート発見・初期化・デプロイなどもサポート
現段階では上記機能が含まれ、今後さらにサポートが拡充される予定とのことです。
🚀MCP Serverを活用する方法
GitHub Copilot Agent Modeとの連携
- GitHub Copilot (Agent Mode)はMCPをサポートしており、Azure MCPサーバーをインストールしておくことで、VS Code上からCosmos DBやStorageアカウントに自然言語でアクセスできるようになります。
- 公式ドキュメントでは、Agent ModeとAzure MCP Serverを組み合わせることで、Azureに関するドキュメント参照やリソースクエリなどを同一フローで行うワークフローが提案されています。
カスタムMCP Client/エージェント
- MCP clientとして、GitHub Copilot以外にもSemantic Kernelなどのエージェントフレームワークを利用できます。
- MCP SDK (Python/.NET) を用いて自前でクライアントを実装すれば、任意のアプリケーションがMCPサーバーを利用可能です。
🔐Azure API Management (APIM) を使ったセキュアな公開と認可
APIM と MCP Server
APIM は、MCP サーバーをリモートで安全に公開するための AI認証ゲートウェイ として位置づけられています。以下のような機能を担っています:
セキュリティと認可
-MCP クライアント → APIM → Microsoft Entra ID(旧Azure AD)による OAuth 2.0 認証フロー
-APIM が アクセストークンの仲介 を行い、MCP クライアントがリソースへ安全にアクセス可能
- トークンのスコープ検証・セッション管理も含む
通信方式のサポート - HTTP + Server-Sent Events (SSE) を APIM 経由で中継し、リアルタイム通信をサポート
エンタープライズ向け構成 - Azure Functions に MCP サーバーをデプロイ
- APIM がフロントで受け、Entra ID での認証+認可を経て MCP サーバーと接続
Remote MCP Serverの仕組み
- Remote MCP Server: MCPクライアントはHTTP + Server-Sent Events (SSE)を介してサーバーに接続し、OAuthでユーザーのアカウントリソースへのアクセスを承認する。
- Local MCP Server: 同一マシン上で標準入出力(stdio)経由で接続する。
企業利用では、Remote MCP ServerをAzure環境にデプロイし、APIMを入口として設定するケースが想定されます。
Credential Managerによるトークン管理
- APIMのCredential Managerは、GitHubやServiceNowなどのサードパーティAPI認証情報を安全に保管し、MCPサーバーからの呼び出し時に使用できます。
- これにより、エージェントが直接秘密情報を扱わずに済むというメリットがあります。
現在の対応について
項目 | 内容 |
---|---|
MCP クライアント認証 | Entra ID + OAuth 2.0 |
通信方式 | HTTP + SSE |
認可ゲートウェイ | Azure API Management |
認証情報の安全な管理 | Credential Manager(GitHub等向け) |
デプロイ例 | Azure Functions + APIM |
セキュリティ課題対応 | APIMを通じたJWT検証+スコープ制御 |
APIM+MCP+AIエージェントの組み合わせは、エンタープライズレベルのセキュアなAI統合基盤を構築する上で非常に強力なソリューションです。
📚Azure API Centerとの連携(MCP Serverの登録・発見)
- Azure API Center を利用すると、組織内で公開しているRemote MCP ServerをAPIインベントリとして登録し、利用者が簡単に検索・参照できるようになります。
- MCP Serverを
API Type: MCP
として登録し、OpenAPI形式の定義やデプロイ先のURLを設定すると、API Centerポータル上で発見しやすくなります。
まとめ
- Azure MCP Serverは、MCP仕様に準拠する任意のエージェントからの利用が可能であり、GitHub Copilot Agent Modeやカスタムエージェントなど、多様なシナリオで活用できます。
- Azure API Management をゲートウェイとして組み合わせることで、OAuth認証やCredential Manager、スケーラビリティの確保といったエンタープライズ向けのセキュリティ・管理機能を提供できる点が大きな特徴です。
- Azure API Center を利用すれば、組織内のMCPサーバーを一元管理し、開発者が必要なAPIを容易に発見・利用できます。
- MCPはまだ新しいプロトコルですが、Microsoftは今後さらにドキュメントやサンプル拡充、Azureサービスとの統合を進める予定です。
- Public Previewの段階であるため、利用者からのフィードバックや要望を積極的に受け付けており、GitHubリポジトリでIssueをオープンすることで意見を共有できます。
今後は、より多くのAzureサービスがMCP経由で利用可能になる見込みだそうです。エンタープライズ環境でMCPを活用する際には、APIMやAPI Centerを組み合わせてセキュリティと管理を強化するアーキテクチャが推奨されます。このPublic Previewを活用し、Azure上でのAIエージェント活用をしてみたいと思います。
参考資料
Discussion