이 가이드에서는 Claude Agent SDK를 사용해 ClickHouse MCP 서버를 통해 ClickHouse SQL playground와 상호작용할 수 있는 AI 에이전트를 구축하는 방법을 알아봅니다.
사전 요구 사항
- 시스템에 Python이 설치되어 있어야 합니다.
- 시스템에
pip가 설치되어 있어야 합니다. - Anthropic API Key가 필요합니다.
다음 단계는 Python REPL 또는 스크립트에서 실행할 수 있습니다.
라이브러리 설치
다음 명령을 실행하여 Claude Agent SDK 라이브러리를 설치하십시오.
pip install -q --upgrade pip
pip install -q claude-agent-sdk
pip install -q ipywidgets자격 증명 설정
다음으로, Anthropic API Key를 입력해야 합니다.
import os, getpass
os.environ["ANTHROPIC_API_KEY"] = getpass.getpass("Enter Anthropic API Key:")Enter Anthropic API Key: ········다음으로, ClickHouse SQL playground에 연결하는 데 필요한 자격 증명을 정의합니다.
env = {
"CLICKHOUSE_HOST": "sql-clickhouse.clickhouse.com",
"CLICKHOUSE_PORT": "8443",
"CLICKHOUSE_USER": "demo",
"CLICKHOUSE_PASSWORD": "",
"CLICKHOUSE_SECURE": "true"
}MCP 서버와 Claude Agent SDK 에이전트 초기화
이제 ClickHouse MCP 서버가 ClickHouse SQL playground를 가리키도록 구성한 후, 에이전트를 초기화하고 질문을 하나 해보겠습니다.
from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, UserMessage, TextBlock, ToolUseBlockoptions = ClaudeAgentOptions(
allowed_tools=[
"mcp__mcp-clickhouse__list_databases",
"mcp__mcp-clickhouse__list_tables",
"mcp__mcp-clickhouse__run_select_query",
"mcp__mcp-clickhouse__run_chdb_select_query"
],
mcp_servers={
"mcp-clickhouse": {
"command": "uv",
"args": [
"run",
"--with", "mcp-clickhouse",
"--python", "3.10",
"mcp-clickhouse"
],
"env": env
}
}
)
async for message in query(prompt="Tell me something interesting about UK property sales", options=options):
if isinstance(message, AssistantMessage):
for block in message.content:
if isinstance(block, TextBlock):
print(f"🤖 {block.text}")
if isinstance(block, ToolUseBlock):
print(f"🛠️ {block.name} {block.input}")
elif isinstance(message, UserMessage):
for block in message.content:
if isinstance(block, TextBlock):
print(block.text)간결하게 보여주기 위해 for 블록 내부의 코드는 출력을 필터링합니다.
🤖 ClickHouse 데이터베이스를 쿼리하여 영국 부동산 거래와 관련된 흥미로운 내용을 찾아보겠습니다.
먼저 사용 가능한 데이터베이스를 확인하겠습니다.
🛠️ mcp__mcp-clickhouse__list_databases {}
🤖 좋습니다! "uk" 데이터베이스가 있습니다. 이제 어떤 테이블을 사용할 수 있는지 살펴보겠습니다.
🛠️ mcp__mcp-clickhouse__list_tables {'database': 'uk'}
🤖 좋습니다! `uk_price_paid` 테이블에는 3천만 건이 넘는 부동산 거래 기록이 있습니다. 흥미로운 내용을 찾아보겠습니다.
🛠️ mcp__mcp-clickhouse__run_select_query {'query': "\nSELECT \n street,\n town,\n max(price) as max_price,\n min(price) as min_price,\n max(price) - min(price) as price_difference,\n count() as sales_count\nFROM uk.uk_price_paid\nWHERE street != ''\nGROUP BY street, town\nHAVING sales_count > 100\nORDER BY price_difference DESC\nLIMIT 1\n"}
🤖 흥미로운 사실이 하나 있습니다. **런던의 Baker Street**(네, 그 유명한 Sherlock Holmes의 거리입니다!)는 거래 건수가 100건이 넘는 거리 가운데 가격 차이가 가장 큽니다. 최저 **£2,500**에 거래된 부동산부터 최고 **£594.3 million**에 거래된 부동산까지 있어, 그 차이가 무려 £594 million을 넘습니다!
Baker Street는 Marylebone 같은 부유한 지역을 지나는 런던의 대표적인 고급 주소지 중 하나이므로, 이런 결과도 충분히 이해할 만합니다. 또한 이 데이터셋에는 해당 거리의 거래가 541건 기록되어 있습니다.