mcpField
A
Azure MCP Server

Azure MCP Server

ローカル
github.com/Rajkumar-21クラウド・インフラ075 週間前に更新

Azure MCP Server について

Azure MCP Serverは、Azureリソースの管理と調査に使うPython製MCPサーバーです。リソースグループ、ストレージアカウント、仮想マシンを照会でき、複数の認証方式とstdio・SSE接続に対応しています。

主な機能

  1. 01リソースグループとストレージアカウントの一覧
  2. 02ストレージ使用量とVM詳細の照会
  3. 03チームタグによるVM絞り込み
  4. 04VM電源状態Runbookの実行
  5. 053種類のAzure認証方式

活用シーン

  1. 01サブスクリプション内のリソースとストレージの確認
  2. 02ストレージアカウントの容量使用状況の確認
  3. 03チームタグを使った仮想マシンの検索
  4. 04Runbook経由でのVM操作

MCP 対応

MCPサーバーとして、Azureリソースの照会・管理ツールをMCPクライアントに提供し、構造化した結果を返します。stdioとSSEのトランスポートに対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Azure MCP Server

Azure リソースの管理と探索を行うための、Model Context Protocol(MCP)サーバー実装です。このサーバーは、Model Context Protocol を使用して Azure リソースとやり取りするための構造化されたインターフェースを提供し、Azure インフラストラクチャをプログラムから簡単に管理および監視できるようにします。

概要

Azure MCP Server は、MCP クライアントと Azure サービスをつなぐ、Python ベースの実装です。認証処理と構造化されたレスポンス形式を備え、リソースグループやストレージアカウントなど、さまざまな Azure リソースを管理するためのツールとエンドポイントを提供します。

機能

  • 最新の Azure SDK を使用した非同期 Azure 操作
  • 複数の認証方式をサポート(Default、Service Principal、Managed Identity)
  • MCP プロトコルを使用した構造化レスポンス形式
  • 包括的なエラー処理とログ記録
  • 環境変数による設定をサポート

前提条件

  • Python 3.13 以降
  • Azure サブスクリプション
  • Azure CLI(ローカル開発では推奨)

セットアップとインストール

  1. リポジトリをクローンします:
git clone <repository-url>
cd azure-mcp-server
  1. uv(Universal Virtualenv)をインストールします:
curl -LsSf https://astral.sh/uv/install.ps1 | powershell
  1. 仮想環境を作成し、依存関係をインストールします:
# Create and activate virtual environment
uv venv
.\.venv\Scripts\Activate.ps1

# Install dependencies from pyproject.toml
uv pip sync pyproject.toml

このプロジェクトでは、以下の主要な依存関係を使用します:

[project]
name = "azure-mcp-server"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
    "aiohttp>=3.11.18",
    "azure-identity>=1.21.0",
    "azure-mgmt-monitor>=6.0.2",
    "azure-mgmt-resource>=23.3.0",
    "azure-mgmt-storage>=22.2.0",
    "httpx>=0.28.1",
    "mcp[cli]>=1.6.0",
    "python-dotenv>=1.1.0",
    "starlette>=0.46.2",
    "uvicorn>=0.34.2",
]
  1. 環境変数を設定します: ルートディレクトリに .env ファイルを作成し、以下の変数を設定します(必要な auth_type に合わせて置き換えてください):
AZURE_SUBSCRIPTION_ID=your-subscription-id
AZURE_TENANT_ID=your-tenant-id
AZURE_CLIENT_ID=your-client-id
AZURE_CLIENT_SECRET=your-client-secret
AZURE_MANAGED_IDENTITY_CLIENT_ID=your-managed-identity-client-id  # Optional

サーバーの実行

  1. MCP サーバーを起動します:
  • Stdio トランスポートを使用する場合

    uv run server.py
    
  • SSE トランスポートを使用する場合

    MCP サーバーを SSE として公開するには、server.py の以下のセクションをコメントアウトします。

    # Keep this commented out or remove if running via main.py/Uvicorn
    if __name__ == "__main__":
        logger.info("Starting Azure Explorer MCP Server for stdio...")
        mcp.run()
    
    

    次に、以下のコマンドを実行して起動します:

    uv run main.py
    

    Uvicorn が起動し、http://127.0.0.1:8000 でリッスンします。

INFO:__main__:Starting Uvicorn ASGI server on 127.0.0.1:8000
INFO:     Started server process [your_pid]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

このサーバーは起動し、SSE トランスポート経由の MCP 接続を受け付ける準備ができました。stdio はもう使用していません。

SSE 接続のテスト方法

サーバーは独立して実行され、SSE 接続用に HTTP でリッスンしているため、(stdio を強制する)mcp dev server.py は使用できません。

SSE 経由で接続するように設定されたクライアントが必要です。

以下にいくつかの方法を紹介します。

方法 A:MCP Inspector(スタンドアロンモード)

  • 1 つ目のターミナルで uv run main.py を実行したままにします。

  • 新しいターミナルを開きます。こちらでも仮想環境が有効になっていることを確認してください。

  • Inspector をスタンドアロンで起動します(mcp dev は使用しません)。

    npx @modelcontextprotocol/inspector
    

(注:npx を使って Inspector を直接実行します。ここではサーバースクリプトを指定しません。)

  • MCP Inspector の UI が表示されますが、最初は接続されていません。
  • 上部の「Server Connection」ペインで、次の操作を行います。
    • 「Transport」ドロップダウンから SSE を選択します。
    • サーバーが実行されている URL を入力します:http://127.0.0.1:8000/sse(ホスト/ポートを変更した場合は、適切な URL を指定します)。
    • 「Connect」 ボタン(プラグのアイコンなど)をクリックします。
  • 接続の確認:UI に接続成功と表示されます。また、uv run main.py を実行しているターミナルに、クライアントが接続したことを示すログメッセージ(GET リクエストなど)が表示されます。
  • ツールのテスト:Inspector の「Tools」タブを開き、Azure ツール(list_resource_groups、list_storage_accounts など)を選択して、引数(subscription_id、auth_type など)を入力し、「Call Tool」をクリックします。結果が出力ペインに表示されます。

方法 B:VS Code(GitHub Copilot Chat エージェントを使用)

VS Code を使用している場合、GitHub Copilot Chat 拡張機能を MCP ホスト/クライアントとして利用できます。

  • uv run main.py を実行したままにします。
  • VS Code を開きます。
  • VS Code の設定(JSON)を開きます:Ctrl+Shift+P(または Cmd+Shift+P)を押し、「Preferences: Open User Settings (JSON)」と入力して選択します。
  • MCP サーバーの設定を追加します:settings.json の mcp.servers セクションを追加または変更します。特に、url と transport を指定してください。
"mcp": {
        "servers": {
                "azure-mcp-server": {
                "url": "http://127.0.0.1:8080/sse", // replace hostname based on the host
                "type": "sse"
            }
        }
    }
  • settings.json を保存します。
  • VS Code を再読み込みします:Ctrl+Shift+P を押し、「Developer: Reload Window」と入力して選択します。
  • Copilot Chat を開きます:チャットビューを開きます(通常はアクティビティバーにアイコンがあります)。
  • 接続を確認します:出力パネルに MCP サーバーの接続に関するメッセージが表示されることがあります(ドロップダウンから「GitHub Copilot Chat」または「MCP」を選択します)。
  • ツールを使用します:Copilot Chat の入力欄に @workspace /tools list と入力し、Azure ツールが一覧に表示されることを確認します。次に、たとえば @workspace /invoke list_resource_groups subscription_id=YOUR_SUB_ID auth_type=default のように入力して、ツールを呼び出してみます。

利用可能な MCP ツール

MCP サーバーは、Azure リソース管理用に次のツールを公開しています。

ツール名入力パラメーター説明戻り値の形式
list_resource_groups• subscription_id(必須)
• auth_type(必須)
サブスクリプション内のすべてのリソースグループを一覧表示します詳細情報を含むリソースグループの JSON 配列
list_storage_accounts• subscription_id(必須)
• auth_type(必須)
サブスクリプション内のすべてのストレージアカウントを一覧表示します構成情報を含むストレージアカウントの JSON 配列
list_storage_account_usage• subscription_id(必須)
• resource_group_name(必須)
• storage_account_name(必須)
• auth_type(必須)
特定のアカウントのストレージ容量の使用状況を取得します使用済み容量(GB/TiB)を含む JSON オブジェクト
list_storage_account_usage_all• subscription_id(必須)
• auth_type(必須)
特定のアカウントのストレージ容量の使用状況を取得します使用済み容量(GB/TiB)を含む JSON オブジェクト
get_vm_detail_by_name• vm_name(必須) •subscription_id(必須)
• auth_type(必須)
サブスクリプションの VM の詳細を取得しますVM の詳細を含む JSON オブジェクト
get_vms_by_team_tag• team_value(必須) •subscription_id(必須)
• auth_type(必須)
タグ値に基づいて、サブスクリプション内のすべての VM の詳細を取得します指定されたタグ値を持つ VM の詳細を含む JSON オブジェクト
trigger_vm_power_status_runbook• vm_name_parameter(必須 - runbook パラメーターに基づきます) • subscription_id(必須)
• auth_type(必須)
•automation_resource_group_name(必須)
• automation_account_name(必須)
•runbook_name(必須)
タグ値に基づいて、サブスクリプション内のすべての VM の詳細を取得します指定されたタグ値を持つ VM の詳細を含む JSON オブジェクト

注:すべてのツールで、auth_type パラメーターは次の値を受け付けます。

  • "default":DefaultAzureCredential を使用します(デフォルト)
  • "spn":サービスプリンシパル認証を使用します
  • "identity":マネージド ID 認証を使用します

認証方法

サーバーは、次の 3 つの認証方法をサポートしています。

  1. Default Azure Credential(デフォルト)

    • Azure Identity ライブラリの DefaultAzureCredential を使用します
    • ローカルでの開発とテストに適しています
  2. サービスプリンシパル(spn)

    • ClientSecretCredential を使用します
    • AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET が必要です
  3. マネージド ID(identity)

    • ManagedIdentityCredential を使用します
    • Azure でホストされるデプロイに適しています
    • AZURE_MANAGED_IDENTITY_CLIENT_ID を任意で指定できます

エラー処理

サーバーは、次のエラーを包括的に処理します。

  • Azure API エラー
  • 認証の失敗
  • 無効なリクエスト
  • リソースが見つからない場合

すべてのエラーはログに記録され、MCP プロトコルに準拠した構造化形式で返されます。

ロギング

サーバーは Python 標準の logging モジュールを使用し、次の機能を提供します。

  • 設定可能なログレベル(デフォルト:INFO)
  • 詳細な操作ログ
  • 認証試行のログ
  • エラーと例外のログ

コントリビューション

  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します
  3. 変更をコミットします
  4. ブランチにプッシュします
  5. プルリクエストを作成します

ライセンス

詳細は LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。