mcpField
A
Azure Data Explorer MCP Server

Azure Data Explorer MCP Server

ローカル
github.com/pab1it0データ・分析5931 週間前に更新

Azure Data Explorer MCP Server について

Azure Data Explorer MCP Server は、AI アシスタントが KQL クエリを実行し、Azure Data Explorer(ADX)データベースや Microsoft Fabric の Eventhouse クラスターを探索できるようにする MCP サーバーです。Azure 上のデータを AI アシスタントから扱いたい利用者を対象とし、公開するツールを構成できます。

主な機能

  1. 01KQL クエリの実行と JSON 形式の結果取得
  2. 02テーブル一覧、スキーマ、サンプルデータの参照
  3. 03DefaultAzureCredential とワークロード ID による認証
  4. 04stdio、HTTP、SSE のトランスポート対応

活用シーン

  1. 01AI アシスタントによる Azure Data Explorer データの照会
  2. 02データベースのテーブル構造とサンプル行の確認
  3. 03Claude Desktop から Docker 上の ADX サーバーを利用

MCP 対応

このサーバーは execute_query、list_tables、get_table_schema、sample_table_data、get_table_details などのツールを MCP クライアントに公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"adx": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

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

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

詳細

Azure Data Explorer MCP サーバー

README の画像

CI codecov License: MIT Python 3.12

Model Context Protocol(MCP)サーバーは、AI アシスタントが標準化されたインターフェースを通じて KQL クエリを実行し、Azure Data Explorer(ADX/Kusto)データベースを探索できるようにします。

このサーバーは、Azure Data Explorer および Eventhouse(Microsoft Fabric 内)のクラスターへのシームレスなアクセスを提供し、AI アシスタントが強力な Kusto Query Language を使用してデータをクエリおよび分析できるようにします。

機能

クエリの実行
  • KQL クエリの実行 - ADX データベースに対して任意の KQL クエリを実行します
  • 構造化された結果 - 使いやすい JSON 形式で結果を取得します
データベースの検出
  • テーブルの一覧表示 - データベース内のすべてのテーブルを検出します
  • スキーマの表示 - テーブルのスキーマと列の型を調べます
  • サンプルデータ - サンプル件数を設定してテーブルの内容をプレビューします
  • テーブル統計 - 行数やストレージサイズなど、詳細なメタデータを取得します
認証
  • DefaultAzureCredential - Azure CLI、Managed Identity などをサポートします
  • Workload Identity - AKS ワークロード ID をネイティブにサポートします
  • 柔軟な認証情報 - 複数の Azure 認証方式に対応します
デプロイ方法
  • 複数のトランスポート - stdio(デフォルト)、HTTP、Server-Sent Events(SSE)
  • Docker のサポート - セキュリティのベストプラクティスに従った、本番環境対応のコンテナーイメージ
  • Dev Container - GitHub Codespaces によるシームレスな開発環境

ツールの一覧は設定可能なため、MCP クライアントで利用できるようにするツールを選択できます。一部の機能を使用しない場合や、コンテキストウィンドウを使いすぎたくない場合に便利です。

使い方

  1. Azure CLI を使用して、ADX クラスターへのアクセス許可を持つ Azure アカウントにログインします。

  2. .env ファイルまたはシステム環境変数を使用して、ADX クラスターの環境変数を設定します。

# Required: Azure Data Explorer configuration
ADX_CLUSTER_URL=https://yourcluster.region.kusto.windows.net
ADX_DATABASE=your_database

# Optional: Azure Workload Identity credentials 
# AZURE_TENANT_ID=your-tenant-id
# AZURE_CLIENT_ID=your-client-id 
# ADX_TOKEN_FILE_PATH=/var/run/secrets/azure/tokens/azure-identity-token

# Optional: Custom MCP Server configuration
ADX_MCP_SERVER_TRANSPORT=stdio # Choose between http/sse/stdio, default = stdio

# Optional: Only relevant for non-stdio transports
ADX_MCP_BIND_HOST=127.0.0.1 # default = 127.0.0.1
ADX_MCP_BIND_PORT=8080 # default = 8080
Azure Workload Identity のサポート

このサーバーは、ワークロード ID が設定された Azure Kubernetes Service(AKS)環境で実行する場合、WorkloadIdentityCredential をデフォルトで使用するようになりました。必要な環境変数が設定されている場合は、WorkloadIdentityCredential の使用が優先されます。

Azure Workload Identity を使用する AKS では、次の設定だけで十分です。

  1. ポッドに AZURE_TENANT_ID および AZURE_CLIENT_ID 環境変数が設定されていることを確認します
  2. トークンファイルがデフォルトのパスにマウントされていることを確認するか、ADX_TOKEN_FILE_PATH でカスタムパスを指定します

これらの環境変数が設定されていない場合、サーバーは複数の認証方式を順番に試す DefaultAzureCredential に自動的にフォールバックします。

  1. サーバーの設定をクライアント設定ファイルに追加します。たとえば、Claude Desktop の場合は次のようにします。
{
  "mcpServers": {
    "adx": {
      "command": "uv",
      "args": [
        "--directory",
        "<full path to adx-mcp-server directory>",
        "run",
        "src/adx_mcp_server/main.py"
      ],
      "env": {
        "ADX_CLUSTER_URL": "https://yourcluster.region.kusto.windows.net",
        "ADX_DATABASE": "your_database"
      }
    }
  }
}

注:Claude Desktop で Error: spawn uv ENOENT が表示される場合は、uv のフルパスを指定するか、設定で環境変数 NO_UV=1 を設定する必要があります。

Docker の使用

このプロジェクトは、デプロイと分離を簡単にするために Docker をサポートしています。

Docker イメージのビルド

次のコマンドを使用して Docker イメージをビルドします。

docker build -t adx-mcp-server .
Docker での実行

Docker を使用して、いくつかの方法でサーバーを実行できます。

docker run を直接使用する場合:
docker run -it --rm \
  -e ADX_CLUSTER_URL=https://yourcluster.region.kusto.windows.net \
  -e ADX_DATABASE=your_database \
  -e AZURE_TENANT_ID=your_tenant_id \
  -e AZURE_CLIENT_ID=your_client_id \
  adx-mcp-server
docker-compose を使用する場合:

Azure Data Explorer の認証情報を含む .env ファイルを作成してから、次のコマンドを実行します。

docker-compose up
Claude Desktop で Docker を使って実行する

コンテナ化されたサーバーを Claude Desktop で使用するには、環境変数を指定して Docker を使うように設定を更新します。

{
  "mcpServers": {
    "adx": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e", "ADX_CLUSTER_URL",
        "-e", "ADX_DATABASE",
        "-e", "AZURE_TENANT_ID",
        "-e", "AZURE_CLIENT_ID",
        "-e", "ADX_TOKEN_FILE_PATH",
        "adx-mcp-server"
      ],
      "env": {
        "ADX_CLUSTER_URL": "https://yourcluster.region.kusto.windows.net",
        "ADX_DATABASE": "your_database",
        "AZURE_TENANT_ID": "your_tenant_id",
        "AZURE_CLIENT_ID": "your_client_id",
        "ADX_TOKEN_FILE_PATH": "/var/run/secrets/azure/tokens/azure-identity-token"
      }
    }
  }
}

この設定では、変数名だけを指定した -e フラグを使い、実際の値を env オブジェクトに指定することで、Claude Desktop から Docker コンテナに環境変数を渡します。

HTTP トランスポートで Docker を使う

HTTP モードでデプロイする場合は、次の Docker 設定を使用できます。

{
  "mcpServers": {
    "adx": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-p", "8080:8080",
        "-e", "ADX_CLUSTER_URL",
        "-e", "ADX_DATABASE", 
        "-e", "ADX_MCP_SERVER_TRANSPORT",
        "-e", "ADX_MCP_BIND_HOST",
        "-e", "ADX_MCP_BIND_PORT",
        "adx-mcp-server"
      ],
      "env": {
        "ADX_CLUSTER_URL": "https://yourcluster.region.kusto.windows.net",
        "ADX_DATABASE": "your_database",
        "ADX_MCP_SERVER_TRANSPORT": "http",
        "ADX_MCP_BIND_HOST": "0.0.0.0",
        "ADX_MCP_BIND_PORT": "8080"
      }
    }
  }
}

Dev Container/GitHub Codespace として使う

このリポジトリは、シームレスな開発体験を実現する開発コンテナとしても使用できます。Dev Container の設定は devcontainer-feature/adx-mcp-server フォルダーにあります。

詳しくは、Dev Container の README をご覧ください。

開発

コントリビューションを歓迎します!ご提案や改善点がある場合は、イシューを作成するか、プルリクエストを送信してください。

このプロジェクトでは、依存関係の管理に uv を使用しています。お使いのプラットフォーム向けの手順に従って uv をインストールしてください。

curl -LsSf https://astral.sh/uv/install.sh | sh

その後、次のコマンドで仮想環境を作成し、依存関係をインストールできます。

uv venv
source .venv/bin/activate  # On Unix/macOS
.venv\Scripts\activate     # On Windows
uv pip install -e .

プロジェクト構成

このプロジェクトは src ディレクトリー構成で整理されています。

adx-mcp-server/
├── src/
│   └── adx_mcp_server/
│       ├── __init__.py      # Package initialization
│       ├── server.py        # MCP server implementation
│       ├── main.py          # Main application logic
├── Dockerfile               # Docker configuration
├── docker-compose.yml       # Docker Compose configuration
├── .dockerignore            # Docker ignore file
├── pyproject.toml           # Project configuration
└── README.md                # This file
テスト

このプロジェクトには、機能を確認し、リグレッションの防止に役立つ包括的なテストスイートが含まれています。

pytest でテストを実行します。

# Install development dependencies
uv pip install -e ".[dev]"

# Run the tests
pytest

# Run with coverage report
pytest --cov=src --cov-report=term-missing

テストは次のように分類されています。

  • 設定の検証テスト
  • サーバー機能テスト
  • エラー処理テスト
  • メインアプリケーションのテスト

新しい機能を追加する際は、対応するテストも追加してください。

利用可能なツール

ツールカテゴリー説明パラメーター
execute_queryクエリーAzure Data Explorer に対して KQL クエリーを実行しますquery(string)- 実行する KQL クエリー
list_tables検出設定されたデータベース内のすべてのテーブルを一覧表示しますなし
get_table_schema検出特定のテーブルのスキーマを取得しますtable_name(string)- テーブル名
sample_table_data検出テーブルのサンプルデータを取得しますtable_name(string)、sample_size(int、既定値:10)
get_table_details検出テーブルの統計情報とメタデータを取得しますtable_name(string)- テーブル名

設定

必須の環境変数
変数説明例
ADX_CLUSTER_URLAzure Data Explorer クラスターの URLhttps://yourcluster.region.kusto.windows.net
ADX_DATABASE接続先のデータベース名your_database
任意の環境変数
Azure Workload Identity(AKS 用)
変数説明既定値
AZURE_TENANT_IDAzure AD テナント ID-
AZURE_CLIENT_IDAzure AD クライアント/アプリケーション ID-
ADX_TOKEN_FILE_PATHWorkload Identity トークンファイルのパス/var/run/secrets/azure/tokens/azure-identity-token
MCP サーバーの設定
変数説明既定値
ADX_MCP_SERVER_TRANSPORTトランスポートモード:stdio、http、または ssestdio
ADX_MCP_BIND_HOSTバインドするホスト(HTTP/SSE のみ)127.0.0.1
ADX_MCP_BIND_PORTバインドするポート(HTTP/SSE のみ)8080
ロギング
変数説明既定値
LOG_LEVELログレベル:DEBUG、INFO、WARNING、ERRORINFO

ライセンス

MIT


コメント

MCP は初めてですか?

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

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