Token导航 LogoToken导航TokenDH.com
MCP Clickhouse (Click House) logo
数据服务stdio官方级别未说明来源级核验

MCP Clickhouse (Click House)

MCP Server

一个为ClickHouse数据库提供SQL查询、数据库管理和表列表功能的MCP服务器,支持ClickHouse和chDB两种引擎。

工具数

4

提示词数

0

GitHub Stars

780

资源数

0
数据分析PythonClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ClickHouse

提供方

ClickHouse

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m pip install mcp-clickhouse

详细介绍

ClickHouse MCP服务器

](https://pypi.org/project/mcp-clickhouse)

ClickHouse的MCP服务器。

特性

ClickHouse工具

  • run_query

- 在ClickHouse集群上执行SQL查询。 - 输入: query (string):要执行的SQL查询。 - 默认情况下,查询以只读模式运行(CLICKHOUSE_ALLOW_WRITE_ACCESS=false),但如果需要,可以显式启用写入。

  • list_databases

- 列出ClickHouse集群上的所有数据库。

  • list_tables

- 使用分页列出数据库中的表。 - 所需输入: database (字符串)。 - 可选输入: - like / not_like (string):应用 LIKENOT LIKE 筛选表名。 - page_token (string):前一次调用返回的用于获取下一页的令牌。 - page_size (int,默认值 50):每页返回的表数。 - include_detailed_columns (bool,默认值 true):何时 false,省略了列元数据以获得更轻松的响应,同时保持完整 create_table_query. - 响应形状: - tables:当前页面的表对象数组。 - next_page_token:将此值传回以获取下一页,或 null 当没有更多的桌子时。 - total_tables:与提供的筛选器匹配的表总数。

chDB工具

  • run_chdb_select_query

- 使用以下命令执行SQL查询 chDB的嵌入式ClickHouse引擎。 - 输入: query (string):要执行的SQL查询。 - 直接从各种来源(文件、URL、数据库)查询数据,无需ETL过程。 - 需要可选 chdb 额外: pip install 'mcp-clickhouse[chdb]'

健康检查端点

当使用HTTP或SSE传输运行时,可以在以下位置使用健康检查端点 /health。此端点:

  • 退货 200 OK (主体: OK)如果服务器运行正常并且可以连接到ClickHouse
  • 退货 503 Service Unavailable 如果服务器无法连接到ClickHouse,则显示通用错误消息

端点故意未经身份验证,因此编排器探测器(例如Kubernetes活性/就绪性、负载均衡器)可以在没有凭据的情况下到达它。响应体故意最小化,以避免泄漏后端版本字符串或错误详细信息;通过服务器日志调试故障。

例子:

curl http://localhost:8000/health
# Response: OK

安全

HTTP/SSE传输的身份验证

使用HTTP或SSE传输时,身份验证是 默认情况下需要The stdio 传输(默认)不需要身份验证,因为它只通过标准输入/输出进行通信。

支持三种身份验证模式。选择一个:

模式何时使用环境变量
静态承载令牌简单部署,内部服务CLICKHOUSE_MCP_AUTH_TOKEN
OAuth/OIDC(通过FastMCP)Azure Entra、谷歌、GitHub、WorkOS等。`FASTMCP_SERVER_AUTH=

(+特定于提供商 FASTMCP_SERVER_AUTH_* ) 。 |残疾人|仅限当地发展| CLICKHOUSE_MCP_AUTH_DISABLED=true` |

如果这些都没有为HTTP/SSE传输配置,则启动失败。

设置身份验证

  1. 生成安全令牌(可以是任何随机字符串):
   # Using uuidgen (macOS/Linux)
   uuidgen

   # Using openssl
   openssl rand -hex 32
  1. 使用令牌配置服务器:
   export CLICKHOUSE_MCP_AUTH_TOKEN="your-generated-token"
  1. 配置您的MCP客户端以在请求中包含令牌:

对于采用HTTP/SSE传输的Claude Desktop:

   {
     "mcpServers": {
       "mcp-clickhouse": {
         "url": "http://127.0.0.1:8000",
         "headers": {
           "Authorization": "Bearer your-generated-token"
         }
       }
     }
   }

注: /health 端点故意未经身份验证(请参见 健康检查端点 上文)。要验证承载令牌身份验证是否实际拒绝了未经身份验证的请求,请点击MCP端点本身,例如使用MCP检查器,或通过向以下位置发送JSON-RPC请求 /mcp 有和没有 Authorization 标头并确认未经身份验证的呼叫返回 401.

通过FastMCP访问OAuth/OIDC

对于具有身份提供者(Azure Entra、Google、GitHub、WorkOS等)的生产部署,请将身份验证委托给 FastMCP的内置身份验证提供程序 而不是使用静态令牌。集 FASTMCP_SERVER_AUTH完整类路径 FastMCP身份验证提供者,以及特定于提供者的身份验证提供者 FASTMCP_SERVER_AUTH_* 变量,并离开 CLICKHOUSE_MCP_AUTH_TOKEN 未设置。

示例(Azure Entra):

export FASTMCP_SERVER_AUTH=fastmcp.server.auth.providers.azure.AzureProvider
export FASTMCP_SERVER_AUTH_AZURE_TENANT_ID=""
export FASTMCP_SERVER_AUTH_AZURE_CLIENT_ID=""
export FASTMCP_SERVER_AUTH_AZURE_CLIENT_SECRET=""

请参阅 FastMCP文档 查看完整的提供者列表及其所需的环境变量。

开发模式(禁用身份验证)

仅用于本地开发和测试,您可以通过设置禁用身份验证:

export CLICKHOUSE_MCP_AUTH_DISABLED=true

警告: 仅将其用于当地发展。当服务器暴露于任何网络时,不要禁用身份验证。

配置

此MCP服务器支持ClickHouse和chDB。您可以根据需要启用其中之一或两者。

  1. 打开位于以下位置的Claude Desktop配置文件:

- 在macOS上: ~/Library/Application Support/Claude/claude_desktop_config.json - 在Windows上: %APPDATA%/Claude/claude_desktop_config.json

  1. 添加以下内容:
{
  "mcpServers": {
    "mcp-clickhouse": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp-clickhouse",
        "--python",
        "3.10",
        "mcp-clickhouse"
      ],
      "env": {
        "CLICKHOUSE_HOST": "",
        "CLICKHOUSE_PORT": "",
        "CLICKHOUSE_USER": "",
        "CLICKHOUSE_PASSWORD": "",
        "CLICKHOUSE_ROLE": "",
        "CLICKHOUSE_SECURE": "true",
        "CLICKHOUSE_VERIFY": "true",
        "CLICKHOUSE_CONNECT_TIMEOUT": "30",
        "CLICKHOUSE_SEND_RECEIVE_TIMEOUT": "30"
      }
    }
  }
}

更新环境变量以指向您自己的ClickHouse服务。

或者,如果你想试试 ClickHouse SQL游乐场,您可以使用以下配置:

{
  "mcpServers": {
    "mcp-clickhouse": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp-clickhouse",
        "--python",
        "3.10",
        "mcp-clickhouse"
      ],
      "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"
      }
    }
  }
}

对于chDB(嵌入式ClickHouse引擎),添加以下配置:

{
  "mcpServers": {
    "mcp-clickhouse": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp-clickhouse[chdb]",
        "--python",
        "3.10",
        "mcp-clickhouse"
      ],
      "env": {
        "CHDB_ENABLED": "true",
        "CLICKHOUSE_ENABLED": "false",
        "CHDB_DATA_PATH": "/path/to/chdb/data"
      }
    }
  }
}

您还可以同时启用ClickHouse和chDB:

{
  "mcpServers": {
    "mcp-clickhouse": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp-clickhouse[chdb]",
        "--python",
        "3.10",
        "mcp-clickhouse"
      ],
      "env": {
        "CLICKHOUSE_HOST": "",
        "CLICKHOUSE_PORT": "",
        "CLICKHOUSE_USER": "",
        "CLICKHOUSE_PASSWORD": "",
        "CLICKHOUSE_SECURE": "true",
        "CLICKHOUSE_VERIFY": "true",
        "CLICKHOUSE_CONNECT_TIMEOUT": "30",
        "CLICKHOUSE_SEND_RECEIVE_TIMEOUT": "30",
        "CHDB_ENABLED": "true",
        "CHDB_DATA_PATH": "/path/to/chdb/data"
      }
    }
  }
}
  1. 找到以下命令项 uv 并将其替换为指向的绝对路径 uv 可执行。这确保了正确的版本 uv 启动服务器时使用。在mac上,您可以使用以下命令找到此路径 which uv.
  1. 重新启动Claude Desktop以应用更改。

可选写入权限

默认情况下,此MCP强制执行只读查询,以便在探索过程中不会发生意外突变。要允许DDL或INSERT/UPDATE语句,请设置 CLICKHOUSE_ALLOW_WRITE_ACCESS 环境变量 true。如果ClickHouse实例本身不允许写入,服务器将继续执行只读模式。

破坏性操作保护

即使启用了写访问(CLICKHOUSE_ALLOW_WRITE_ACCESS=true),破坏性操作(DROP TABLE、DROP DATABASE、DROP VIEW、DROP DICTIONRY、TRUNCATE TABLE)需要额外的选择加入标志以确保安全。这可以防止在人工智能探索过程中意外删除数据。

要启用破坏性操作,请设置两个标志:

"env": {
  "CLICKHOUSE_ALLOW_WRITE_ACCESS": "true",
  "CLICKHOUSE_ALLOW_DROP": "true"
}

这种双层方法确保了意外跌落非常困难:

  • 写入操作 (插入、更新、创建)需要 CLICKHOUSE_ALLOW_WRITE_ACCESS=true
  • 破坏性行动 (DROP,TRUNCATE)额外要求 CLICKHOUSE_ALLOW_DROP=true

在没有uv的情况下运行(使用Python系统)

如果你更喜欢使用Python系统安装而不是uv,你可以从PyPI安装包并直接运行它:

  1. 使用pip安装软件包:
   python3 -m pip install mcp-clickhouse

要安装chDB支持,请执行以下操作:

   python3 -m pip install 'mcp-clickhouse[chdb]'

要升级到最新版本:

   python3 -m pip install --upgrade mcp-clickhouse
  1. 更新您的Claude Desktop配置以直接使用Python:
{
  "mcpServers": {
    "mcp-clickhouse": {
      "command": "python3",
      "args": [
        "-m",
        "mcp_clickhouse.main"
      ],
      "env": {
        "CLICKHOUSE_HOST": "",
        "CLICKHOUSE_PORT": "",
        "CLICKHOUSE_USER": "",
        "CLICKHOUSE_PASSWORD": "",
        "CLICKHOUSE_SECURE": "true",
        "CLICKHOUSE_VERIFY": "true",
        "CLICKHOUSE_CONNECT_TIMEOUT": "30",
        "CLICKHOUSE_SEND_RECEIVE_TIMEOUT": "30"
      }
    }
  }
}

或者,您可以直接使用已安装的脚本:

{
  "mcpServers": {
    "mcp-clickhouse": {
      "command": "mcp-clickhouse",
      "env": {
        "CLICKHOUSE_HOST": "",
        "CLICKHOUSE_PORT": "",
        "CLICKHOUSE_USER": "",
        "CLICKHOUSE_PASSWORD": "",
        "CLICKHOUSE_SECURE": "true",
        "CLICKHOUSE_VERIFY": "true",
        "CLICKHOUSE_CONNECT_TIMEOUT": "30",
        "CLICKHOUSE_SEND_RECEIVE_TIMEOUT": "30"
      }
    }
  }
}

注意:确保使用Python可执行文件的完整路径或 mcp-clickhouse 如果它们不在您的系统PATH中,则执行脚本。您可以通过以下方式找到路径:

  • which python3 对于Python可执行文件
  • which mcp-clickhouse 对于已安装的脚本

自定义中间件

您可以在不修改源代码的情况下将自定义中间件添加到MCP服务器。FastMCP提供了一个中间件系统,允许您拦截和处理MCP协议消息(工具调用、资源读取、提示等)。

如何使用

  1. 创建一个带有扩展中间件类的Python模块 Middleware 和一个 setup_middleware(mcp) 功能:
# my_middleware.py
import logging
from fastmcp.server.middleware import Middleware, MiddlewareContext, CallNext

logger = logging.getLogger("my-middleware")

class LoggingMiddleware(Middleware):
    """Log all tool calls."""
    
    async def on_call_tool(self, context: MiddlewareContext, call_next: CallNext):
        tool_name = context.message.name if hasattr(context.message, 'name') else 'unknown'
        logger.info(f"Calling tool: {tool_name}")
        result = await call_next(context)
        logger.info(f"Tool {tool_name} completed")
        return result

def setup_middleware(mcp):
    """Register middleware with the MCP server."""
    mcp.add_middleware(LoggingMiddleware())
  1. 设置 MCP_MIDDLEWARE_MODULE 模块名称的环境变量(无 .py 扩展):
{
  "mcpServers": {
    "mcp-clickhouse": {
      "command": "uv",
      "args": ["run", "--with", "mcp-clickhouse", "--python", "3.10", "mcp-clickhouse"],
      "env": {
        "CLICKHOUSE_HOST": "",
        "CLICKHOUSE_USER": "",
        "CLICKHOUSE_PASSWORD": "",
        "MCP_MIDDLEWARE_MODULE": "my_middleware"
      }
    }
  }
}
  1. 确保您的中间件模块位于Python的导入路径中(例如,在MCP服务器运行的同一目录中,或作为包安装)。

中间件示例

示例中间件模块在 example_middleware.py 显示常见模式:

  • 记录所有MCP请求
  • 专门记录工具调用
  • 测量请求处理时间

举个例子:

"env": {
  "MCP_MIDDLEWARE_MODULE": "example_middleware"
}

中间件功能

Middleware 基类为不同的MCP操作提供钩子:

  • on_message(context, call_next) -呼叫所有消息
  • on_request(context, call_next) -呼吁所有请求
  • on_notification(context, call_next) -要求所有通知
  • on_call_tool(context, call_next) -执行工具时调用
  • on_read_resource(context, call_next) -读取资源时调用
  • on_get_prompt(context, call_next) -检索到提示时调用
  • on_list_tools(context, call_next) -列出工具时调用
  • on_list_resources(context, call_next) -列出资源时调用
  • on_list_resource_templates(context, call_next) -在列出资源模板时调用
  • on_list_prompts(context, call_next) -当列表提示时调用

每个钩子都有一个 MiddlewareContext 包含消息和元数据的对象,以及 call_next 函数以继续管道。

通过上下文状态进行动态客户端配置

中间件可以使用 CLIENT_CONFIG_OVERRIDES_KEY 上下文状态键。服务器将这些覆盖与环境变量中的基本配置合并。

from fastmcp.server.dependencies import get_context
from mcp_clickhouse.mcp_server import CLIENT_CONFIG_OVERRIDES_KEY

ctx = get_context()
ctx.set_state(CLIENT_CONFIG_OVERRIDES_KEY, {
    "connect_timeout": 60,
    "send_receive_timeout": 120
})

这支持高级用例,如动态超时调整、租户特定的路由或每个用户的连接设置。

发展

  1. test-services 目录运行 docker compose up -d 启动ClickHouse集群。
  1. 将以下变量添加到 .env 存储库根目录中的文件。

*注:使用 default 在此上下文中,用户仅用于本地开发目的。*

CLICKHOUSE_HOST=localhost
CLICKHOUSE_PORT=8123
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse
  1. uv sync 安装依赖项。安装 uv 遵循指示 这里。那就去吧 source .venv/bin/activate.
  1. 为了便于使用MCP检查器进行测试,请运行 fastmcp dev mcp_clickhouse/mcp_server.py 启动MCP服务器。
  1. 要使用HTTP传输和健康检查端点进行测试,请执行以下操作:
   # For development, disable authentication
   CLICKHOUSE_MCP_SERVER_TRANSPORT=http CLICKHOUSE_MCP_AUTH_DISABLED=true python -m mcp_clickhouse.main

   # Or with authentication (generate a token first)
   CLICKHOUSE_MCP_SERVER_TRANSPORT=http CLICKHOUSE_MCP_AUTH_TOKEN="your-token" python -m mcp_clickhouse.main

   # Then in another terminal:
   curl http://localhost:8000/health

环境变量

以下环境变量用于配置ClickHouse和chDB连接:

ClickHouse变量

必需变量

  • CLICKHOUSE_HOST:ClickHouse服务器的主机名
  • CLICKHOUSE_USER:用于身份验证的用户名
  • CLICKHOUSE_PASSWORD:身份验证密码
\[!小心\] 将MCP数据库用户视为连接到数据库的任何外部客户端,只授予其操作所需的最低权限,这一点很重要。应始终严格避免使用默认用户或管理用户。

可选变量

  • CLICKHOUSE_PORT:ClickHouse服务器的端口号

- 违约: 8443 如果启用了HTTPS, 8123 如果禁用 - 通常不需要设置,除非使用非标准端口

  • CLICKHOUSE_ROLE:用于身份验证的角色

- 默认值:无 - 如果您的用户需要特定角色,请设置此项

  • CLICKHOUSE_SECURE:启用/禁用HTTPS连接

- 违约: "true" - 设置为 "false" 用于非安全连接

  • CLICKHOUSE_VERIFY:启用/禁用SSL证书验证

- 违约: "true" - 设置为 "false" 禁用证书验证(不建议用于生产) - TLS证书:该包通过以下方式使用您的操作系统信任存储进行TLS证书验证 truststore.我们打电话 truststore.inject_into_ssl() 在启动时,确保正确处理证书。Python的默认SSL行为仅在发生意外错误时用作回退。

  • CLICKHOUSE_SERVER_HOST_NAME:用于SNI覆盖和证书验证的服务器主机名

- 默认值:无(使用连接主机名) - 当通过代理或负载均衡器连接时,这很有用,因为证书主机名与连接主机名不同。设置后,此主机名将用于TLS握手期间的SNI(服务器名称指示)和证书主机名验证。

  • CLICKHOUSE_CONNECT_TIMEOUT:连接超时(秒)

- 违约: "30" - 如果遇到连接超时,请增加此值

  • CLICKHOUSE_SEND_RECEIVE_TIMEOUT:发送/接收超时(秒)

- 违约: "300" - 为长时间运行的查询增加此值

  • CLICKHOUSE_DATABASE:要使用的默认数据库

- 默认值:无(使用服务器默认值) - 将其设置为自动连接到特定数据库

  • CLICKHOUSE_MCP_SERVER_TRANSPORT:设置MCP服务器的传输方法。

- 违约: "stdio" - 有效选项: "stdio", "http", "sse"这对于使用MCP Inspector等工具进行本地开发非常有用。

  • CLICKHOUSE_MCP_BIND_HOST:使用HTTP或SSE传输时将MCP服务器绑定到的主机

- 违约: "127.0.0.1" - 设置为 "0.0.0.0" 绑定到所有网络接口(对Docker或远程访问有用) - 仅在运输时使用 "http""sse"

  • CLICKHOUSE_MCP_BIND_PORT:使用HTTP或SSE传输时绑定MCP服务器的端口

- 违约: "8000" - 仅在运输时使用 "http""sse"

  • CLICKHOUSE_MCP_QUERY_TIMEOUT:SELECT工具超时(秒)

- 违约: "30" - 如果你看到,请增加此值 Query timed out after ... 繁重查询的错误

  • CLICKHOUSE_MCP_AUTH_TOKEN:HTTP/SSE传输的静态承载令牌

- 默认值:无 - 之一 CLICKHOUSE_MCP_AUTH_TOKEN, FASTMCP_SERVER_AUTH,或 CLICKHOUSE_MCP_AUTH_DISABLED=true必需的 用于HTTP/SSE传输 - 使用生成 uuidgenopenssl rand -hex 32 - 客户端必须在 Authorization: Bearer 头球

- 默认值:无 - 价值是 完整类路径 AuthProvider子类,例如。 fastmcp.server.auth.providers.azure.AzureProviderfastmcp.server.auth.providers.google.GoogleProvider - 设置后,FastMCP会自动从自己的提供者加载提供者 FASTMCP_SERVER_AUTH_* 环境变量;离开 CLICKHOUSE_MCP_AUTH_TOKEN 在此模式下未设置

  • CLICKHOUSE_MCP_AUTH_DISABLED:禁用HTTP/SSE传输的身份验证

- 违约: "false" (已启用身份验证) - 设置为 "true" 仅禁用本地开发/测试的身份验证 - 警告: 仅用于当地发展。暴露在网络中时不要禁用

  • CLICKHOUSE_ENABLED:启用/禁用ClickHouse功能

- 违约: "true" - 设置为 "false" 仅使用chDB时禁用ClickHouse工具

  • CLICKHOUSE_ALLOW_WRITE_ACCESS:允许写操作(DDL和DML)

- 违约: "false" - 设置为 "true" 允许DDL(CREATE、ALTER、DROP)和DML(INSERT、UPDATE、DELETE)操作 - 禁用(默认)时,查询将与 readonly=1 设置以防止数据修改

  • CLICKHOUSE_ALLOW_DROP:允许破坏性操作(DROP TABLE、DROP DATABASE、DROP VIEW、DROP DICTIONRY、TRUNCATE TABLE)

- 违约: "false" - 仅在以下情况下生效 CLICKHOUSE_ALLOW_WRITE_ACCESS=true 也已设置 - 设置为 "true" 明确允许破坏性的DROP和TRUNCATE操作 - 这是一种安全功能,可防止在人工智能探索过程中意外删除数据

中间件变量

  • MCP_MIDDLEWARE_MODULE:包含要注入MCP服务器的自定义中间件的Python模块名称

- 默认值:无(未加载中间件) - 设置为模块名称(无 .py 中间件模块的扩展 - 该模块必须提供 setup_middleware(mcp) 功能 - 看 自定义中间件 详细信息和示例

chDB变量

  • CHDB_ENABLED:启用/禁用chDB功能

- 违约: "false" - 设置为 "true" 启用chDB工具 - 需要安装可选的附加组件: mcp-clickhouse[chdb]

  • CHDB_DATA_PATH:chDB数据目录的路径

- 违约: ":memory:" (内存数据库) - 使用 :memory: 用于内存数据库 - 使用文件路径进行持久存储(例如。, /path/to/chdb/data)

示例配置

使用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

对于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

对于ClickHouse SQL游乐场:

CLICKHOUSE_HOST=sql-clickhouse.clickhouse.com
CLICKHOUSE_USER=demo
CLICKHOUSE_PASSWORD=
# Uses secure defaults (HTTPS on port 8443)

仅适用于chDB(内存中):

# chDB configuration
CHDB_ENABLED=true
CLICKHOUSE_ENABLED=false
# CHDB_DATA_PATH defaults to :memory:

对于具有持久存储的chDB:

# chDB configuration
CHDB_ENABLED=true
CLICKHOUSE_ENABLED=false
CHDB_DATA_PATH=/path/to/chdb/data

对于MCP检查器或使用HTTP传输的远程访问:

CLICKHOUSE_HOST=localhost
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse
CLICKHOUSE_MCP_SERVER_TRANSPORT=http
CLICKHOUSE_MCP_BIND_HOST=0.0.0.0  # Bind to all interfaces
CLICKHOUSE_MCP_BIND_PORT=4200  # Custom port (default: 8000)
CLICKHOUSE_MCP_AUTH_TOKEN=your-generated-token  # One auth mode required for HTTP/SSE (or FASTMCP_SERVER_AUTH, or CLICKHOUSE_MCP_AUTH_DISABLED=true)

对于使用HTTP传输(禁用身份验证)的本地开发:

CLICKHOUSE_HOST=localhost
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse
CLICKHOUSE_MCP_SERVER_TRANSPORT=http
CLICKHOUSE_MCP_AUTH_DISABLED=true  # Only for local development!

使用HTTP传输时,服务器将在配置的端口(默认8000)上运行。例如,在上述配置中:

  • MCP端点: http://localhost:4200/mcp
  • 健康检查: http://localhost:4200/health

您可以在环境中设置这些变量 .env 或者在Claude Desktop配置中:

{
  "mcpServers": {
    "mcp-clickhouse": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp-clickhouse",
        "--python",
        "3.10",
        "mcp-clickhouse"
      ],
      "env": {
        "CLICKHOUSE_HOST": "",
        "CLICKHOUSE_USER": "",
        "CLICKHOUSE_PASSWORD": "",
        "CLICKHOUSE_DATABASE": "",
        "CLICKHOUSE_MCP_SERVER_TRANSPORT": "stdio",
        "CLICKHOUSE_MCP_BIND_HOST": "127.0.0.1",
        "CLICKHOUSE_MCP_BIND_PORT": "8000"
      }
    }
  }
}

注意:绑定主机和端口设置仅在传输设置为“http”或“sse”时使用。

运行测试

uv sync --all-extras --dev # install dev dependencies
uv run ruff check . # run linting

docker compose up -d test_services # start ClickHouse
uv run pytest -v tests
uv run pytest -v tests/test_tool.py # ClickHouse only
CHDB_ENABLED=true uv run --extra chdb pytest -v tests/test_chdb_tool.py # chDB only

YouTube概述

![YouTube](https://www.youtube.com/watch?v=y9biAm_Fkqw)

目录标签

目录标签

数据分析PythonClaude数据库查询本地部署ClickHouse工具SQL执行数据库管理

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauthremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP