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

Как создать агента SlackBot с помощью ClickHouse MCP-сервера

В этом руководстве вы узнаете, как создать агента SlackBot. Этот бот позволяет задавать вопросы о ваших данных в ClickHouse прямо из Slack, используя естественный язык. Он использует ClickHouse MCP-сервер и PydanticAI.

Пример проекта

Код этого примера доступен в репозитории с примерами.

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

  • У вас должен быть установлен uv
  • Вам потребуется доступ к рабочему пространству Slack
  • Вам потребуется API key Anthropic или API key другого провайдера LLM

Создайте приложение Slack

  1. Перейдите на slack.com/apps и нажмите Create New App.
  2. Выберите вариант From scratch и задайте имя приложению.
  3. Выберите ваше рабочее пространство Slack.

Установите приложение в рабочее пространство

Затем вам потребуется добавить приложение, созданное на предыдущем шаге, в ваше рабочее пространство. Вы можете следовать инструкциям из статьи "Добавление приложений в рабочее пространство Slack" в документации Slack.

Настройка параметров приложения Slack

  • Перейдите в App Home
    • В разделе Show TabsMessages Tab включите Allow users to send Slash commands and messages from the messages tab
    • Перейдите в Socket Mode
      • Включите Socket Mode
      • Сохраните значение Socket Mode Handler для переменной окружения SLACK_APP_TOKEN
    • Перейдите в OAuth & Permissions
      • Добавьте следующие Bot Token Scopes:
        • app_mentions:read
        • assistant:write
        • chat:write
        • im:history
        • im:read
        • im:write
        • channels:history
      • Установите приложение в рабочее пространство и сохраните Bot User OAuth Token для переменной окружения SLACK_BOT_TOKEN.
    • Перейдите в Event Subscriptions
      • Включите Events
      • В разделе Subscribe to bot events добавьте:
        • app_mention
        • assistant_thread_started
        • message:im
      • Сохраните изменения.

Добавьте переменные окружения (.env)

Создайте файл .env в корне проекта со следующими переменными окружения, которые позволят вашему приложению подключиться к SQL playground ClickHouse.

SLACK_BOT_TOKEN=your-slack-bot-token
SLACK_APP_TOKEN=your-slack-app-level-token
ANTHROPIC_API_KEY=your-anthropic-api-key
CLICKHOUSE_HOST=sql-clickhouse.clickhouse.com
CLICKHOUSE_PORT=8443
CLICKHOUSE_USER=demo
CLICKHOUSE_PASSWORD=
CLICKHOUSE_SECURE=true

При желании вы можете изменить переменные ClickHouse, чтобы использовать собственный сервер ClickHouse или экземпляр Cloud.

Использование бота

  1. Запустите бота:

    uv run main.py
    
  2. В Slack:

    • Упомяните бота в канале: @yourbot Who are the top contributors to the ClickHouse git repo?
    • Ответьте в треде с упоминанием: @yourbot how many contributions did these users make last week?
    • Отправьте боту личное сообщение: Show me all tables in the demo database.

Бот ответит в треде, используя все предыдущие сообщения в треде как контекст, если это применимо.

Контекст треда: При ответе в треде бот загружает все предыдущие сообщения (кроме текущего) и использует их как контекст для ИИ.

Использование инструментов: Бот использует только инструменты, доступные через MCP (например, обнаружение schema и выполнение SQL), и всегда показывает использованный SQL и краткое описание того, как был найден ответ.