メインコンテンツまでスキップ
メインコンテンツまでスキップ

ClickHouse MCPサーバーを使用してSlackBotエージェントを構築する方法

このガイドでは、SlackBotエージェントを構築する方法を学びます。このボットを使用すると、自然言語を使用してSlackから直接ClickHouseデータについて質問できます。これは、ClickHouse MCP ServerPyDanticAIを利用しています。

例プロジェクト

この例のコードは、examples repositoryで見つけることができます。

前提条件

  • uvをインストールしておく必要があります
  • Slackワークスペースへのアクセスが必要です
  • Anthropic APIキーまたは他のLLMプロバイダーからのAPIキーが必要です

Slackアプリを作成する

  1. slack.com/appsに行き、Create New Appをクリックします。
  2. From scratchオプションを選択し、アプリに名前を付けます。
  3. 自分のSlackワークスペースを選択します。

アプリをワークスペースにインストールする

次に、前のステップで作成したアプリをワークスペースに追加する必要があります。 Slackドキュメントの「"Add apps to your Slack workspace"」の指示に従うことができます。

Slackアプリの設定を構成する

  • App Homeに行く
    • Show TabsMessages 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プレイグラウンドに接続できるようになります。

SLACK_BOT_TOKEN=your-slack-bot-token
SLACK_APP_TOKEN=your-slack-app-level-token
ANTHROPIC_API_KEY=your-anthropic-api-key
CLICKHOUSE_HOST=sql-clickhouse.clickhouse.com
CLICKHOUSE_PORT=8443
CLICKHOUSE_USER=demo
CLICKHOUSE_PASSWORD=
CLICKHOUSE_SECURE=true

ClickHouseの変数を変更して、自分のClickHouseサーバーやCloudインスタンスを使用することもできます。

ボットの使用法

  1. ボットを起動する:
uv run main.py
  1. 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と回答がどのように見つかったかの要約を表示します。