Как создать агента SlackBot с помощью ClickHouse MCP Server
В этом руководстве вы узнаете, как создать агента SlackBot. Этот бот позволяет задавать вопросы о ваших данных в ClickHouse прямо из Slack, используя естественный язык. Он использует ClickHouse MCP Server и PydanticAI.
Код этого примера доступен в репозитории с примерами.
Предварительные требования
- Необходимо установить
uv - Необходим доступ к рабочему пространству Slack
- Необходим API-ключ Anthropic или API-ключ от другого провайдера 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-песочнице ClickHouse.
Вы можете настроить переменные ClickHouse для использования собственного сервера ClickHouse или облачного экземпляра, если хотите.
Использование бота
-
Запустите бота:
-
В 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.
- Упомяните бота в канале:
Бот ответит в ветке, используя все предыдущие сообщения ветки в качестве контекста, если это применимо.
Контекст ветки: При ответе в ветке бот загружает все предыдущие сообщения (кроме текущего) и включает их в качестве контекста для AI.
Использование инструментов: Бот использует только инструменты, доступные через MCP (например, обнаружение схемы, выполнение SQL), и всегда показывает использованный SQL и краткое описание того, как был получен ответ.