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

Как создать агента ИИ с помощью Agno и ClickHouse MCP Server

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

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

Этот пример доступен в виде ноутбука в репозитории с примерами.

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

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

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

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

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

pip install -q --upgrade pip
pip install -q agno
pip install -q ipywidgets

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

Далее необходимо указать свой API-ключ Anthropic:

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

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

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

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

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

Теперь настройте ClickHouse MCP-сервер для подключения к ClickHouse SQL playground и инициализируйте агента Agno, задав ему вопрос:

from agno.agent import Agent
from agno.tools.mcp import MCPTools
from agno.models.anthropic import Claude
async with MCPTools(command="uv run --with mcp-clickhouse --python 3.13 mcp-clickhouse", env=env, timeout_seconds=60) as mcp_tools:
    agent = Agent(
        model=Claude(id="claude-3-5-sonnet-20240620"),
        markdown=True,
        tools = [mcp_tools]
    )
await agent.aprint_response("What's the most starred project in 2025?", stream=True)
▰▱▱▱▱▱▱ Thinking...
┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                                 ┃
┃ What's the most starred project in 2025?                                                                        ┃
┃                                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━ Tool Calls ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                                 ┃
┃ • list_tables(database=github, like=%)                                                                          ┃
┃ • run_select_query(query=SELECT                                                                                 ┃
┃     repo_name,                                                                                                  ┃
┃     SUM(count) AS stars_2025                                                                                    ┃
┃ FROM github.repo_events_per_day                                                                                 ┃
┃ WHERE event_type = 'WatchEvent'                                                                                 ┃
┃     AND created_at >= '2025-01-01'                                                                              ┃
┃     AND created_at < '2026-01-01'                                                                               ┃
┃ GROUP BY repo_name                                                                                              ┃
┃ ORDER BY stars_2025 DESC                                                                                        ┃
┃ LIMIT 1)                                                                                                        ┃
┃                                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
┏━ Response (34.9s) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                                                                                                                 ┃
┃ Чтобы ответить на ваш вопрос о проекте с наибольшим количеством звёзд в 2025 году, необходимо выполнить запрос к базе данных ClickHouse.     ┃
┃ Однако сначала нужно собрать информацию и убедиться, что мы работаем с правильными данными. ┃
┃ Проверю доступные базы данных и таблицы.Благодарю за предоставленный список баз данных. Вижу,  ┃
┃ что существует база данных "github", которая, вероятно, содержит нужную информацию. Проверим ┃
┃ таблицы в этой базе данных.Теперь, когда у нас есть информация о таблицах в базе данных github, можно запросить  ┃
┃ необходимые данные для ответа на ваш вопрос о проекте с наибольшим количеством звёзд в 2025 году. Используем таблицу repo_events_per_day ┃
┃ , которая содержит ежедневное количество событий для каждого репозитория, включая события добавления в избранное (WatchEvents).              ┃
┃                                                                                                                 ┃
┃ Создадим запрос для поиска проекта с наибольшим количеством звёзд в 2025 году:На основе результатов запроса можно ответить на ваш     ┃
┃ вопрос о проекте с наибольшим количеством звёзд в 2025 году:                                                                ┃
┃                                                                                                                 ┃
┃ Проектом с наибольшим количеством звёзд в 2025 году стал deepseek-ai/DeepSeek-R1, который получил 84 962 звезды за этот год.     ┃
┃                                                                                                                 ┃
┃ Этот проект, DeepSeek-R1, представляет собой репозиторий, связанный с искусственным интеллектом, от организации DeepSeek AI. Он привлёк  ┃
┃ значительное внимание и популярность в сообществе GitHub в 2025 году, получив наибольшее количество звёзд    ┃
┃ среди всех проектов за этот год.                                                                               ┃
┃                                                                                                                 ┃
┃ Следует отметить, что эти данные основаны на событиях GitHub, зарегистрированных в базе данных, и представляют  ┃
┃ звёзды (WatchEvents), накопленные именно в течение 2025 года. Общее количество звёзд этого проекта   ┃
┃ может быть выше, если учитывать весь период его существования.                                                             ┃
┃                                                                                                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛