Azure Kusto MCP Server について
Azure Kusto MCP Serverは、AIアシスタントをAzure Kustoに接続し、スキーマの確認やKQLクエリの実行を可能にします。結果分析やクエリ最適化の提案に加え、VS Codeの設定にも対応します。
主な機能
- 01Azure Kustoクラスターへの接続
- 02テーブルとスキーマの確認
- 03KQLクエリの実行
- 04クエリ結果の分析
- 05クエリ最適化の提案
- 06VS Code連携の設定
活用シーン
- 01クエリ作成前のテーブル確認
- 02接続したデータベースでのKQL実行
- 03クエリ結果の要約や統計分析
- 04複雑なクエリの最適化検討
MCP 対応
Azure Kustoのテーブルとスキーマをリソースとして公開し、接続、状態確認、KQLの実行・分析、最適化提案のツールをMCPクライアントに提供します。データ分析向けのプロンプトも備えています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Azure Kusto MCP サーバー
Azure Kusto に接続し、AI アシスタントがデータスキーマを探索して KQL クエリを実行できるようにする、Model Context Protocol(MCP)サーバーです。
特長
- Azure Kusto との連携:Azure Kusto クラスターに安全に接続します
- スキーマの探索:AI アシスタント向けのリソースとしてテーブルスキーマを公開します
- クエリの実行:KQL クエリの実行と結果の分析に使用するツールを提供します
- データ分析の支援:一般的なデータ分析タスク向けの組み込みプロンプトを提供します
- VS Code との連携:VS Code 内で対話形式で接続情報を設定します
必要条件
- Python 3.9+
- Azure Kusto クラスターへのアクセス
- GitHub Copilot または Copilot Chat 拡張機能がインストールされた VS Code(MCP のサポートに必要)
- 必要な Python パッケージ(セットアップスクリプトで自動的にインストールされます)
クイックセットアップ(推奨)
VS Code との連携を含め、MCP サーバーを最も簡単にセットアップする方法です。
python setup-mcp.py
このスクリプトでは、次の処理が行われます。
- 必要な依存関係をすべてインストールします
- VS Code との連携に必要な設定を作成します
- サーバーの起動方法を案内します
手動インストール
- リポジトリをクローンします。
git clone https://github.com/yourusername/kusto-mcp-server.git
cd kusto-mcp-server
- 必要な依存関係をインストールします。
pip install -r requirements.txt
- (任意)環境変数を設定します。
ルートディレクトリに
.envファイルを作成し、次の変数を設定します。
AZURE_KUSTO_CLUSTER=https://<your-cluster>.kusto.windows.net
AZURE_KUSTO_DATABASE=<your-database>
mcp.json 設定ファイルの作成
VS Code で MCP サーバーを設定するには、mcp.json ファイルが必要です。手動でセットアップする場合、またはセットアップスクリプトでこのファイルが作成されなかった場合は、次の手順に従ってください。
- ワークスペースの
.vscodeディレクトリにmcp.jsonという名前の新しいファイルを作成します(このディレクトリがない場合は作成してください)。 - 次の内容をファイルに追加します。
{
"inputs": [
{
"type": "promptString",
"id": "kusto-cluster",
"description": "Azure Kusto Cluster URL (e.g., https://mycluster.kusto.windows.net)",
"default": ""
},
{
"type": "promptString",
"id": "kusto-database",
"description": "Azure Kusto Database Name",
"default": ""
}
],
"servers": {
"Azure Kusto MCP": {
"type": "stdio",
"command": "${command:python.interpreterPath}",
"args": ["${workspaceFolder}/src/kusto_mcp/server.py"],
"env": {
"AZURE_KUSTO_CLUSTER": "${input:kusto-cluster}",
"AZURE_KUSTO_DATABASE": "${input:kusto-database}",
"PYTHONPATH": "${workspaceFolder}"
}
}
}
}
- 必要に応じて設定をカスタマイズします。
- 特定の Python インタープリターのパスを使う必要がある場合は、
commandを変更します - サーバースクリプトが別の場所にある場合は、
argsを変更します - 必要に応じて環境変数を追加します
${workspaceFolder}と${command:python.interpreterPath}は VS Code の変数であり、適切なパスに自動的に置き換えられます
- 特定の Python インタープリターのパスを使う必要がある場合は、
この設定には入力プロンプトが含まれており、サーバーを起動するたびに Kusto クラスターの URL とデータベース名を尋ねます。これにより、異なるデータベースを簡単に切り替えられます。
VS Code との連携
VS Code で MCP サーバーを使用するには、次の手順に従ってください。
- セットアップスクリプトを実行したことを確認します。
python setup-mcp.pyを実行するか、手動でmcp.jsonファイルを作成してください - VS Code に GitHub Copilot または Copilot Chat 拡張機能をインストールします
- コマンドパレットを開きます(Ctrl+Shift+P)
- 「MCP: Start Server with Configuration」を実行します
- リストから「Azure Kusto MCP」を選択します
- プロンプトが表示されたら、Kusto クラスターの URL とデータベース名を入力します
MCP サーバーが起動し、Copilot Chat セッションに接続されます。次の操作が可能になります。
connectツールを使用して Kusto クラスターに接続する- テーブルスキーマを参照する
- クエリを実行する
- データを分析する
VS Code を使わずにサーバーを実行する
次のコマンドで MCP サーバーを直接起動します。
python -m src.kusto_mcp.server
.env ファイルで接続を設定していない場合は、必要に応じてサーバーが接続情報を尋ねます。
認証
このサーバーは認証に Azure の DefaultAzureCredential を使用します。次の方法がサポートされています。
- 環境変数
- マネージド ID
- Azure CLI の資格情報
- Azure PowerShell の資格情報
- フォールバックとしての対話型ブラウザー認証
接続する前に、これらの方法のうち少なくとも 1 つで認証されていることを確認してください。
リソースの種類
サーバーは次のリソースを公開します。
kusto/tables- 現在のデータベースにあるすべてのテーブルの一覧kusto/schema/{table_name}- 特定のテーブルのスキーマkusto/sample- KQL クエリのサンプルと説明kusto/connection- 現在の接続情報
ツール
以下のツールを利用できます。
connect- Kusto クラスターとデータベースに接続しますconnection_status- 現在の接続状態を確認しますexecute_query- KQL クエリを実行しますanalyze_data- クエリを実行し、結果を分析しますoptimize_query- クエリの最適化に関する提案を取得します
ツールの使用ガイド
Kusto MCP サーバーは、Azure Kusto を操作するための複数のツールを提供します。各ツールの効果的な使い方は次のとおりです。
Connect ツール
connect ツールは、Azure Kusto クラスターとデータベースへの接続を確立します。
Copilot Chat での使用方法:
I need to connect to my Kusto cluster
このツールでは、次の情報を求められます。
- クラスターの URL(例:https://yourcluster.kusto.windows.net)
- データベース名
認証は Azure の DefaultAzureCredential によって自動的に処理されます。
例:
Connect to the Kusto database named "MyDatabase" on the cluster "analytics.kusto.windows.net"
Connection Status ツール
connection_status ツールは、現在の接続の詳細を表示します。
Copilot Chat での使用方法:
Check my current Kusto connection
出力例:
✅ Connected to Azure Kusto.
- **Cluster**: https://analytics.kusto.windows.net
- **Database**: MyDatabase
Execute Query ツール
execute_query ツールは、接続中のデータベースに対して KQL クエリを実行します。
Copilot Chat での使用方法:
Run this KQL query: <your query here>
例:
Run this KQL query: StormEvents | where State == "FLORIDA" | take 10
結果が 100 行を超える場合、ツールは概要と最初の 10 行を返します。
Analyze Data ツール
analyze_data ツールは、クエリを実行し、その結果を分析します。
Copilot Chat での使用方法:
Analyze this query: <your query here>
分析の種類を指定できます。
summary(デフォルト):データの基本統計stats:相関関係を含む詳細な統計分析plot_ready:データを視覚化するための情報
例:
Analyze this query with stats analysis: StormEvents | summarize count() by State | top 10 by count_
Optimize Query ツール
optimize_query ツールは、KQL クエリを改善するための提案を提供します。
Copilot Chat での使用方法:
Optimize this KQL query: <your query here>
例:
Optimize this KQL query:
StormEvents
| project *
| where StartTime > ago(7d)
| sort by StartTime desc
高度な使用シナリオ
テーブルスキーマの確認
利用可能なテーブルとそのスキーマを確認するには:
What tables are available in this database?
特定のテーブルのスキーマを調べるには:
Show me the schema for the StormEvents table
時系列分析
時間ベースのデータを分析するには:
Help me analyze time trends in the StormEvents table using the StartTime column
相関分析
列間の関係を調べるには:
Find correlations between DamageProperty and DeathsDirect in the StormEvents table
データ品質チェック
データ品質を確認するには:
Check for null values and outliers in the StormEvents table
段階的なクエリの作成
複雑なクエリについて、手順を尋ねることができます。
I need to build a query that shows storm events by state, with damage amounts, limited to the top 10 most expensive events. Can you help me construct this?
ベストプラクティス
- 必ず最初に接続する:クエリを実行する前に、
connectツールを使用します - 接続を確認する:接続状態が不明な場合は、
connection_statusツールを使用します - 小さなクエリから始める:大規模なデータセットに対して実行する前に、
takeまたはlimit演算子を使ってクエリをテストします - 分析ツールを使う:
analyze_dataツールを使うと、最小限の手間で有用な分析結果を得られます - 最適化を依頼する:実行に時間のかかるクエリや複雑なクエリには、
optimize_queryツールを使用します
KQL クエリの例
まずは次の KQL クエリの例をお試しください。
// Simple filtering
StormEvents
| where State == "FLORIDA"
| take 10
// Aggregation
StormEvents
| summarize EventCount=count() by State
| order by EventCount desc
| take 10
// Time filtering
StormEvents
| where StartTime > ago(30d)
| summarize EventCount=count() by bin(StartTime, 1d)
| render timechart
// Join example
StormEvents
| where EventType == "Tornado"
| join (
StormEvents
| where EventType == "Flood"
| project State, FloodTime=StartTime
) on State
| project State, TornadoTime=StartTime, FloodTime
| take 10
MCP 設定のトラブルシューティング
MCP の設定で問題が発生した場合:
- mcp.json がない:上記の説明に従って、
.vscodeディレクトリにファイルを手動で作成します - 設定が表示されない:
mcp.jsonファイルの形式が正しく、.vscodeディレクトリに配置されていることを確認します - サーバーに接続できない:
mcp.jsonファイルで指定したホスト名とポートが利用可能であることを確認します - Copilot がサーバーを検出しない:
mcp.jsonファイルの作成後または変更後に、VS Code を再起動します
よくある問題のトラブルシューティング
前述の一般的なトラブルシューティングのヒントに加えて、ツールでよく発生する問題への具体的な解決方法を以下に示します。
Connect ツールの問題
- エラー:「Failed to connect」:Azure の資格情報が有効であり、指定したクラスターとデータベースへのアクセス権があることを確認します
- タイムアウトエラー:ネットワーク接続とファイアウォールの設定を確認します
- 認証エラー:
az loginで Azure にログインしているか、有効な環境資格情報が設定されていることを確認します
クエリ実行に関する問題
- 大規模なクエリのタイムアウト:フィルターや時間制約を追加して、データ量を減らしてください
- 構文エラー:
optimize_queryツールを使用して、クエリの構文を確認し、修正してください - 列が見つからない:クエリを実行する前に、スキーマを調べて列名を確認してください
データ分析に関する問題
- 分析結果が空:分析する前に、クエリがデータを返すことを確認してください
- 相関分析のエラー:相関分析には、データに少なくとも2つの数値列が含まれていることを確認してください
- 可視化の準備:
plot_ready分析で最良の結果を得るには、カテゴリ列と数値列の両方を含めてください
AI アシスタントでの使用
この MCP サーバーは、Model Context Protocol に対応する AI アシスタントと連携するように設計されています。サーバーは Azure Kusto データへの構造化されたアクセスを提供し、AI アシスタントは次のことを行えます。
- 利用可能なテーブルとスキーマを確認する
- 読み取り専用の KQL クエリを実行する
- クエリ結果を分析する
- データ分析に関するガイダンスを提供する
セキュリティに関する考慮事項
- サーバーは安全な認証に Azure の DefaultAzureCredential を使用します
- 適切な権限を持つユーザーのみが Kusto クラスターにアクセスできます
- 資格情報がサーバー自体に保存されることはありません
ライセンス
MIT ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
