小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
27
最近更新:5天前

一个模型上下文协议 (MCP) 服务器,使 AI 助手能够通过标准化接口查询和分析 Azure Data Explorer 数据库。

Azure Data Explorer MCP 服务器

这是一个用于 Microsoft Fabric 中的 Azure Data Explorer/Eventhouse 的 Model Context Protocol (MCP) 服务器。

它通过标准化的 MCP 接口提供对您的 Azure Data Explorer/Eventhouse 集群和数据库的访问,允许 AI 助手执行 KQL 查询并探索您的数据。

特性

  • 对 Azure Data Explorer 执行 KQL 查询

  • 发现和探索数据库资源

    • 列出配置数据库中的表
    • 查看表结构
    • 从表中采样数据
    • 获取表统计信息/详细信息
  • 身份验证支持

    • 令牌凭据支持(Azure CLI、MSI 等)
  • Docker 容器化支持

  • 为 AI 助手提供交互式工具

工具列表是可配置的,因此您可以选择要向 MCP 客户端提供的工具。
如果您不使用某些功能或不想占用太多上下文窗口,这将非常有用。

使用方法

  1. 使用 Azure CLI 登录到具有 ADX 集群权限的 Azure 帐户。

  2. 通过 .env 文件或系统环境变量配置 ADX 集群的环境变量:

env 复制代码
# 必需:Azure Data Explorer 配置
ADX_CLUSTER_URL=https://yourcluster.region.kusto.windows.net
ADX_DATABASE=your_database
  1. 将服务器配置添加到客户端配置文件中。例如,对于 Claude Desktop:
json 复制代码
{
  "mcpServers": {
    "adx": {
      "command": "uv",
      "args": [
        "--directory",
        "<adx-mcp-server 目录的完整路径>",
        "run",
        "src/adx_mcp_server/main.py"
      ],
      "env": {
        "ADX_CLUSTER_URL": "https://yourcluster.region.kusto.windows.net",
        "ADX_DATABASE": "your_database"
      }
    }
  }
}

注意:如果在 Claude Desktop 中看到 Error: spawn uv ENOENT,您可能需要指定 uv 的完整路径或在配置中设置环境变量 NO_UV=1

Docker 使用

此项目包含 Docker 支持,以便于部署和隔离。

构建 Docker 镜像

使用以下命令构建 Docker 镜像:

bash 复制代码
docker build -t adx-mcp-server .

使用 Docker 运行

您可以使用 Docker 以多种方式运行服务器:

直接使用 docker run:

bash 复制代码
docker run -it --rm \
  -e ADX_CLUSTER_URL=https://yourcluster.region.kusto.windows.net \
  -e ADX_DATABASE=your_database \
  adx-mcp-server

使用 docker-compose:

创建一个包含 Azure Data Explorer 凭据的 .env 文件,然后运行:

bash 复制代码
docker-compose up

在 Claude Desktop 中使用 Docker

要使用容器化的服务器与 Claude Desktop,请更新配置以使用带有环境变量的 Docker:

json 复制代码
{
  "mcpServers": {
    "adx": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e", "ADX_CLUSTER_URL",
        "-e", "ADX_DATABASE",
        "adx-mcp-server"
      ],
      "env": {
        "ADX_CLUSTER_URL": "https://yourcluster.region.kusto.windows.net",
        "ADX_DATABASE": "your_database"
      }
    }
  }
}

此配置通过仅使用变量名的 -e 标志并将实际值放在 env 对象中,将环境变量从 Claude Desktop 传递给 Docker 容器。

作为开发容器 / GitHub Codespace 使用

此存储库也可以用作开发容器,以获得无缝的开发体验。开发容器设置位于 devcontainer-feature/adx-mcp-server 文件夹中。

有关更多详细信息,请参阅 devcontainer README

开发

欢迎贡献!如果您有任何建议或改进,请打开问题或提交拉取请求。

该项目使用 uv 来管理依赖项。按照您平台的说明安装 uv

bash 复制代码
curl -LsSf https://astral.sh/uv/install.sh | sh

然后,您可以创建虚拟环境并安装依赖项:

bash 复制代码
uv venv
source .venv/bin/activate  # 在 Unix/macOS 上
.venv\Scripts\activate     # 在 Windows 上
uv pip install -e .

项目结构

项目采用 src 目录结构进行组织:

复制代码
adx-mcp-server/
├── src/
│   └── adx_mcp_server/
│       ├── __init__.py      # 包初始化
│       ├── server.py        # MCP 服务器实现
│       ├── main.py          # 主应用程序逻辑
├── Dockerfile               # Docker 配置
├── docker-compose.yml       # Docker Compose 配置
├── .dockerignore            # Docker 忽略文件
├── pyproject.toml           # 项目配置
└── README.md                # 本文档

测试

该项目包括一个全面的测试套件,确保功能并防止回归。

使用 pytest 运行测试:

bash 复制代码
# 安装开发依赖项
uv pip install -e ".[dev]"

# 运行测试
pytest

# 运行带有覆盖率报告的测试
pytest --cov=src --cov-report=term-missing

测试分为:

  • 配置验证测试
  • 服务器功能测试
  • 错误处理测试
  • 主应用程序测试

当添加新功能时,请同时添加相应的测试。

工具

工具 类别 描述
execute_query 查询 对 Azure Data Explorer 执行 KQL 查询
list_tables 发现 列出配置数据库中的所有表
get_table_schema 发现 获取特定表的结构
sample_table_data 发现 从表中获取样本数据(可选样本大小)

许可证

MIT