ClickHouse MCP server を使用して SlackBot エージェントを構築する方法
このガイドでは、SlackBot エージェントの構築方法を学びます。 このボットを使うと、自然言語で Slack から直接 ClickHouse のデータについて質問できます。内部的には ClickHouse MCP server と PydanticAI を使用します。
サンプルプロジェクト
このサンプルのコードは examples リポジトリ で参照できます。
前提条件
uvがインストールされている必要があります- Slack ワークスペースにアクセスできる必要があります
- Anthropic の API キー、または別の LLM provider の API キーが必要です
Slack アプリを作成する
- slack.com/apps にアクセスし、
Create New Appをクリックします。 From scratchオプションを選択し、アプリに名前を付けます。- Slack ワークスペースを選択します。
アプリをワークスペースにインストールする
次に、前の手順で作成したアプリをワークスペースに追加する必要があります。 Slack のドキュメントにある "Add apps to your Slack workspace" の手順に従ってください。
Slack アプリの設定を行う
App Homeに移動するShow Tabs→Messages TabのAllow users to send Slash commands and messages from the messages tabを有効にするSocket Modeに移動するSocket Modeを有効にする- 環境変数
SLACK_APP_TOKENに設定するため、Socket Mode Handlerを控えておく
OAuth & Permissionsに移動する- 次の
Bot Token Scopesを追加する:app_mentions:readassistant:writechat:writeim:historyim:readim:writechannels:history
- アプリをワークスペースにインストールし、環境変数
SLACK_BOT_TOKENに設定するためのBot User OAuth Tokenを控えておく
- 次の
Event Subscriptionsに移動するEventsを有効にするSubscribe to bot eventsに次を追加する:app_mentionassistant_thread_startedmessage:im
- 変更を保存する
環境変数 (.env) を追加する
次の環境変数を含む .env ファイルをプロジェクトのルートに作成します。
これにより、アプリを ClickHouse's SQL playground に接続できるようになります。
必要に応じて、ClickHouse の変数を自分の ClickHouse サーバー または Cloud instance を使うように調整できます。
ボットを使う
-
ボットを起動する:
-
Slack 内で:
- チャンネルでボットにメンションする:
@yourbot Who are the top contributors to the ClickHouse git repo? - スレッドでメンションして返信する:
@yourbot how many contributions did these users make last week? - ボットに DM を送る:
Show me all tables in the demo database.
- チャンネルでボットにメンションする:
ボットは、該当する場合はそれまでのスレッド内のメッセージをすべて Context として使い、 スレッド内で返信します。
スレッド Context: スレッドで返信する際、ボットはそれまでのすべてのメッセージ (現在のメッセージを除く) を読み込み、AI の Context として含めます。
ツールの使用方法: ボットは MCP 経由で利用可能なツール (たとえば schema discovery や SQL execution) のみを使い、使用した SQL と回答に至った方法の要約を常に表示します。