这是一个连接到 Azure Kusto 的模型上下文协议(MCP)服务器,使AI助手能够探索数据模式并执行KQL查询。
使用VS Code集成设置MCP服务器最简单的方法:
python setup-mcp.py
此脚本将:
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 文件是配置MCP服务器与VS Code集成所必需的。如果你手动设置或设置脚本没有创建这个文件,请按照以下步骤操作:
.vscode目录下创建一个名为mcp.json的新文件(如果该目录不存在,请创建它){
"inputs": [
{
"type": "promptString",
"id": "kusto-cluster",
"description": "Azure Kusto 集群URL(例如,https://mycluster.kusto.windows.net)",
"default": ""
},
{
"type": "promptString",
"id": "kusto-database",
"description": "Azure Kusto 数据库名称",
"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}"
}
}
}
}
commandargs${workspaceFolder}和${command:python.interpreterPath}是VS Code变量,会被自动替换为相应的路径此配置包括每次启动服务器时都会询问的输入提示,使得切换不同的数据库变得容易。
要在VS Code中使用MCP服务器:
python setup-mcp.py 或者手动创建了mcp.json文件MCP服务器将启动并与你的Copilot Chat会话连接,允许你:
connect工具连接到Kusto集群直接启动MCP服务器:
python -m src.kusto_mcp.server
如果你还没有在.env文件中配置连接,服务器将在需要时提示你输入连接详情。
此服务器使用Azure的DefaultAzureCredential进行认证,支持:
确保你在连接前至少使用其中一种方法进行认证。
服务器公开以下资源:
kusto/tables - 当前数据库中的所有表列表kusto/schema/{table_name} - 特定表的模式kusto/sample - 示例KQL查询及其解释kusto/connection - 当前连接信息提供以下工具:
connect - 连接到Azure Kusto集群和数据库connection_status - 检查当前连接状态execute_query - 运行KQL查询analyze_data - 执行查询并分析结果optimize_query - 获取查询优化建议Kusto MCP服务器提供了多个工具来与Azure Kusto交互。以下是每个工具的有效使用方法:
connect工具建立到Azure Kusto集群和数据库的连接。
在Copilot Chat中的用法:
我需要连接到我的Kusto集群
此工具将提示你输入:
认证通过Azure的DefaultAzureCredential自动处理。
示例:
连接到名为"MyDatabase"的Kusto数据库,在集群"analytics.kusto.windows.net"上
connection_status工具显示当前连接详情。
在Copilot Chat中的用法:
检查我当前的Kusto连接
示例输出:
✅ 已连接到Azure Kusto。
- **集群**:https://analytics.kusto.windows.net
- **数据库**:MyDatabase
execute_query工具针对已连接的数据库运行KQL查询。
在Copilot Chat中的用法:
运行这个KQL查询:<你的查询在这里>
示例:
运行这个KQL查询:StormEvents | where State == "FLORIDA" | take 10
对于大型结果集(>100行),工具将返回摘要和前10行。
analyze_data工具执行查询并对结果进行分析。
在Copilot Chat中的用法:
分析这个查询:<你的查询在这里>
你可以指定分析类型:
summary(默认):关于数据的基本统计stats:详细的统计分析,包括相关性plot_ready:帮助可视化数据的信息示例:
使用stats分析类型分析这个查询:StormEvents | summarize count() by State | top 10 by count_
optimize_query工具提供改进KQL查询的建议。
在Copilot Chat中的用法:
优化这个KQL查询:<你的查询在这里>
示例:
优化这个KQL查询:
StormEvents
| project *
| where StartTime > ago(7d)
| sort by StartTime desc
要探索可用的表及其模式:
这个数据库中有哪些表?
要查看特定表的模式:
展示StormEvents表的模式
对于基于时间的数据分析:
帮我分析StormEvents表中StartTime列的时间趋势
查找列之间的关系:
在StormEvents表中查找DamageProperty和DeathsDirect之间的相关性
验证数据质量:
检查StormEvents表中的空值和异常值
对于复杂的查询,你可以请求指导:
我需要构建一个按州显示风暴事件的查询,包含损害金额,并限制为最昂贵的前10个事件。你能帮我构建吗?
connect工具connection_status工具take或limit操作符测试查询,然后再在大数据集上运行analyze_data工具可以轻松提供有价值的见解optimize_query工具这里有一些KQL查询示例,帮助你入门:
// 简单过滤
StormEvents
| where State == "FLORIDA"
| take 10
// 聚合
StormEvents
| summarize EventCount=count() by State
| order by EventCount desc
| take 10
// 时间过滤
StormEvents
| where StartTime > ago(30d)
| summarize EventCount=count() by bin(StartTime, 1d)
| render timechart
// 联接示例
StormEvents
| where EventType == "Tornado"
| join (
StormEvents
| where EventType == "Flood"
| project State, FloodTime=StartTime
) on State
| project State, TornadoTime=StartTime, FloodTime
| take 10
如果你遇到MCP配置问题:
.vscode目录下手动创建文件mcp.json文件格式正确且位于.vscode目录下mcp.json文件中指定的主机名和端口是否可用mcp.json文件后重启VS Code除了前面提到的一般故障排除技巧外,这里还有一些特定工具问题的具体解决方案:
az login登录Azure或具有有效的环境凭据optimize_query工具检查并修复查询语法plot_ready分析,包括分类和数值列以获得最佳效果此MCP服务器旨在与支持模型上下文协议的AI助手一起使用。服务器提供了对Azure Kusto数据的结构化访问,使AI助手能够:
MIT许可