An MCP server for ClickHouse.
-
run_select_query- Execute SQL queries on your ClickHouse cluster.
- Input:
sql(string): The SQL query to execute. - All ClickHouse queries are run with
readonly = 1to ensure they are safe.
-
list_databases- List all databases on your ClickHouse cluster.
-
list_tables- List all tables in a database.
- Input:
database(string): The name of the database.
-
Open the Claude Desktop configuration file located at:
- On macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - On Windows:
%APPDATA%/Claude/claude_desktop_config.json
- On macOS:
-
Add the following:
{
"mcpServers": {
"mcp-clickhouse": {
"command": "uv",
"args": [
"run",
"--with",
"mcp-clickhouse",
"--python",
"3.13",
"mcp-clickhouse"
],
"env": {
"CLICKHOUSE_HOST": "<clickhouse-host>",
"CLICKHOUSE_PORT": "<clickhouse-port>",
"CLICKHOUSE_USER": "<clickhouse-user>",
"CLICKHOUSE_PASSWORD": "<clickhouse-password>"
}
}
}
}Update the environment variables to point to your own ClickHouse service.
Or, if you'd like to try it out with the ClickHouse SQL Playground, you can use the following config:
{
"mcpServers": {
"mcp-clickhouse": {
"command": "uv",
"args": [
"run",
"--with",
"mcp-clickhouse",
"--python",
"3.13",
"mcp-clickhouse"
],
"env": {
"CLICKHOUSE_HOST": "sql-clickhouse.clickhouse.com",
"CLICKHOUSE_PORT": "8443",
"CLICKHOUSE_USER": "demo",
"CLICKHOUSE_PASSWORD": ""
}
}
}
}-
Locate the command entry for
uvand replace it with the absolute path to theuvexecutable. This ensures that the correct version ofuvis used when starting the server. -
Restart Claude Desktop to apply the changes.
-
In
test-servicesdirectory rundocker compose up -dto start the ClickHouse cluster. -
Add the following variables to a
.envfile in the root of the repository.
CLICKHOUSE_HOST=localhost
CLICKHOUSE_PORT=8123
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse
-
Run
uv syncto install the dependencies. To installuvfollow the instructions here. Then dosource .venv/bin/activate. -
For easy testing, you can run
fastmcp dev mcp_clickhouse/mcp_server.pyto start the MCP server.