mcpField
M
mcp-clickhouse

mcp-clickhouse

本地服务
github.com/dockndevai数据库33 天前更新

关于 mcp-clickhouse

mcp-clickhouse 是供客户端探索、查询和管理 ClickHouse 的 MCP 服务。它会分类 SQL 语句并按访问模式限制操作,对破坏性操作另设控制。

主要功能

  1. 01查看架构与表统计信息
  2. 02运行带行数上限的只读查询
  3. 03在读写模式执行写入
  4. 04在管理员模式限制破坏性 SQL
  5. 05数据库允许列表与受保护库
  6. 06试运行与 JSON 审计日志

适用场景

  1. 01检查 ClickHouse 架构和表大小
  2. 02在行数上限内查询分析数据
  3. 03查看运行中的查询和服务器指标
  4. 04限制或预览数据库修改

MCP 相关

向 MCP 客户端提供 ClickHouse 探索、查询、监控和管理工具。可用操作取决于配置的访问模式和 SQL 分类。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dockndevai-mcp-clickhouse": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-clickhouse"
],
"env": {
"CLICKHOUSE_URL": "<CLICKHOUSE_URL>",
"CLICKHOUSE_USER": "<CLICKHOUSE_USER>",
"CLICKHOUSE_PASSWORD": "<CLICKHOUSE_PASSWORD>",
"CLICKHOUSE_MODE": "<CLICKHOUSE_MODE>"
}
}
}
}
启动命令npx -y @dockndevai/mcp-clickhouse
需要配置的环境变量
CLICKHOUSE_URLClickHouse HTTP endpoint.
CLICKHOUSE_USERClickHouse user (prefer a read-only user).
CLICKHOUSE_PASSWORD密钥ClickHouse password.
CLICKHOUSE_MODEAccess mode: read-only | read-write | admin.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@dockndevai/mcp-clickhouse0.3.0

工具

9

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

mcp-clickhouse

CI License: MIT npm

一个用于 ClickHouse 的 Model Context Protocol 服务。它允许支持 MCP 的客户端(Claude Desktop、Claude Code 等)探索架构、运行分析查询并管理数据库,所有行为均由标志控制。

安全模型感知语句类型:每条 SQL 语句都会被归类为读取、写入或破坏性操作,并根据当前访问模式进行限制。只读模式还会使用 ClickHouse 自身的 readonly=1 设置来运行查询。

功能

  • 探索与监控——数据库、表、列、SHOW CREATE、表统计信息(分区、行数、字节数)、运行中的查询、服务器指标、集群拓扑。
  • 读取查询——query 工具仅接受读取语句,并将结果限制在 CLICKHOUSE_MAX_ROWS。
  • 管理——execute 工具用于执行 INSERT/CREATE/ALTER(读写模式)和 DROP/TRUNCATE/DELETE(管理员模式),每项操作都会根据分类进行限制。
  • 访问模式——read-only → read-write → admin,逐级开放,确保某种模式不会允许执行超出其级别的语句。
  • 安全标志——数据库允许列表、受保护的数据库、破坏性操作限制、行数上限、试运行和 JSON 审计日志(见下文)。

安全模型

关注点标志默认值效果
服务可以执行哪些操作?CLICKHOUSE_MODEread-onlyread-only 仅开放读取工具(并在 query 中拒绝非 SELECT 语句);read-write 会为写入开放 execute;admin 允许破坏性语句。
哪些数据库在操作范围内?CLICKHOUSE_DATABASE_ALLOWLIST(全部)设置后,将拒绝对其他数据库执行操作。
哪些数据库始终为只读?CLICKHOUSE_PROTECTED_DATABASESsystem,information_schema可读取,但永远不能修改。
是否可以运行破坏性 SQL?CLICKHOUSE_ALLOW_DELETEfalseDROP/TRUNCATE/DELETE/… 需要启用此项并且处于管理员模式。
结果大小上限CLICKHOUSE_MAX_ROWS1000限制返回给模型的行数。
预览而不执行CLICKHOUSE_DRY_RUNfalse写入/破坏性语句会进行验证并记录意图,然后返回。
审计跟踪CLICKHOUSE_AUDIT_LOGtrue每次受限制的操作都会向 stderr 输出一行 JSON。
交互式确认(自动)—运行破坏性和高影响操作前,会通过 MCP elicitation 请求人工批准;不支持 elicitation 的客户端会回退到 *_ALLOW_* 限制。

语句分类逻辑位于 src/sql.ts 中,并采用故障安全策略:ALTER … DELETE/UPDATE 视为破坏性操作,任何无法解析的语句也会被视为破坏性操作。

工具

读取(read-only+):list_databases、list_tables、describe_table、show_create_table、table_stats、running_queries、server_metrics、cluster_info、query

写入/管理员(read-write+):execute——对单条语句进行分类后运行;写入需要读写模式,破坏性语句需要管理员模式和 CLICKHOUSE_ALLOW_DELETE。

快速入门 — 添加到你的 Agent

已发布到 npm,包名为 @dockndevai/mcp-clickhouse。无需克隆或构建 — MCP 客户端会按需通过 npx 运行它。请从 read-only 模式开始;所有变量请参阅 .env.example,各客户端的完整指南请参阅 docs/CLIENTS.md。

Claude Code(命令行)

claude mcp add clickhouse -e CLICKHOUSE_URL="http://localhost:8123" -e CLICKHOUSE_USER="default" -e CLICKHOUSE_MODE="read-only" -- npx -y @dockndevai/mcp-clickhouse

Claude Desktop · Cursor · Windsurf — 将同一代码块添加到 claude_desktop_config.json、.cursor/mcp.json 或 ~/.codeium/windsurf/mcp_config.json 中:

{
  "mcpServers": {
    "clickhouse": {
      "command": "npx",
      "args": [
        "-y",
        "@dockndevai/mcp-clickhouse"
      ],
      "env": {
        "CLICKHOUSE_URL": "http://localhost:8123",
        "CLICKHOUSE_USER": "default",
        "CLICKHOUSE_MODE": "read-only"
      }
    }
  }
}

OpenAI Codex CLI — 在 ~/.codex/config.toml 中:

[mcp_servers.clickhouse]
command = "npx"
args = ["-y", "@dockndevai/mcp-clickhouse"]
env = { CLICKHOUSE_URL = "http://localhost:8123", CLICKHOUSE_USER = "default", CLICKHOUSE_MODE = "read-only" }

VS Code(GitHub Copilot,Agent 模式) — 在 .vscode/mcp.json 中:

{
  "servers": {
    "clickhouse": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@dockndevai/mcp-clickhouse"
      ],
      "env": {
        "CLICKHOUSE_URL": "http://localhost:8123",
        "CLICKHOUSE_USER": "default",
        "CLICKHOUSE_MODE": "read-only"
      }
    }
  }
}

示例提示词

  • “analytics 数据库中最大的表有哪些?”
  • “显示 events 的架构,并运行查询统计本周每天的数据量。”
  • “当前有哪些查询正在运行并占用最多内存?”

从源代码运行(开发)

建议使用上文发布的包。若要从克隆的仓库运行:

npm install
npm run build
node dist/index.js   # with the environment variables set

开发

npm run dev
npm test          # SQL classification + security policy (30 tests)
npm run typecheck

发布

此服务提供用于官方 MCP 注册表的 server.json,以及用于 npm 所有权验证的 mcpName。有关发布到 npm 并上架 MCP 注册表、Smithery、Glama、Cursor 和 PulseMCP 的说明,请参阅 PUBLISHING.md。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。