Natural Language to Kusto Query MCP Server について
自然言語から Kusto クエリを生成し、実行もできる設定可能な MCP サーバーです。Kusto データベースを検索するユーザー向けで、複数データベースの設定と JSON または CSV の結果出力に対応します。
主な機能
- 01自然言語から Kusto クエリを生成
- 02クエリの生成と実行
- 03複数データベースとテーブルの設定
- 04JSON または CSV で結果を出力
活用シーン
- 01自然言語で Kusto データベースを検索
- 02設定済みの対応テーブルを確認
- 03クエリ結果を CSV で出力
MCP 対応
MCP クライアントに、対応テーブルの一覧、Kusto クエリの生成、クエリの実行を行うツールを提供します。実行結果は JSON または CSV で返せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
自然言語から Kusto クエリを生成する MCP サーバー
自然言語を Kusto クエリに変換し、Kusto データベースに対してクエリを実行できる、設定可能な MCP サーバーです。
特徴
- 柔軟な設定:
settings.yamlファイルを指定すると、あらゆるデータベースに対するクエリ生成に必要なデータを Kusto クエリジェネレーターに渡せます - 生成:指定された自然言語のプロンプトに基づいて Kusto クエリを返します
- 実行:指定された自然言語のプロンプトに基づいてクエリを生成し、実行します。結果は JSON または CSV ファイルとして出力します
- 複数のデータベース:
settings.yamlで複数のデータベースを設定できます
ツール
- list-supported-tables
settings.yamlファイルで指定された、サポート対象のテーブルを一覧表示します
- generate-kusto-query
- 指定されたプロンプトに基づき、指定されたテーブルに対する Kusto クエリを生成します
- 入力:
parameters:次のパラメーターを含むオブジェクトです:table(string):settings.yamlファイルで設定されたテーブル名category(string):settings.yamlファイルで設定されたテーブルのカテゴリprompt(string):指定されたデータベースに対して実行する自然言語のプロンプト
- execute-kusto-query
- 指定されたプロンプトに基づき、指定されたテーブルに対する Kusto クエリを生成します
- 入力:
parameters:次のパラメーターを含むオブジェクトです:table(string):settings.yamlファイルで設定されたテーブル名category(string):settings.yamlファイルで設定されたテーブルのカテゴリprompt(string):指定されたデータベースに対して実行する自然言語のプロンプトoutputType('Json' or 'CSV'):レスポンスの出力形式
設定
このプロジェクトは Kusto データベースとの連携を目的として設計されており、クエリの実行とリソース管理のためのツールを提供します。settings.yaml ファイルを使ってプロジェクトを設定する手順は以下のとおりです。
設定ファイル:settings.yaml
MCP サーバーには --settings 引数を渡します。この引数には、次の形式で設定した yaml ファイルを指定します:
環境変数の参照
settings.yaml ファイルでは、${{ENVIRONMENT_VARIABLE_NAME}} 構文を使用して環境変数への参照を設定できます。
モデルの設定
model:
endpoint: <Azure OpenAI Endpoint>
deployment: <Deployment Name>
key: <Azure Open AI key>
- endpoint:Azure OpenAI エンドポイント URL。
- deployment:使用するデプロイメントの名前。
- key(任意):指定された Azure OpenAI エンドポイント用のオプションのキーです。キーが指定されていない場合、ツールはユーザーに代わって実行するために、既定の Azure 資格情報の使用を試みます。このフォールバックが現在機能するのは、
docker runではなくdotnet runを使用してサーバーを実行し、かつ vs code 内で実行する場合に限られます。
Kusto の設定
kusto:
- name: <Table Name>
category: <Category>
database: <Database Name>
table: <Table Name>
endpoint: <Kusto Endpoint>
accessToken: <Access Token>
prompts:
- type: <Prompt Type>
content: |
<Prompt Content>
- name:Kusto テーブルの名前。
- category:Kusto テーブルのカテゴリ(例:
managedlabs)。 - database:Kusto データベースの名前。
- table:Kusto データベース内のテーブル名。
- endpoint:Kusto エンドポイント URL。
- accessToken(任意):指定された Kusto データベースへの接続に使用できる、オプションのユーザーアクセストークンです。アクセストークンが指定されていない場合、ツールはユーザーに代わって実行するために、既定の Azure 資格情報の使用を試みます。このフォールバックが現在機能するのは、
docker runではなくdotnet runを使用してサーバーを実行し、かつ vs code 内で実行する場合に限られます。Kusto データベース用のアクセストークンを生成するには、次のコマンドを実行します:az login az account get-access-token --resource "your-kusto-database-url" --query "accessToken" - prompts:Kusto データベースへのクエリに使用するプロンプトのリストです。
- type:プロンプトの種類(例:
system、user、assistant)。 - content:プロンプトの内容です。KQL クエリや説明を含めることができます。
- type:プロンプトの種類(例:
設定例
以下は、settings.yaml ファイルの設定例です:
model:
endpoint: https://my-oai-resource.openai.azure.com
deployment: my-deployment
key: ${{ AZURE_OPENAI_KEY }}
kusto:
- name: mytable
category: mycategory
database: mydatabase
table: table
endpoint: https://table.kusto.windows.net
accessToken: ${{ MYTABLE_KUSTO_ACCESS_TOKEN }}
prompts:
- type: system
content: |
The table contains the following columns:
* Id: id of the resource
* Name: name of the resource
* CreationTime: timestamp when the resource was created
* LastModified: timestamp when the resource was last modified
* Owner: owner of the resource
- type: user
content: When was the resource 'my resource' created in mycategory/mytable?
- type: assistant
content: |
table
| where name == 'my resource'
| project CreationTime
- type: user
content: How many resources were created after April 1st, 2025?
- type: assistant
content: |
table
| where CreationTime > datetime(2025-04-01)
| summarize count()
- type: user
content: Which owner owns the most resources in mycategory/mytable?
- type: assistant
content: |
table
| summarize Resources=count() by Owner
| order by Resources desc
| take 1
| project Owner
メモ
endpointの URL が正しく、アクセス可能であることを確認してください。認証には、現在 Windows にログインしているユーザーが使用されます。認証できるように、az loginを実行するか、VS Code/VS にログインしていることを確認してください。- 必要に応じて、関連するクエリや説明を
promptsセクションに追加してください。詳しく記述するほど、よりよい結果が得られます。 - 例の設定をテンプレートとして使用し、独自の
settings.yamlファイルを設定してください。
VS Code での使用
.vscode/mcp.json に以下を追加してください:
{
"inputs": [
{
"type": "promptString",
"id": "azure-open-ai-key",
"description": "Enter your Azure OpenAI key",
"password": true
},
{
"type": "promptString",
"id": "kusto-token",
"description": "Enter your Kusto token",
"password": true
}
],
"kusto": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/path/to/settings.yaml:/app/settings.yaml", // Enter path to settings.yaml file. Can use vscode variables
// Include environment variables that are references in settings.yaml file
"-e",
"AZURE_OPENAI_KEY",
"-e",
"KUSTO_ACCESS_TOKEN",
"alexeyler/kusto-mcp-server",
],
"env": {
"AZURE_OPENAI_KEY": "${input:azure-open-ai-key}",
"KUSTO_ACCESS_TOKEN": "${input:kusto-token}",
}
}
}
ビルド
リポジトリのルートから実行します:
docker build ./src/Server/Dockerfile src
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。