ClickHouse MCPサーバーを使用してSlackBotエージェントを構築する方法
このガイドでは、SlackBotエージェントを構築する方法を学びます。このボットを使用すると、自然言語を使用してSlackから直接ClickHouseデータについて質問できます。これは、ClickHouse MCP ServerとPyDanticAIを利用しています。
例プロジェクト
この例のコードは、examples repositoryで見つけることができます。
前提条件
uvをインストールしておく必要があります- Slackワークスペースへのアクセスが必要です
- Anthropic APIキーまたは他のLLMプロバイダーからの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のSQLプレイグラウンドに接続できるようになります。
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? - ボットへDMを送る:
Show me all tables in the demo database.
- チャンネルでボットをメンションする:
ボットはスレッド内で返信し、関連する場合は以前のスレッドメッセージをすべてコンテキストとして使用します。
スレッドコンテキスト: ボットはスレッド内で返信する際、すべての前のメッセージ(現在のメッセージを除く)を読み込み、AIへのコンテキストとして含めます。
ツールの使用: ボットはMCP経由で利用可能なツール(例: スキーマ発見、SQL実行)を使用し、常に使用されたSQLと回答がどのように見つかったかの要約を表示します。