使用说明

项目简介

ClickHouse MCP Server 是一个基于 Model Context Protocol (MCP) 构建的服务端应用,旨在为大型语言模型 (LLM) 提供访问 ClickHouse 数据库的能力。通过提供 'connect_database' 和 'execute_query' 工具,LLM 可以安全地连接到 ClickHouse 数据库并执行 SQL 查询,从而获取和利用数据库中的数据信息。

主要功能点

  • 连接 ClickHouse 数据库: 提供 'connect_database' 工具,允许 LLM 指定数据库名称并建立连接。
  • 执行 SQL 查询: 提供 'execute_query' 工具,允许 LLM 执行 SQL 查询语句,并以 JSON 格式返回查询结果。
  • 支持多查询执行: 'execute_query' 工具支持一次执行多条 SQL 查询语句(以分号分隔)。
  • 灵活配置: 通过环境变量配置 ClickHouse 服务器连接信息,包括主机、端口、用户、密码和初始数据库。
  • 只读模式: 支持配置只读模式,限制 LLM 对数据库的写操作,增强数据安全性。
  • 基于 MCP 协议: 遵循 MCP 协议标准,易于与支持 MCP 协议的 LLM 客户端集成。

安装步骤

  1. 安装软件包: 使用 'pip' 或 'uv' 包管理器安装 'clickhouse-mcp-server' 软件包。

    pip install clickhouse-mcp-server

    uv pip install clickhouse-mcp-server

服务器配置

为了让 MCP 客户端(例如 Claude)能够连接到 'clickhouse-mcp-server',您需要在客户端的配置文件中添加服务器配置信息。以下是配置示例 (以 Claude Desktop 为例):

Claude Desktop 客户端配置 (claude_desktop_config.json):

{
  "mcpServers": {
    "clickhouse-mcp-server": {  // 服务器名称,客户端用此名称引用
      "command": "uvx",        // 运行服务器的命令,这里假设 clickhouse-mcp-server 已添加到系统路径中
      "args": [                // 命令参数
        "clickhouse-mcp-server" // 运行 clickhouse-mcp-server 的命令
      ],
      "env": {                 // 环境变量配置,用于连接 ClickHouse 数据库
        "CLICKHOUSE_HOST": "localhost",    // ClickHouse 服务器地址,默认为 localhost
        "CLICKHOUSE_USER": "default",      // ClickHouse 用户名,默认为 default
        "CLICKHOUSE_PASSWORD": "",         // ClickHouse 密码,默认为空
        "CLICKHOUSE_DATABASE": "[optional]", // 可选:初始连接的数据库
        "CLICKHOUSE_READONLY": "false"      // 是否启用只读模式,默认为 false
      }
    }
  }
}

配置说明:

  • '"clickhouse-mcp-server"': 服务器的唯一名称,在客户端配置中用于标识和引用此服务器。
  • '"command": "uvx"': 指定用于启动服务器的可执行命令。 'uvx' 通常用于运行通过 'uv' 安装的包,确保环境一致性。如果你的环境配置不同,可能需要调整为 'uv' 或 'python' 等,并指定入口脚本路径。
  • '"args": ["clickhouse-mcp-server"]': 传递给 'command' 的参数。这里 '"clickhouse-mcp-server"' 是 'clickhouse_mcp_server' 包提供的可执行入口点。
  • '"env": { ... }"': 设置服务器运行时需要的环境变量,这些变量用于配置 ClickHouse 数据库的连接信息。
    • 'CLICKHOUSE_HOST', 'CLICKHOUSE_USER', 'CLICKHOUSE_PASSWORD', 'CLICKHOUSE_DATABASE': 用于配置 ClickHouse 数据库连接,请根据你的 ClickHouse 数据库实际情况修改。
    • 'CLICKHOUSE_READONLY': 设置为 '"true"' 或 '"1"' 启用只读模式,设置为 '"false"' 或 '"0"' 禁用只读模式。

注意: 请根据你的实际 ClickHouse 服务器配置修改 'env' 中的环境变量值。 确保 MCP 客户端能够正确加载并应用这些配置。

基本使用方法

  1. 启动 MCP 服务器: MCP 客户端(如 Claude)启动后,会自动尝试连接并启动配置中定义的 MCP 服务器。'clickhouse-mcp-server' 会在后台运行并等待客户端的请求。
  2. 在 LLM 中调用工具: 在支持 MCP 协议的 LLM 应用中,你可以通过指令或自然语言指示 LLM 调用 'clickhouse-mcp-server' 提供的工具,例如:
    • 指示 LLM 使用 'connect_database' 工具连接到指定的 ClickHouse 数据库。
    • 指示 LLM 使用 'execute_query' 工具执行 SQL 查询,并利用返回的数据进行后续操作。

示例对话 (假设在 Claude 中使用):

用户: "连接到数据库 'my_database' 并查询表 'users' 中的所有数据。"

Claude (内部操作):

  • Claude 客户端识别到用户请求需要访问数据库。
  • Claude 客户端调用 'clickhouse-mcp-server' 的 'connect_database' 工具,参数为 'database: "my_database"'。
  • 连接成功后,Claude 客户端调用 'clickhouse-mcp-server' 的 'execute_query' 工具,参数为 'query: "SELECT * FROM users;"'。
  • 'clickhouse-mcp-server' 执行查询并将结果返回给 Claude 客户端。
  • Claude 客户端将查询结果整合到回复中,返回给用户。

用户: "查询 'orders' 表中订单金额大于 1000 的订单数量。"

Claude (内部操作):

  • Claude 客户端调用 'clickhouse-mcp-server' 的 'execute_query' 工具,参数为 'query: "SELECT count() FROM orders WHERE amount > 1000;"'。
  • 'clickhouse-mcp-server' 执行查询并将结果返回给 Claude 客户端。
  • Claude 客户端将查询结果整合到回复中,返回给用户。

通过以上步骤,LLM 应用可以利用 'clickhouse-mcp-server' 提供的工具,安全、便捷地访问和操作 ClickHouse 数据库,从而扩展 LLM 的能力,使其能够处理和利用结构化数据。

信息

分类

数据库与文件