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):应用 LIKE 或 NOT 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传输配置,则启动失败。
设置身份验证
- 生成安全令牌(可以是任何随机字符串):
# Using uuidgen (macOS/Linux)
uuidgen
# Using openssl
openssl rand -hex 32- 使用令牌配置服务器:
export CLICKHOUSE_MCP_AUTH_TOKEN="your-generated-token"- 配置您的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。您可以根据需要启用其中之一或两者。
- 打开位于以下位置的Claude Desktop配置文件:
- 在macOS上: ~/Library/Application Support/Claude/claude_desktop_config.json - 在Windows上: %APPDATA%/Claude/claude_desktop_config.json
- 添加以下内容:
{
"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"
}
}
}
}- 找到以下命令项
uv并将其替换为指向的绝对路径uv可执行。这确保了正确的版本uv启动服务器时使用。在mac上,您可以使用以下命令找到此路径which uv.
- 重新启动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安装包并直接运行它:
- 使用pip安装软件包:
python3 -m pip install mcp-clickhouse要安装chDB支持,请执行以下操作:
python3 -m pip install 'mcp-clickhouse[chdb]'要升级到最新版本:
python3 -m pip install --upgrade mcp-clickhouse- 更新您的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协议消息(工具调用、资源读取、提示等)。
如何使用
- 创建一个带有扩展中间件类的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())- 设置
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"
}
}
}
}- 确保您的中间件模块位于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
})这支持高级用例,如动态超时调整、租户特定的路由或每个用户的连接设置。
发展
- 在
test-services目录运行docker compose up -d启动ClickHouse集群。
- 将以下变量添加到
.env存储库根目录中的文件。
*注:使用 default 在此上下文中,用户仅用于本地开发目的。*
CLICKHOUSE_HOST=localhost
CLICKHOUSE_PORT=8123
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse- 跑
uv sync安装依赖项。安装uv遵循指示 这里。那就去吧source .venv/bin/activate.
- 为了便于使用MCP检查器进行测试,请运行
fastmcp dev mcp_clickhouse/mcp_server.py启动MCP服务器。
- 要使用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传输 - 使用生成 uuidgen 或 openssl rand -hex 32 - 客户端必须在 Authorization: Bearer 头球
FASTMCP_SERVER_AUTH:将身份验证委托给 FastMCP身份验证提供者
- 默认值:无 - 价值是 完整类路径 AuthProvider子类,例如。 fastmcp.server.auth.providers.azure.AzureProvider 或 fastmcp.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 onlyYouTube概述

