ClickHouse数据库交互服务

一个实现Model Context Protocol (MCP)的服务,使Claude AI能够通过安全高效的接口与ClickHouse数据库进行交互。

  • by harshithgowdakt
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 harshithgowdakt/clickhouse-mcp-server

使用说明

ClickHouse MCP服务器

一种模型上下文协议(MCP)服务器实现,使Claude AI能够通过安全高效的接口与ClickHouse数据库进行交互。

先决条件

  1. Node.js (版本18或更高)
  2. ClickHouse 本地或远程运行的数据库
  3. 克劳德桌面 已安装应用程序

可用工具

  1. clickhouse_query

    • 在ClickHouse集群上执行SELECT查询
    • 输入: sql (string):要执行的SQL查询
    • 注意:出于安全原因,只允许使用SELECT查询
  2. clickhouse_show_tables

    • 列出ClickHouse数据库中的所有表
    • 无需输入参数
  3. clickhouse_describe_table

    • 描述特定表的模式
    • 输入: table (string):要描述的表的名称

安装步骤

1.安装依赖项

npm install @modelcontextprotocol/sdk @clickhouse/client typescript @types/node

2.构建TypeScript

npm run build

3.创建服务器文件

将主服务器代码复制到 index.js 并使其可执行:

chmod +x dist/index.js

4.配置克劳德桌面

  1. 打开Claude Desktop应用程序,转到设置,然后单击开发人员,然后单击“编辑配置文件”

  2. 或者打开位于以下位置的Claude Desktop配置文件:

    • 在macOS上: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 在Windows上: %APPDATA%/Claude/claude_desktop_config.json
  3. 添加以下内容:

{
  "mcpServers": {
    "clickhouse": {
      "command": "node",
      "args": ["/path/to/your/clickhouse-mcp-server/dist/index.js"],
      "env": {
        "CLICKHOUSE_HOST": "<clickhouse-host>",
        "CLICKHOUSE_PORT": "<clickhouse-port>",
        "CLICKHOUSE_USER": "<clickhouse-user>",
        "CLICKHOUSE_PASSWORD": "<clickhouse-password>",
        "CLICKHOUSE_SECURE": "true",
        "CLICKHOUSE_VERIFY": "true",
        "CLICKHOUSE_CONNECT_TIMEOUT": "30",
        "CLICKHOUSE_SEND_RECEIVE_TIMEOUT": "30"
      }
    }
  }
}

更新环境变量以指向您自己的ClickHouse服务。

或者,如果你想试试 ClickHouse SQL游乐场,您可以使用以下配置:

{
  "mcpServers": {
    "clickhouse": {
      "command": "node",
      "args": ["/path/to/your/clickhouse-mcp-server/dist/index.js"],
      "env": {
        "CLICKHOUSE_HOST": "sql-clickhouse.clickhouse.com",
        "CLICKHOUSE_PORT": "8443",
        "CLICKHOUSE_USER": "demo",
        "CLICKHOUSE_PASSWORD": "",
        "CLICKHOUSE_SECURE": "true",
        "CLICKHOUSE_VERIFY": "true",
        "CLICKHOUSE_CONNECT_TIMEOUT": "30",
        "CLICKHOUSE_SEND_RECEIVE_TIMEOUT": "30"
      }
    }
  }
}

重要:更新配置中的路径以指向您的实际路径 dist/index.js 文件位置。使用复制完整路径,如下图所示。

5.测试服务器

在配置Claude Desktop之前,请在本地测试服务器:

node dist/index.js

服务器应启动并显示“ClickHouse MCP服务器在stdio上运行”。

7.重新启动克劳德桌面

更新配置后,重新启动Claude Desktop以使更改生效。

示例用法

设置后,您可以要求Claude:

  • “显示ClickHouse数据库中的所有表”
  • “查询user_events表以获取今天的数据”
  • “描述订单表的模式”

发展

运行测试

npm test

建设项目

npm run build

掉毛

npm run lint

安全说明

  • 服务器只允许查询工具的SELECT查询
  • 考虑为ClickHouse实例设置适当的身份验证
  • 对敏感凭据使用环境变量
  • 根据需要限制对ClickHouse服务器的网络访问

故障排除

  1. 连接问题:检查您的ClickHouse服务器是否正在运行且可访问
  2. 权限错误:确保Node.js脚本具有适当的文件权限
  3. 配置问题:验证Claude Desktop配置中的路径指向正确的文件
  4. 依赖项:确保所有npm包都已正确安装

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

示例用法

设置后,您可以要求Claude:

  • “显示ClickHouse数据库中的所有表”
  • “查询user_events表以获取今天的数据”

安全说明

  • 服务器只允许查询工具的SELECT查询
  • 考虑为ClickHouse实例设置适当的身份验证
  • 对敏感凭据使用环境变量
  • 根据需要限制对ClickHouse服务器的网络访问

故障排除

  1. 连接问题:检查您的ClickHouse服务器是否正在运行且可访问
  2. 权限错误:确保Node.js脚本具有适当的文件权限
  3. 配置问题:验证Claude Desktop配置中的路径指向正确的文件
  4. 依赖项:确保所有npm包都已正确安装