メインコンテンツへスキップ
メインコンテンツへスキップ

LibreChatでClickHouse MCPサーバーを使用する

本ガイドでは、Dockerを使用してLibreChatとClickHouse MCPサーバーをセットアップし、 ClickHouseのサンプルデータセットに接続する方法を説明します。

Docker をインストールする

LibreChat と MCP サーバーを実行するには Docker が必要です。Docker を入手するには、次の手順に従ってください。

  1. docker.com にアクセスします
  2. お使いのオペレーティングシステム向けの Docker Desktop をダウンロードします
  3. オペレーティングシステム向けの手順に従って Docker をインストールします
  4. Docker Desktop を起動し、実行中であることを確認します

詳細については、Docker のドキュメントを参照してください。

LibreChat リポジトリをクローンする

ターミナル(コマンドプロンプトや PowerShell など)を開き、次のコマンドを使用して LibreChat リポジトリをクローンします。

git clone https://github.com/danny-avila/LibreChat.git
cd LibreChat

.env ファイルの作成と編集

サンプル構成ファイルを .env.example から .env にコピーします。

cp .env.example .env

お好みのテキストエディタで .env ファイルを開きます。OpenAI、Anthropic、AWS Bedrock など、代表的な LLM プロバイダーごとのセクションが用意されています。例えば次のようになります。

#============#
# Anthropic  # \{#anthropic}
#============#
#highlight-next-line
ANTHROPIC_API_KEY=user_provided
# ANTHROPIC_MODELS=claude-opus-4-20250514,claude-sonnet-4-20250514,claude-3-7-sonnet-20250219,claude-3-5-sonnet-20241022,claude-3-5-haiku-20241022,claude-3-opus-20240229,claude-3-sonnet-20240229,claude-3-haiku-20240307 \{#anthropic_modelsclaude-opus-4-20250514claude-sonnet-4-20250514claude-3-7-sonnet-20250219claude-3-5-sonnet-20241022claude-3-5-haiku-20241022claude-3-opus-20240229claude-3-sonnet-20240229claude-3-haiku-20240307}
# ANTHROPIC_REVERSE_PROXY= \{#anthropic_reverse_proxy}

使用したい LLM プロバイダーの API キーで user_provided を置き換えます。

ローカル LLM の使用

API キーがない場合は、Ollama のようなローカル LLM を使用できます。セットアップ方法は後ほどステップ「Install Ollama」で説明します。ここでは .env ファイルは変更せず、そのまま次の手順に進んでください。

librechat.yaml ファイルを作成する

新しい librechat.yaml ファイルを作成するには、以下のコマンドを実行します。

cp librechat.example.yaml librechat.yaml

これにより、LibreChat のメインの設定ファイルが作成されます。

Docker Compose に ClickHouse MCP サーバーを追加する

次に、LLM が ClickHouse SQL playground と対話できるようにするため、ClickHouse MCP サーバーを LibreChat の Docker Compose ファイルに追加します。

docker-compose.override.yml という名前のファイルを作成し、次の設定を追加します。

services:
  api:
    volumes:
      - ./librechat.yaml:/app/librechat.yaml
  mcp-clickhouse:
    image: mcp/clickhouse
    container_name: mcp-clickhouse
    ports:
      - 8001:8000
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      - CLICKHOUSE_HOST=sql-clickhouse.clickhouse.com
      - CLICKHOUSE_USER=demo
      - CLICKHOUSE_PASSWORD=
      - CLICKHOUSE_MCP_SERVER_TRANSPORT=sse
      - CLICKHOUSE_MCP_BIND_HOST=0.0.0.0

独自のデータを探索したい場合は、ご利用の ClickHouse Cloud サービスの ホスト名、ユーザー名、パスワード を使用して接続できます。

ClickHouse Cloud を始める
まだ Cloud アカウントをお持ちでない場合は、今すぐ ClickHouse Cloud を使い始めて 300 ドル分のクレジットを獲得できます。30 日間の無料トライアル終了後は、 従量課金プランを継続するか、ボリュームベースの割引についてお問い合わせください。 詳細は料金ページをご覧ください。

librechat.yaml で MCP サーバーを構成する

librechat.yaml を開き、ファイルの末尾に次の設定を追記します。

mcpServers:
  clickhouse-playground:
    type: sse
    url: http://host.docker.internal:8001/sse

これは、LibreChat を Docker 上で稼働している MCP サーバーに接続するように設定します。

次の行を探します:

socialLogins: ['github', 'google', 'discord', 'openid', 'facebook', 'apple', 'saml']

簡単のため、ひとまず認証は不要とします。

socialLogins: []

Ollama を使用してローカル LLM を追加する(オプション)

Ollama をインストールする

Ollama の公式サイトにアクセスし、使用しているシステム向けの Ollama をインストールします。

インストールが完了したら、次のようにモデルを実行できます。

ollama run qwen3:32b

これにより、モデルが存在しない場合はローカルマシンに取得されます。

利用可能なモデルの一覧は Ollama library を参照してください。

librechat.yaml で Ollama を設定する

モデルのダウンロードが完了したら、librechat.yaml 内でモデルを設定します:

custom:
  - name: "Ollama"
    apiKey: "ollama"
    baseURL: "http://host.docker.internal:11434/v1/"
    models:
      default:
        [
          "qwen3:32b"
        ]
      fetch: false
    titleConvo: true
    titleModel: "current_model"
    summarize: false
    summaryModel: "current_model"
    forcePrompt: false
    modelDisplayLabel: "Ollama"

すべてのサービスを起動する

LibreChat プロジェクトディレクトリのルートで、次のコマンドを実行してサービスを起動します。

docker compose up

すべてのサービスが完全に起動するまで待ちます。

ブラウザでLibreChatを開く

すべてのサービスが起動したら、ブラウザを開いてhttp://localhost:3080/にアクセスします。

まだアカウントをお持ちでない場合は、無料のLibreChatアカウントを作成してサインインしてください。ClickHouse MCPサーバーに接続されたLibreChatインターフェースが表示されます。オプションでローカルLLMも利用可能です。

チャットインターフェースから、MCPサーバーとしてclickhouse-playgroundを選択します。

MCPサーバーを選択

これで、LLMにプロンプトを送信してClickHouseのサンプルデータセットを探索できます。試してみましょう:

アクセス可能なデータセットは何ですか?