项目简介 Altinity ClickHouse MCP服务器是一个功能强大的后端服务,专为集成ClickHouse数据库与大型语言模型(LLM)应用而设计。它实现了Model Context Protocol (MCP),允许LLM客户端以标准化的方式访问ClickHouse数据、执行SQL操作,并通过动态工具和资源管理简化数据交互。

主要功能点

  • 多协议支持: 支持STDIO、HTTP和Server-Sent Events (SSE) 等多种传输协议,灵活适应不同的部署和集成场景。
  • 安全认证: 提供可选的JWE (JSON Web Encryption) 认证机制和TLS加密支持,确保数据库访问和数据传输的安全性。
  • 丰富的数据库工具: 内置查询执行、表信息列表、模式描述等工具,简化对ClickHouse数据库的操作。
  • 动态工具生成: 能够自动从ClickHouse视图生成MCP工具,实现高度可定制和扩展的功能。
  • 数据库资源发现: 自动发现并提供ClickHouse数据库的模式信息和详细表结构资源。
  • 配置灵活与热加载: 支持通过配置文件、环境变量和CLI参数进行灵活配置,并支持运行时热加载配置,无需重启服务。
  • OpenAPI集成: 暴露OpenAPI兼容的端点,便于与OpenAI GPTs等AI平台无缝集成。

安装步骤 以下是一些常见的安装和部署方式。请根据您的环境选择最合适的方式。

  • 使用Docker (推荐):

    docker run -it --rm ghcr.io/altinity/altinity-mcp:latest --clickhouse-host your_clickhouse_host --clickhouse-port 8123
    • 注意: 替换 'your_clickhouse_host' 为您的ClickHouse服务器地址。
  • 使用Helm (Kubernetes): 从OCI Helm注册表安装(推荐):

    helm install altinity-mcp oci://ghcr.io/altinity/altinity-mcp/helm/altinity-mcp \
      --set config.clickhouse.host=your_clickhouse_host \
      --set config.clickhouse.database=default \
      --set config.clickhouse.limit=5000
    • 注意: 替换 'your_clickhouse_host' 为您的ClickHouse服务器地址。
  • 从源代码构建:

    git clone https://github.com/altinity/altinity-mcp.git
    cd altinity-mcp
    go build -o altinity-mcp ./cmd/altinity-mcp
    ./altinity-mcp --clickhouse-host your_clickhouse_host --clickhouse-port 8123
    • 注意: 替换 'your_clickhouse_host' 为您的ClickHouse服务器地址。

MCP客户端配置示例 MCP客户端需要配置与MCP服务器通信的启动命令和参数。以下是一个使用CLI参数启动HTTP传输协议的MCP服务器的配置信息。

{
  "server_name": "Altinity ClickHouse MCP Server",
  "command": "altinity-mcp",
  "args": [
    "--transport", "http",
    "--address", "0.0.0.0",
    "--port", "8080",
    "--clickhouse-host", "your_clickhouse_host",
    "--clickhouse-port", "8123",
    "--clickhouse-database", "default",
    "--clickhouse-username", "default",
    "--clickhouse-password", "your_clickhouse_password",
    "--openapi", "http"
  ],
  "comment": "启动Altinity ClickHouse MCP服务器,使用HTTP传输协议,并暴露OpenAPI接口。",
  "parameters_comment": {
    "--transport": "指定MCP服务器使用的传输协议(stdio, http, sse)。此示例中使用http。",
    "--address": "服务器监听的IP地址。",
    "--port": "服务器监听的端口。",
    "--clickhouse-host": "您的ClickHouse数据库主机名或IP地址。",
    "--clickhouse-port": "您的ClickHouse数据库端口。",
    "--clickhouse-database": "连接的默认ClickHouse数据库名称。",
    "--clickhouse-username": "连接ClickHouse数据库的用户名。",
    "--clickhouse-password": "连接ClickHouse数据库的密码。",
    "--openapi": "启用OpenAPI端点,支持http或https。此示例中使用http。"
  }
}

提示:

  • 'your_clickhouse_host' 和 'your_clickhouse_password' 需要替换为实际的ClickHouse连接信息。
  • 如果启用了JWE认证,MCP客户端在调用工具或资源时,需要在请求中包含有效的JWE token。
  • 更复杂的配置可以通过配置文件(YAML或JSON)指定,并通过 '--config' 参数加载。

基本使用方法

  1. 启动服务器: 按照上述安装步骤选择一种方式启动MCP服务器,并确保它能连接到您的ClickHouse实例。
  2. (可选)生成JWE Token: 如果服务器配置为启用JWE认证,可以使用内置的JWE Token生成器来创建带有ClickHouse连接凭据的加密令牌:
    go run ./cmd/jwe_auth/jwe_token_generator.go \
      --jwe-secret-key "your-jwe-encryption-secret" \
      --jwt-secret-key "your-jwt-signing-secret" \
      --host "clickhouse.example.com" \
      --port 8123 \
      --database "analytics" \
      --username "user123" \
      --password "password123" \
      --expiry 86400
    然后将生成的JWE Token用于后续的MCP客户端请求。
  3. MCP客户端交互: 使用任何兼容MCP协议的客户端(如LLM助手),连接到MCP服务器的端点。客户端可以:
    • 调用工具: 例如,调用 'execute_query' 工具来执行SQL查询,如 'execute_query(query="SELECT * FROM my_table LIMIT 10")'。
    • 读取资源: 读取 'clickhouse://schema' 获取整个数据库的模式信息,或读取 'clickhouse://table/my_db/my_table' 获取特定表的详细结构。
    • 利用动态工具: 如果配置了动态工具规则,客户端可以发现并调用对应ClickHouse视图生成的工具。
  4. OpenAPI集成 (适用于OpenAI GPTs): 如果服务器启用了OpenAPI,可以将其OpenAPI schema(例如 'http://localhost:8080/openapi')导入到OpenAI GPTs中,使GPTs能够直接通过定义的Action与ClickHouse数据库交互。

信息

分类

数据库与文件