mcpField
N
Natural Language to Kusto Query MCP Server

Natural Language to Kusto Query MCP Server

ローカル
github.com/alexneylerデータベース352 週間前に更新

Natural Language to Kusto Query MCP Server について

自然言語から Kusto クエリを生成し、実行もできる設定可能な MCP サーバーです。Kusto データベースを検索するユーザー向けで、複数データベースの設定と JSON または CSV の結果出力に対応します。

主な機能

  1. 01自然言語から Kusto クエリを生成
  2. 02クエリの生成と実行
  3. 03複数データベースとテーブルの設定
  4. 04JSON または CSV で結果を出力

活用シーン

  1. 01自然言語で Kusto データベースを検索
  2. 02設定済みの対応テーブルを確認
  3. 03クエリ結果を CSV で出力

MCP 対応

MCP クライアントに、対応テーブルの一覧、Kusto クエリの生成、クエリの実行を行うツールを提供します。実行結果は JSON または CSV で返せます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"kusto": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"AZURE_OPENAI_KEY",
"-e",
"KUSTO_ACCESS_TOKEN",
"alexeyler/kusto-mcp-server"
],
"env": {
"AZURE_OPENAI_KEY": "<AZURE_OPENAI_KEY>",
"KUSTO_ACCESS_TOKEN": "<KUSTO_ACCESS_TOKEN>"
}
}
}
}
起動コマンドdocker run -i --rm -e AZURE_OPENAI_KEY -e KUSTO_ACCESS_TOKEN alexeyler/kusto-mcp-server
設定が必要な環境変数
AZURE_OPENAI_KEYシークレット
KUSTO_ACCESS_TOKENシークレット

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

パッケージ
ocialexeyler/kusto-mcp-server

ツール

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

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

詳細

自然言語から 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 クエリや説明を含めることができます。
設定例

以下は、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

コメント

MCP は初めてですか?

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

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