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:read
assistant:write
chat:write
im:history
im:read
im:write
channels:history
- アプリをワークスペースにインストールし、環境変数
SLACK_BOT_TOKEN
用のBot User OAuth Token
をメモします。
- 次の
Event Subscriptions
に行くEvents
を有効にしますSubscribe to bot events
の下に、追加します:app_mention
assistant_thread_started
message: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と回答がどのように見つかったかの要約を表示します。