Install
openclaw skills install @volcengine-skills/byted-bytehouse-mcp在本地拉起ByteHouse MCP Server并调用其tools的技能,用于连接ByteHouse数据库查询数据、使用MCP协议与ByteHouse交互、生成数据资产目录和血缘分析。当用户需要连接ByteHouse数据库查询数据、使用MCP协议与ByteHouse交互、生成数据资产目录和血缘分析时,使用此Skill。
openclaw skills install @volcengine-skills/byted-bytehouse-mcp「ByteHouse」—— 火山引擎云原生数据仓库,极速、稳定、安全、易用
本Skill基于ByteHouse官方MCP Server,提供完整的ByteHouse数据访问能力
在本地拉起ByteHouse MCP Server并调用其tools的技能。
当以下情况时使用此 Skill: (1) 需要连接ByteHouse数据库查询数据 (2) 需要使用MCP协议与ByteHouse交互 (3) 用户提到"ByteHouse"、"MCP"、"查询数据库"、"看表" (4) 需要生成数据资产目录和血缘分析
/root/.local/bin/uv){
"host": "<ByteHouse-host>",
"port": "<ByteHouse-port>",
"user": "<ByteHouse-user>",
"password": "<ByteHouse-password>",
"secure": true,
"verify": true
}
在使用前请设置以下环境变量:
export BYTEHOUSE_HOST="<ByteHouse-host>"
export BYTEHOUSE_PORT="<ByteHouse-port>"
export BYTEHOUSE_USER="<ByteHouse-user>"
export BYTEHOUSE_PASSWORD="<ByteHouse-password>"
export BYTEHOUSE_SECURE="true"
export BYTEHOUSE_VERIFY="true"
export BYTEHOUSE_CONNECT_TIMEOUT="30"
export BYTEHOUSE_SEND_RECEIVE_TIMEOUT="30"
| 序号 | Tool名称 | 功能描述 |
|---|---|---|
| 1 | list_databases | 列出所有数据库 |
| 2 | list_tables | 列出指定数据库中的所有表 |
| 3 | run_select_query | 运行SELECT查询 |
| 4 | run_dml_ddl_query | 运行DML/DDL查询 |
| 5 | get_bytehouse_table_engine_doc | 获取ByteHouse表引擎文档 |
cd /root/.openclaw/workspace/skills/bytehouse-mcp
# 先设置环境变量,然后运行
uv run test_mcp_server.py
这会:
cd /root/.openclaw/workspace/skills/bytehouse-mcp
# 先设置环境变量,然后运行
uv run test_list_tables.py
cd /root/.openclaw/workspace/skills/bytehouse-mcp
# 先设置环境变量,然后运行
uv run query_top10_tables_mcp.py
cd /root/.openclaw/workspace/skills/bytehouse-mcp
# 先设置环境变量,然后运行
uv run data_asset_analyzer.py
这会:
output/ 目录输出内容包括:
cd /root/.openclaw/workspace/skills/bytehouse-mcp
# 先在脚本中配置环境变量,然后运行
./start_mcp_service.sh
这会:
mcp_server.pidlogs/mcp_server_*.log./status_mcp_service.sh
./stop_mcp_service.sh
./restart_mcp_service.sh
data_asset_analyzer.py 提供以下功能:
完整Schema获取
数据资产目录生成
血缘分析
#!/usr/bin/env python3
# /// script
# dependencies = [
# "mcp>=1.0.0",
# ]
# ///
import asyncio
from data_asset_analyzer import DataAssetAnalyzer
async def main():
analyzer = DataAssetAnalyzer()
await analyzer.connect()
# 分析数据库
result = await analyzer.analyze_database("default")
# result 包含:
# - schema: 完整的数据库schema
# - catalog: 数据资产目录
# - lineage: 血缘分析
# - files: 生成的文件路径
asyncio.run(main())
分析完成后会在 output/ 目录生成以下文件:
#!/usr/bin/env python3
# /// script
# dependencies = [
# "mcp>=1.0.0",
# ]
# ///
import asyncio
from mcp_client import ByteHouseMCPClient
async def main():
async with ByteHouseMCPClient() as client:
await client.connect()
# 1. 列出所有tools
tools = await client.list_tools()
print("可用的tools:", [t['name'] for t in tools])
# 2. 调用tool
# result = await client.call_tool("tool_name", {"param": "value"})
# print(result)
asyncio.run(main())
#!/usr/bin/env python3
# /// script
# dependencies = [
# "mcp>=1.0.0",
# ]
# ///
import asyncio
import os
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def main():
# 设置环境变量(请自行配置)
env = os.environ.copy()
env.update({
'BYTEHOUSE_HOST': '<ByteHouse-host>',
'BYTEHOUSE_PORT': '<ByteHouse-port>',
'BYTEHOUSE_USER': '<ByteHouse-user>',
'BYTEHOUSE_PASSWORD': '<ByteHouse-password>',
'BYTEHOUSE_SECURE': 'true',
'BYTEHOUSE_VERIFY': 'true',
})
# MCP Server参数
server_params = StdioServerParameters(
command='/root/.local/bin/uvx',
args=[
'--from',
'git+https://github.com/volcengine/mcp-server@main#subdirectory=server/mcp_server_bytehouse',
'mcp_bytehouse',
'-t',
'stdio'
],
env=env
)
# 启动MCP Server并连接
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# 列出tools
result = await session.list_tools()
print("Tools:", [t.name for t in result.tools])
# 调用tool
# call_result = await session.call_tool("tool_name", {"param": "value"})
asyncio.run(main())
# 先配置环境变量,然后运行
./start_mcp_service.sh
./status_mcp_service.sh
# 查看最新日志
tail -f logs/mcp_server_*.log
# 查看特定日志文件
tail -f logs/mcp_server_20260312_184500.log
./stop_mcp_service.sh
./restart_mcp_service.sh
import asyncio
import os
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def main():
# 设置环境变量(请自行配置)
env = os.environ.copy()
env.update({
'BYTEHOUSE_HOST': '<ByteHouse-host>',
'BYTEHOUSE_PORT': '<ByteHouse-port>',
'BYTEHOUSE_USER': '<ByteHouse-user>',
'BYTEHOUSE_PASSWORD': '<ByteHouse-password>',
'BYTEHOUSE_SECURE': 'true',
'BYTEHOUSE_VERIFY': 'true',
})
server_params = StdioServerParameters(
command='/root/.local/bin/uvx',
args=[
'--from',
'git+https://github.com/volcengine/mcp-server@main#subdirectory=server/mcp_server_bytehouse',
'mcp_bytehouse',
'-t',
'stdio'
],
env=env
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# 调用list_databases
result = await session.call_tool("list_databases", {})
for content in result.content:
if content.type == 'text':
print(content.text)
asyncio.run(main())
# 调用list_tables
result = await session.call_tool("list_tables", {"database": "default"})
# 调用run_select_query
sql = "SELECT * FROM default.conversation_feedback LIMIT 10"
result = await session.call_tool("run_select_query", {"query": sql})
# 查询Top 10大表
sql = """
SELECT
database,
table,
sum(bytes) as total_bytes,
sum(rows) as total_rows
FROM system.parts
WHERE active = 1
GROUP BY database, table
ORDER BY total_bytes DESC
LIMIT 10
"""
result = await session.call_tool("run_select_query", {"query": sql})
最后更新: 2026-03-12