Content
# ClickHouse MCP Server (TypeScript)
[](https://www.npmjs.com/package/@clickhouse/mcp)
MCP (Model Context Protocol) server for ClickHouse, built in TypeScript. This is a work based on the [python package](https://github.com/ClickHouse/mcp-clickhouse).
## Features
## Claude Desktop Integration
To use this MCP server with Claude Desktop, update your Claude Desktop configuration file:
### Location
- On macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- On Windows: `%APPDATA%/Claude/claude_desktop_config.json`
### Configuration
Add the following to your configuration:
```json
{
"mcpServers": {
"mcp-clickhouse": {
"command": "npx",
"args": ["@clickhouse/mcp"],
"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 SQL Playground Configuration
To try it out with the ClickHouse SQL Playground, use:
```json
{
"mcpServers": {
"mcp-clickhouse": {
"command": "npx",
"args": ["@clickhouse/mcp"],
"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"
}
}
}
}
```
Restart Claude Desktop to apply the changes.
## Installation
```bash
npm install @clickhouse/mcp
```
## Configuration for local development
Create a `.env` file in your project root with the following environment variables:
### Required Variables
- `CLICKHOUSE_HOST`: The hostname of your ClickHouse server
- `CLICKHOUSE_USER`: The username for authentication
- `CLICKHOUSE_PASSWORD`: The password for authentication
### Optional Variables
- `CLICKHOUSE_PORT`: The port number of your ClickHouse server
- Default: `8443` if HTTPS is enabled, `8123` if disabled
- Usually doesn't need to be set unless using a non-standard port
- `CLICKHOUSE_SECURE`: Enable/disable HTTPS connection
- Default: `true`
- Set to `false` for non-secure connections
- `CLICKHOUSE_VERIFY`: Enable/disable SSL certificate verification
- Default: `true`
- Set to `false` to disable certificate verification (not recommended for production)
- `CLICKHOUSE_CONNECT_TIMEOUT`: Connection timeout in seconds
- Default: `30`
- Increase this value if you experience connection timeouts
- `CLICKHOUSE_SEND_RECEIVE_TIMEOUT`: Send/receive timeout in seconds
- Default: `300`
- Increase this value for long-running queries
- `CLICKHOUSE_DATABASE`: Default database to use
- Default: None (uses server default)
- Set this to automatically connect to a specific database
## Development
### Setup
1. Clone the repository:
```bash
git clone https://github.com/aminkhorramii/mcp-clickhouse-ts.git
cd mcp-clickhouse-ts
```
2. Install dependencies:
```bash
npm install
```
3. Create a `.env` file in the root directory with your ClickHouse connection details:
```
CLICKHOUSE_HOST=localhost
CLICKHOUSE_PORT=8123
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse
CLICKHOUSE_SECURE=false
```
### Running Locally
For development:
```bash
npm run dev
```
Build the project:
```bash
npm run build
```
Run the built version:
```bash
npm start
```
### Docker
Build the Docker image:
```bash
npm run docker:build
```
Run with Docker:
```bash
docker run -e CLICKHOUSE_HOST=your-host -e CLICKHOUSE_USER=your-user -e CLICKHOUSE_PASSWORD=your-password mcp-clickhouse-ts
```
## Example Usage
Once the MCP server is connected to Claude, you can interact with ClickHouse using natural language:
- "List all databases in my ClickHouse instance"
- "Run this SQL query: SELECT count() FROM system.tables"
- "Show me the schema of the 'users' table in the 'default' database"
## Example Configurations
### For local development with Docker:
```
# Required variables
CLICKHOUSE_HOST=localhost
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse
# Optional: Override defaults for local development
CLICKHOUSE_SECURE=false # Uses port 8123 automatically
CLICKHOUSE_VERIFY=false
```
### For ClickHouse Cloud:
```
# Required variables
CLICKHOUSE_HOST=your-instance.clickhouse.cloud
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=your-password
# Optional: These use secure defaults
# CLICKHOUSE_SECURE=true # Uses port 8443 automatically
# CLICKHOUSE_DATABASE=your_database
```
## License
MIT
You Might Also Like
MarkItDown MCP
markitdown-mcp is a lightweight MCP server for converting various URIs to Markdown.
Github
GitHub MCP Server connects AI tools to GitHub for code management and automation.

apisix
Apache APISIX is an API Gateway for managing APIs and microservices.
debugg-ai-mcp
AI-powered MCP Server for testing, debugging, and code analysis.
aws-lambda-mcp-cookbook
AWS Lambda MCP Cookbook provides Python examples for MCP server integration.
mcp-server-macos-use
MCP server in Swift for controlling macOS apps via accessibility APIs.