Skip to main content
Glama
kevinkda

clickhouse-mcp

by kevinkda

clickhouse-mcp

test

中文 README

A read-only Model Context Protocol (MCP) server that queries a USA-market ClickHouse warehouse — 1.49 billion rows of 1-minute bars across 1,388 symbols (1991–2026) plus L1 aggregates and L2 materialised technical indicators — and exposes it to MCP-aware agents for large-scale, cross-sectional quant analysis that single-symbol REST MCP servers cannot do.

It is the 6th read-only server in the kevinkda MCP ecosystem (schwab-marketdata / schwab-positions / sec-edgar / polygon-news / yfinance), and deliberately stays independent because its authentication (ClickHouse host/user/password) and data shape (columnar deep history) differ from the REST-based siblings.

Tools (7, all read-only)

Tool

Purpose

get_ohlcv

OHLCV bars for one symbol over a date range at 1m/5m/15m/1h/1d/1w

get_indicators

One materialised / runtime indicator series (ma20, rsi14, macd_hist, …)

screen_stocks

Full-market technical-indicator scan (e.g. "today's RSI<30 oversold list")

get_correlation_matrix

Pairwise return-correlation matrix for 2–50 symbols (Pearson / Spearman)

run_safe_sql

Disabled by default raw-SQL escape hatch (single read-only SELECT only)

health_check

Local probe + optional ClickHouse reachability check

get_server_info

Version + tool list (offline)

Related MCP server: clickhouse-mcp-server

Quickstart

git clone https://github.com/kevinkda/clickhouse-mcp
cd clickhouse-mcp
uv sync --extra dev
cp .env.example .env   # then fill in your read-only ClickHouse connection

Configure the connection in .env (see Security):

CLICKHOUSE_MCP_HOST=your-clickhouse-host
CLICKHOUSE_MCP_HTTP_PORT=8123
CLICKHOUSE_MCP_USER=mcp_readonly
CLICKHOUSE_MCP_PASSWORD=...
CLICKHOUSE_MCP_DATABASE=usa

Run it:

uv run clickhouse-mcp

Register with an MCP client

{
  "mcpServers": {
    "clickhouse": {
      "command": "uv",
      "args": ["run", "clickhouse-mcp"],
      "cwd": "/absolute/path/to/clickhouse-mcp",
      "env": {
        "CLICKHOUSE_MCP_HOST": "your-clickhouse-host",
        "CLICKHOUSE_MCP_HTTP_PORT": "8123",
        "CLICKHOUSE_MCP_USER": "mcp_readonly",
        "CLICKHOUSE_MCP_PASSWORD": "...",
        "CLICKHOUSE_MCP_DATABASE": "usa"
      }
    }
  }
}

Security

This server touches financial data, so it is hardened accordingly. See docs/SECURITY.md and docs/THREAT_MODEL.md.

  • Dedicated read-only ClickHouse account — point CLICKHOUSE_MCP_USER at an account created with readonly = 1 and GRANT SELECT only, never an admin user. Defence in depth: every query is also issued with the ClickHouse session setting readonly=1 plus max_execution_time / max_result_rows guardrails.

  • Parameterised, never concatenatedget_ohlcv / get_indicators / screen_stocks / get_correlation_matrix validate every symbol / indicator / date through anchored regexes + allow-lists and bind them as ClickHouse query parameters. User input never lands in the SQL string.

  • run_safe_sql disabled by default — gated behind CLICKHOUSE_MCP_ALLOW_RAW_SQL=true; even when enabled it enforces SELECT-only single statements, rejects DDL/DML + comments, forces a LIMIT, and inherits readonly=1 + the resource guardrails.

  • SSRF-safe — the ClickHouse host is read from env at startup and is never derived from tool input; no argument can redirect the outbound connection.

  • Credentials redacted — every exception runs its text through redact_secrets, so a password / DSN can never leak via repr(exc) or logs.

Quant use cases unlocked

CH is the "full-market + deep-history + batch" engine; the REST MCP siblings are "real-time + fundamentals + news". Together they close the loop:

  • Full-market technical scan — RSI/MACD/Bollinger/MA signals across all 1,388 symbols (single-symbol MCP cannot scan the market).

  • Cross-sectional factor ranking — value/momentum/quality scoring across the universe on a columnar store.

  • Multi-symbol correlation matrix — portfolio / pairs prerequisite; CH batch read beats fetching symbols one at a time.

  • Cross-source quant playbook — CH historical signal → schwab real-time price → sec-edgar fundamentals → polygon news.

Development

bash scripts/local-ci.sh   # ruff + mypy + bandit + pip-audit + pytest (100% cov)

Tests never touch a live ClickHouse — clickhouse_connect is mocked.

License

MIT — see LICENSE.

Available Tools

7 tools
get_correlation_matrixB

Return the pairwise return-correlation matrix for 2-50 symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
startYes
methodNopearson
symbolsYes
frequencyNo1d

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden but only discloses the output type (correlation matrix) and symbol count constraint. It fails to mention data source, rate limits, return computation assumptions, or handling of edge cases like missing data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the key purpose. However, the brevity sacrifices some necessary detail, balancing conciseness with completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 params, no param descriptions, no annotations), the description is too minimal. It lacks sufficient context for an agent to correctly invoke the tool, though the existence of an output schema slightly reduces the burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite having 5 parameters (3 required) and 0% schema description coverage, the description only adds meaning to the 'symbols' parameter by noting the 2-50 constraint. It does not explain 'start', 'end', 'method', or 'frequency' beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb 'Return', the resource 'pairwise return-correlation matrix', and the constraint '2-50 symbols'. It effectively distinguishes this tool from siblings like get_indicators and get_ohlcv.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for correlation analysis but lacks explicit guidance on when to use this tool versus alternatives or when not to use it. No alternatives or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_indicatorsC

Return one technical-indicator series (e.g. ma20, rsi14, macd_hist).

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
limitNo
startYes
symbolYes
frequencyNo1d
indicatorYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as data availability, error handling, or idempotency. It only states it returns a series, with no mention of side effects or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, concise sentence with no superfluous information. The example list is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters (4 required) and no schema descriptions, the description is too brief. It fails to explain parameter formats, defaults, or relationships. Even with an output schema, the input side is poorly specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning parameters have no descriptions. The tool description does not explain any parameters (e.g., start/end as date strings, frequency, limit). It only gives indicator examples, which is insufficient for understanding all 6 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns one technical-indicator series, with specific examples (ma20, rsi14, macd_hist). It distinguishes from sibling tools like get_ohlcv (raw price data) and screen_stocks (stock screening).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not specify prerequisites, limitations (e.g., single indicator only), or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ohlcvA

Return OHLCV bars for one symbol over [start, end] at frequency.

frequency is one of 1m/5m/15m/1h/1d/1w. start / end are ISO dates (YYYY-MM-DD), inclusive.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
limitNo
startYes
symbolYes
frequencyNo1d

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must communicate side effects and constraints. It indicates a read-only retrieval (no mutability hinted) and specifies date/frequency formats. However, it omits details like the limit parameter's behavior, default values, or potential errors (e.g., invalid symbol).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences plus a brief format note. Every sentence adds value, and the core purpose is front-loaded in the first sentence. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an existing output schema, the description lacks completeness for a 5-parameter tool. It covers three parameters (frequency, start, end) but omits symbol and limit context. Ordering of bars (chronological?) is also unspecified, leaving room for ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains frequency and date formats but fails to describe 'symbol' (what constitutes a valid stock symbol) and 'limit' (what it limits—likely number of bars). Given 0% schema coverage, the description only partially compensates, leaving two of five parameters unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Return'), the resource ('OHLCV bars'), and the constraints ('one symbol', date range, frequency). This distinguishes it from sibling tools like get_correlation_matrix or get_indicators, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving OHLCV data but provides no explicit guidance on when to prefer this tool over alternatives (e.g., get_indicators for derived metrics). No when-not-to-use scenarios are mentioned, leaving the agent to infer context from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_server_infoA

Local server metadata. Never calls ClickHouse.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. Mentions 'Never calls ClickHouse' as a key behavioral trait, but lacks details on auth requirements or whether it's read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no wasted words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description is complete for a simple zero-parameter tool with output schema. Could mention when to use instead of sibling 'health_check'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters (0 params), so baseline is 4. Description adds context that tool returns 'Local server metadata' beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states tool returns local server metadata and distinguishes from sibling tools by noting it never calls ClickHouse. Verb is implied but clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context that this tool is for metadata without ClickHouse calls, but does not explicitly state when to use other tools or provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

health_checkA

Local health probe + optional ClickHouse reachability check.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for disclosure. It mentions health probing and an optional ClickHouse check but does not specify behavior such as read-only nature, failure states, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the purpose. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and presence of an output schema, the description is mostly adequate but does not clarify what 'local health probe' entails or the scope of the check.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema description coverage is 100%. Baseline 3 applies as the description adds no additional meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it performs a local health probe with an optional ClickHouse reachability check. This specific verb+resource combination distinguishes it from sibling tools which focus on data retrieval (get_*), SQL execution (run_safe_sql), and stock screening.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for health checks, but provides no explicit guidance on when to use this tool versus alternatives. It lacks statements about prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_safe_sqlA

Run a single read-only SELECT (DISABLED by default).

Off unless CLICKHOUSE_MCP_ALLOW_RAW_SQL=true. Even when enabled only single read-only SELECT statements are allowed (readonly=1, forced LIMIT, execution-time + result-row guardrails). Prefer the structured tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavioral traits: read-only mode, forced LIMIT, execution-time and result-row guardrails, and requirement for CLICKHOUSE_MCP_ALLOW_RAW_SQL=true. It does not contradict any annotations as none exist. Minor gap: no mention of error handling or response format, but output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two short sections, front-loading the main purpose. However, it could be slightly better structured (e.g., bullet points for constraints). Still efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (raw SQL execution), the absence of annotations, and the existence of an output schema, the description covers safety and constraints but lacks parameter details and usage examples. It is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameters. It mentions 'forced LIMIT' but does not detail the 'limit' parameter or explain 'query' format/syntax. The description adds minimal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a single read-only SELECT query, which is a specific verb-resource combination. It distinguishes from sibling tools by emphasizing 'prefer the structured tools' and highlighting the raw SQL nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use (when raw SQL is needed but only read-only), warns it is disabled by default, requires an environment variable, and advises preferring structured tools. This provides clear guidance and exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screen_stocksA

Full-market technical-indicator scan.

filters is a list of {indicator, operator, value} where operator is one of gt/gte/lt/lte/eq (e.g. [{"indicator": "rsi14", "operator": "lt", "value": 30}] for an oversold screen). as_of is an ISO date or omitted for latest.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNo
limitNo
filtersYes
frequencyNo1d

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It only covers parameter semantics but does not mention limitations, rate limits, auth requirements, or that it is a read operation (e.g., no destructive actions indicated). The description is insufficient for behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and includes a concise code example. Every sentence adds value, and it is well-structured with line breaks separating the summary and parameter details. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters (1 required) and an output schema, the description covers the core parameters but omits 'limit' and 'frequency' entirely. Without explaining these, the agent lacks complete context for using the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description explains 'filters' in detail (structure with indicators/operator/value) and 'as_of' as ISO date. However, 'limit' and 'frequency' are not described, so the description only partially compensates for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Full-market technical-indicator scan' clearly states the tool's purpose and resource. It differentiates from siblings like 'get_correlation_matrix' and 'get_ohlcv' by focusing on scanning based on indicators, but does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the input format with an example ('filters' list with operator/value) and mentions 'as_of' is optional. It implicitly tells when to use (for screening stocks), but lacks explicit when-not-to-use or alternative tool references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv0.1.1
    • First observedget_correlation_matrix
    • First observedget_indicators
    • First observedget_ohlcv
    • First observedget_server_info
    • First observedhealth_check
    • First observedrun_safe_sql
    • First observedscreen_stocks

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a clear unique purpose: get_correlation_matrix for correlations, get_indicators for single indicator series, get_ohlcv for price data, screen_stocks for market scans, plus server info, health, and raw SQL. No two tools overlap in functionality.

Naming Consistency3/5

Naming uses snake_case but mixes verbs: most start with 'get_' (4 tools), but health_check, run_safe_sql, and screen_stocks use different verb patterns. While readable, the inconsistency could cause minor confusion.

Tool Count5/5

With 7 tools, the set is well-scoped for a financial data server. It covers core operations without being bloated or sparse.

Completeness4/5

The server covers essential read-only financial data operations (OHLCV, indicators, correlations, scanning). A minor gap is the lack of a tool to list available symbols, but the screen_stocks tool can partially compensate. Raw SQL access is available as a fallback.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A read-only MCP server for exploratory data analysis across PostgreSQL, MySQL, and ClickHouse databases, providing safe, read-only access with comprehensive analysis capabilities.
    10
    6
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A read-only MCP server for ClickHouse that enables metadata discovery, parameterized SELECT queries, SHOW introspection, query analysis, and snapshot mode for large result sets, with profile-based configuration and strict no-DML/DDL enforcement.
    8
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Read-only MCP server that provides enterprise research frameworks, frozen snapshots, and historical factor summaries with sources and falsification conditions, without trading advice.
    6
    1
    MIT

Latest Blog Posts

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/kevinkda/clickhouse-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server