mcp-clickhouse
mcp-clickhouse
これは、ClickHouse 用の Model Context Protocol サーバーです。MCP 対応クライアント(Claude Desktop、Claude Code など)が、スキーマの探索、分析クエリの実行、データベースの管理をできるようにします。すべての動作はフラグによって制御されます。
セキュリティモデルはステートメント認識型です。すべてのSQLステートメントは読み取り・書き込み・破壊的のいずれかに分類され、現在のアクセスモードに基づいて制御されます。読み取り専用モードでは、さらに ClickHouse 自身の readonly=1 設定の下でクエリを実行します。
機能
探索とモニタリング — データベース、テーブル、カラム、
SHOW CREATE、テーブル統計(パーツ/行数/バイト)、実行中クエリ、サーバーメトリクス、クラスタートポロジー。読み取りクエリ — 読み取りステートメントのみを受け付ける
queryツールで、CLICKHOUSE_MAX_ROWSによって上限が設定されます。管理 — INSERT/CREATE/ALTER(読み書き)と DROP/TRUNCATE/DELETE(管理)用の
executeツール。それぞれ分類によって制御されます。アクセスモード —
read-only→read-write→adminの段階で、各モードはそれ以上のレベルのステートメントを公開しません。セキュリティフラグ — データベースの許可リスト、保護データベース、破壊的ステートメントの制御、行数上限、ドライラン、JSON 監査ログ(下記参照)。
Related MCP server: clickhouse-mcp-server
セキュリティモデル
項目 | フラグ | デフォルト | 効果 |
サーバーは何ができるか? |
|
|
|
対象となるデータベースは? |
| (すべて) | 設定している場合、他のデータベースに対する操作は拒否されます。 |
恒久的に読み取り専用のデータベースは? |
|
| 読み取りは可能ですが、変更はできません。 |
破壊的 SQL を実行できるか? |
|
| DROP/TRUNCATE/DELETE/… にはこれ かつ admin モードが必要です。 |
結果サイズの上限 |
|
| モデルに返す行数のハードリミットです。 |
実行せずにプレビュー |
|
| 書き込み・破壊的ステートメントを検証し、意図を記録した後に、返します。 |
監査証跡 |
|
| 保護された操作ごとに JSON 行を stderr に出力します。 |
ステートメントの分類は 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 — ステートメントを分類したうえで、単一のステートメントを実行します。書き込みには read-write モード、破壊的ステートメントには admin モードと CLICKHOUSE_ALLOW_DELETE が必要です。
MCP クライアントで利用する
Claude Code、Claude Desktop、Cursor、OpenAI Codex CLI、Windsurf、VS Code (Copilot)、その他の MCP クライアントで動作します。クライアントごとの設定は docs/CLIENTS.md を参照してください。
インストール
npm install
npm run buildClaude Desktop / Claude Code での実行
{
"mcpServers": {
"clickhouse": {
"command": "node",
"args": ["/absolute/path/to/mcp-clickhouse/dist/index.js"],
"env": {
"CLICKHOUSE_URL": "http://clickhouse:8123",
"CLICKHOUSE_USER": "readonly",
"CLICKHOUSE_PASSWORD": "…",
"CLICKHOUSE_MODE": "read-only",
"CLICKHOUSE_DATABASE_ALLOWLIST": "analytics"
}
}
}
}プロンプト例
"
analyticsデータベースで最も大きなテーブルは何ですか?""
eventsのスキーマを表示して、今週の日次カウントを取得するクエリを実行してください。""現在どのクエリが実行中で、最もメモリを使用していますか?"
開発
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
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityFmaintenanceAn MCP server implementation that enables Claude AI to interact with Clickhouse databases. Features include secure database connections, query execution, read-only mode support, and multi-query capabilities.22MIT
- AlicenseNot gradedqualityCmaintenanceEnables interaction with ClickHouse databases via MCP, providing tools to list databases and tables and execute safe SELECT, SHOW, and DESCRIBE queries.32MIT
- FlicenseAqualityCmaintenanceRead-only MCP server for ClickHouse that allows listing databases and tables, describing schemas, and running SELECT queries.4
Related MCP Connectors
Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
MCP server for managing Prisma Postgres.
Read-only Yandex Metrika MCP. Query visits, sources, geo, devices and more in plain language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dockndevai/mcp-clickhouse'
If you have feedback or need assistance with the MCP directory API, please join our Discord server