Перейти к основному содержимому
Перейти к основному содержимому

Как создать агента PydanticAI с использованием сервера ClickHouse MCP

В этом руководстве вы узнаете, как создать агента PydanticAI, который может взаимодействовать с SQL-песочницей ClickHouse с использованием сервера MCP ClickHouse.

Пример блокнота

Этот пример можно найти в виде блокнота в репозитории примеров.

Предварительные требования

  • Вам нужно установить Python на ваш компьютер.
  • Вам нужно установить pip на ваш компьютер.
  • Вам нужен ключ API Anthropic или ключ API от другого провайдера LLM.

Вы можете выполнить следующие шаги как в вашем Python REPL, так и через скрипт.

Установите библиотеки

Установите необходимые библиотеки, выполнив следующие команды:

!pip install -q --upgrade pip
!pip install -q "pydantic-ai-slim[mcp]"
!pip install -q "pydantic-ai-slim[anthropic]" # replace with the appropriate package if using a different LLM provider

Настройка учетных данных

Далее вам нужно предоставить ваш ключ API Anthropic:

import os, getpass
os.environ["ANTHROPIC_API_KEY"] = getpass.getpass("Enter Anthropic API Key:")
Enter Anthropic API Key: ········
Использование другого провайдера LLM

Если у вас нет ключа API Anthropic и вы хотите использовать другого провайдера LLM, вы можете найти инструкции по настройке ваших учетных данных в документации PydanticAI.

Затем определите учетные данные, необходимые для подключения к SQL-песочнице ClickHouse:

env = {
    "CLICKHOUSE_HOST": "sql-clickhouse.clickhouse.com",
    "CLICKHOUSE_PORT": "8443",
    "CLICKHOUSE_USER": "demo",
    "CLICKHOUSE_PASSWORD": "",
    "CLICKHOUSE_SECURE": "true"
}

Инициализация сервера MCP и агента PydanticAI

Теперь настройте сервер ClickHouse MCP, чтобы указать на SQL-песочницу ClickHouse:

from pydantic_ai import Agent
from pydantic_ai.mcp import MCPServerStdio
from pydantic_ai.messages import ToolCallPart, ToolReturnPart

server = MCPServerStdio(
    'uv',
    args=[
        'run',
        '--with', 'mcp-clickhouse',
        '--python', '3.13',
        'mcp-clickhouse'
    ],
    env=env
)
agent = Agent('anthropic:claude-sonnet-4-0', mcp_servers=[server])

Задайте вопрос агенту

Наконец, вы можете задать агенту вопрос:

async with agent.run_mcp_servers():
    result = await agent.run("Who's done the most PRs for ClickHouse?")
    print(result.output)

Вы получите ответ, похожий на следующий:

Based on the data from the ClickHouse GitHub repository, here are the top contributors by number of pull requests created:

**Top contributors to ClickHouse by PRs opened:**

1. **alexey-milovidov** - 3,370 PRs opened
2. **azat** - 1,905 PRs opened  
3. **rschu1ze** - 979 PRs opened
4. **alesapin** - 947 PRs opened
5. **tavplubix** - 896 PRs opened
6. **kssenii** - 871 PRs opened
7. **Avogar** - 805 PRs opened
8. **KochetovNicolai** - 700 PRs opened
9. **Algunenano** - 658 PRs opened
10. **kitaisreal** - 630 PRs opened

**Alexey Milovidov** stands out as by far the most active contributor with over 3,370 pull requests opened, which is significantly more than any other contributor. This makes sense as Alexey Milovidov is one of the founders and lead developers of ClickHouse.

The data also shows that alexey-milovidov has been very active in managing PRs, with 12,818 "closed" events (likely reviewing and closing PRs from other contributors) in addition to creating his own PRs.

It's worth noting that I filtered out various robot/bot accounts that handle automated processes, focusing on human contributors to give you the most meaningful answer about who has contributed the most PRs to ClickHouse.