A side-by-side look at the MCP Clickhouse and Databases (read Only, switchable) MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose MCP Clickhouse for databases work as a local process; choose Databases (read Only, switchable) for databases as a local process. You can also run both side by side in one mcpServers block.
list_databases, list_tables, run_query.current_connection, list_connections, list_databases.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Databases | Databases |
| Quality signal | 67/100 · Great | 61/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | other | Not declared |
| Pricing | Free | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 889 | 0 |
| Directory activity | 6 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 3 | 18 |
| Full listing | View MCP Clickhouse | View Databases (read Only, switchable) |
list_databasesList available ClickHouse databaseslist_tablesList available ClickHouse tables in a database, including schema, comment,
row count, and column count.
Integers outside [-9007199254740991, 9007199254740991] in table metadata are
returned as decimal strings.
Pagination tokens are single-use and retained for up to one hour.run_queryExecute SQL queries in ClickHouse. Queries run in read-only mode by default. Bind optional params by name with {name:Type} placeholders, such as {name:String} or {vector:Array(Float32)}. Values may be JSON scalars, nulls, or arrays. Pass exact large integers as decimal strings. JSON lists and objects cannot bind to Tuple and Map types. Python percent formatting and $name$ raw binary parameters are not supported. Parameter values stay out of the MCP server's normal SQL log lines, but may appear in errors and backend logs. Set CLICKHOUSE_ALLOW_WRITE_ACCESS=true to allow DDL and DML operations. Set CLICKHOUSE_ALLOW_DROP=true to additionally allow destructive operations (DROP, TRUNCATE, DELETE, UPDATE, REPLACE TABLE/PARTITION, CREATE OR REPLACE, CLEAR COLUMN/INDEX/PROJECTION, DETACH PERMANENTLY). That gate is a best-effort accident guard, not a security boundary. Integers outside [-9007199254740991, 9007199254740991] are returned as decimal strings. Two optional checks also run through this tool. Use DESCRIBE (<query>) when you need a query's output columns and types; it inspects the result schema and surfaces analysis errors such as an unknown column, but a query that describes cleanly can still fail at runtime. Consider EXPLAIN ESTIMATE <query> before a SELECT that could be expensive; it returns the estimated parts, rows and marks read from MergeTree family tables, which is not run time and not result size. Neither runs the query body, though analysis can execute scalar subqueries.current_connectionShow which database server, engine and database the read-only tools are currently pointed atlist_connectionsList the connection profiles available to switch to, with each one's engine, including any added during this sessionlist_databasesList databases on the currently connected server (schemas on MySQL, numbered databases on Redis)use_databaseSwitch the active database on the current server. Takes effect immediately, no restart neededuse_connectionSwitch to a named connection profile, on any engine. Takes effect immediately, no restart neededconnectConnect to a database at runtime with a connection URL (mysql, mariadb, postgres, sqlite, mssql, clickhouse, mongodb, redis, elasticsearch, opensearch). Not persisted to disk, but kept for the rest of the session under an aliaslist_tablesList the tables in the active database: collections on MongoDB, keys on Redis, indices on Elasticsearchdescribe_tableShow the structure of a table: columns on SQL engines, inferred fields for a MongoDB collection, the mapping of an Elasticsearch index, or the type and TTL of a Redis keyget_table_indexesShow indexes on a table or MongoDB collection, or the sorting key and skipping indices of a ClickHouse tableget_foreign_keysShow foreign key relationships for a table on MySQL, PostgreSQL, SQLite or SQL Serverget_table_sampleGet sample rows from a table, documents from a collection, hits from an index, or the first entries of a Redis keyrun_queryExecute a read-only SQL query (SELECT, WITH, and the engine's SHOW, DESCRIBE or EXPLAIN) on a MySQL, MariaDB, PostgreSQL, SQLite, SQL Server or ClickHouse connectionPaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"clickhouse-mcp-clickhouse": {
"command": "uvx",
"args": [
"mcp-clickhouse"
]
}
}
}
{
"mcpServers": {
"databases-read-only-switchable": {
"command": "npx",
"args": [
"-y",
"@shibbirweb/mcp-db-read-only"
]
}
}
}