关于 Natural Language to Kusto Query MCP Server
该 MCP 服务将自然语言转换为 Kusto 查询,并可执行查询,适合需要用自然语言检索 Kusto 数据库的用户。通过 settings.yaml 配置模型、表和多个数据库,并支持 JSON 或 CSV 结果。
主要功能
- 01根据自然语言生成 Kusto 查询
- 02生成并执行查询
- 03配置多个数据库和数据表
- 04以 JSON 或 CSV 返回结果
适用场景
- 01用自然语言查询 Kusto 数据库
- 02查看配置中支持的数据表
- 03将查询结果导出为 CSV
MCP 相关
该服务向 MCP 客户端提供列出支持的数据表、生成 Kusto 查询及执行查询的工具。执行结果可按配置以 JSON 或 CSV 返回。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
自然语言转 Kusto 查询 MCP 服务
一个可配置的 MCP 服务,可将自然语言转换为 Kusto 查询,并在 Kusto 数据库中执行查询。
功能
- 完全可配置:提供
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' 或 '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 凭据代表用户执行操作。目前,此回退方式仅在使用
dotnet run而非docker 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 凭据代表用户执行操作。目前,此回退方式仅在使用
dotnet run而非docker 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
说明
- 确保
endpointURL 正确且可访问。身份验证使用当前在 Windows 中登录的用户。你可能需要运行az login,或确保已登录 VSCode/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
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。