使用说明
ClickHouse MCP服务器
一种模型上下文协议(MCP)服务器实现,使Claude AI能够通过安全高效的接口与ClickHouse数据库进行交互。
先决条件
- Node.js (版本18或更高)
- ClickHouse 本地或远程运行的数据库
- 克劳德桌面 已安装应用程序
可用工具
-
clickhouse_query
- 在ClickHouse集群上执行SELECT查询
- 输入:
sql(string):要执行的SQL查询 - 注意:出于安全原因,只允许使用SELECT查询
-
clickhouse_show_tables
- 列出ClickHouse数据库中的所有表
- 无需输入参数
-
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.配置克劳德桌面
-
打开Claude Desktop应用程序,转到设置,然后单击开发人员,然后单击“编辑配置文件”
-
或者打开位于以下位置的Claude Desktop配置文件:
- 在macOS上:
~/Library/Application Support/Claude/claude_desktop_config.json - 在Windows上:
%APPDATA%/Claude/claude_desktop_config.json
- 在macOS上:
-
添加以下内容:
{
"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服务器的网络访问
故障排除
- 连接问题:检查您的ClickHouse服务器是否正在运行且可访问
- 权限错误:确保Node.js脚本具有适当的文件权限
- 配置问题:验证Claude Desktop配置中的路径指向正确的文件
- 依赖项:确保所有npm包都已正确安装
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
示例用法
设置后,您可以要求Claude:
- “显示ClickHouse数据库中的所有表”
- “查询user_events表以获取今天的数据”
安全说明
- 服务器只允许查询工具的SELECT查询
- 考虑为ClickHouse实例设置适当的身份验证
- 对敏感凭据使用环境变量
- 根据需要限制对ClickHouse服务器的网络访问
故障排除
- 连接问题:检查您的ClickHouse服务器是否正在运行且可访问
- 权限错误:确保Node.js脚本具有适当的文件权限
- 配置问题:验证Claude Desktop配置中的路径指向正确的文件
- 依赖项:确保所有npm包都已正确安装