ClickHouse MCP Server を使用して SlackBot エージェントを構築する方法
このガイドでは、SlackBot エージェントの構築方法を解説します。 このボットを使うと、自然言語で Slack から直接 ClickHouse のデータについて質問できます。内部的には ClickHouse MCP Server と PydanticAI を使用します。
サンプルプロジェクト
このサンプルのコードは examples リポジトリ で参照できます。
前提条件
uvをインストールしておく必要があります- Slackワークスペースへのアクセス権が必要です
- AnthropicのAPIキー、または他のLLMプロバイダーのAPIキーが必要です
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を有効にする- 環境変数
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 の 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.
- チャンネルでボットをメンション:
ボットはスレッド内で返信し、該当する場合は以前のスレッドメッセージすべてをコンテキストとして使用します。
スレッドコンテキスト: スレッド内で返信する際、ボットは以前のメッセージすべて(現在のメッセージを除く)を読み込み、AIのコンテキストとして含めます。
ツールの使用: ボットはMCP経由で利用可能なツール(スキーマ検出、SQL実行など)のみを使用し、使用されたSQLと回答の導出方法の要約を常に表示します。