用途
adx-mcp-server 是一个 Model Context Protocol (MCP) 服务器,用于让 AI 助手通过标准化接口对 Azure Data Explorer(ADX/Kusto)数据库执行 KQL 查询并探索数据。该服务器可访问 Azure Data Explorer 以及 Microsoft Fabric 中的 Eventhouse 集群。
主要能力
查询执行
- 执行 KQL 查询:对 ADX 数据库运行任意 KQL 查询
- 结构化结果:结果以 JSON 格式返回,便于消费
数据库发现
- 列出表:发现数据库中的所有表
- 查看架构:检查表架构和列类型
- 示例数据:以可配置的样本大小预览表内容
- 表统计信息:获取包括行数和存储大小在内的详细元数据
身份验证
- DefaultAzureCredential:支持 Azure CLI、托管标识等
- 工作负载标识(Workload Identity):原生支持 AKS 工作负载标识
- 灵活的凭据:兼容多种 Azure 身份验证方法
部署选项
- 多种传输方式:stdio(默认)、HTTP 和 Server-Sent Events (SSE)
- Docker 支持:生产就绪的容器镜像,遵循安全最佳实践
- Dev Container:通过 GitHub Codespaces 提供无缝开发体验
工具列表可配置,你可以选择向 MCP 客户端公开哪些工具。
使用方式
- 使用 Azure CLI 登录具有 ADX 集群权限的 Azure 账户。
- 通过 .env 文件或系统环境变量配置 ADX 集群的环境变量。
- 将服务器配置添加到客户端配置文件(例如 Claude Desktop)。
在 AKS 环境中配置了工作负载标识时,服务器默认使用 WorkloadIdentityCredential。对于使用 Azure Workload Identity 的 AKS,只需:
- 确保 Pod 设置了 AZURE_TENANT_ID 和 AZURE_CLIENT_ID 环境变量
- 确保令牌文件挂载在默认路径,或通过 ADX_TOKEN_FILE_PATH 指定自定义路径
如果这些环境变量不存在,服务器将自动回退到 DefaultAzureCredential。
Docker
构建 Docker 镜像并运行。创建包含 ADX 凭据的 .env 文件后运行。
在 Claude Desktop 中使用容器化服务器时,更新配置以使用 Docker 和环境变量。
对于 HTTP 模式部署,可使用相应的 Docker 配置。
Dev Container / GitHub Codespace
该仓库也可用作开发容器。Dev Container 配置位于 devcontainer-feature/adx-mcp-server 文件夹中。
开发与测试
项目使用 uv 管理依赖。可创建虚拟环境并安装依赖。项目采用 src 目录结构,包含全面的测试套件,使用 pytest 运行测试。测试分为:配置验证测试、服务器功能测试、错误处理测试、主应用程序测试。
其他说明
可用工具、必需环境变量和可选环境变量在仓库中有详细说明。欢迎贡献,可通过 issue 或 pull request 提交建议或改进。