Как создать агента SlackBot с помощью ClickHouse MCP-сервера
В этом руководстве вы узнаете, как создать агента SlackBot. Этот бот позволяет задавать вопросы о ваших данных в ClickHouse прямо из Slack, используя естественный язык. Он использует ClickHouse MCP-сервер и PydanticAI.
Код этого примера доступен в репозитории с примерами.
Предварительные требования
- У вас должен быть установлен
uv - Вам потребуется доступ к рабочему пространству Slack
- Вам потребуется API key Anthropic или API key другого провайдера LLM
Создайте приложение Slack
- Перейдите на slack.com/apps и нажмите
Create New App. - Выберите вариант
From scratchи задайте имя приложению. - Выберите ваше рабочее пространство Slack.
Установите приложение в рабочее пространство
Затем вам потребуется добавить приложение, созданное на предыдущем шаге, в ваше рабочее пространство. Вы можете следовать инструкциям из статьи "Добавление приложений в рабочее пространство Slack" в документации Slack.
Настройка параметров приложения Slack
- Перейдите в
App Home- В разделе
Show Tabs→Messages 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:readassistant:writechat:writeim:historyim:readim:writechannels:history
- Установите приложение в рабочее пространство и сохраните
Bot User OAuth Tokenдля переменной окруженияSLACK_BOT_TOKEN.
- Добавьте следующие
- Перейдите в
Event Subscriptions- Включите
Events - В разделе
Subscribe to bot eventsдобавьте:app_mentionassistant_thread_startedmessage:im
- Сохраните изменения.
- Включите
- В разделе
Добавьте переменные окружения (.env)
Создайте файл .env в корне проекта со следующими переменными окружения,
которые позволят вашему приложению подключиться к SQL playground ClickHouse.
При желании вы можете изменить переменные ClickHouse, чтобы использовать собственный сервер ClickHouse или экземпляр Cloud.
Использование бота
-
Запустите бота:
-
В 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 и краткое описание того, как был найден ответ.