プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。Google でログインするとレビューを書けます。プロトタイプ · 30分ごとに更新
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

hypequery ClickHouse

作者:hypequeryバージョン 0.14.0i★ 106 (リポジトリ全体のスター)iパソコンで動く
レジストリ名io.github.hypequery/hypequery

インストール方法

What it does

Governed ClickHouse analytics for agents: named datasets and metrics as tools, never raw SQL.

  • Connects パソコンで動く
  • Account or key No key needed
  • Category データベース・データセット

一緒に使える

この種の作業を AI に教える Skill。これと一緒に使えます

timesfm

TimesFM (Time Series Foundation Model) is a pretrained time-series foundation model developed by Google Research for time-series forecasting.

作者:google-research★ 35,5671 個の skill

Skill · 手順書

インストール

使っているAIアプリを選んで、設定をコピーしてください。

チェック 2/3 合格 · あなたのパソコンで動きます · ✓ コマンド確認済み 2026年11月16日

まず:どの AI を使っていますか?

使っているアプリを選ぶと、下に手順が表示されます。

Claude につなげますが、先に準備が必要です

先にパソコンへ Node.js を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません

AI にインストールしてもらう

このメッセージを Claude のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。

このパソコンの Claude に MCP server hypequery ClickHouse を入れてください。順番に:1) node -v で Node.js があるか確認。なければ https://nodejs.org/en/download から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "mcpServers": { "hypequery": { "command": "npx", "args": [ "-y", "@hypequery/mcp", "--config", "your-value" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、hypequery ClickHouse のツールが本当に表示されるか確認する。

このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。

  1. Node.js を入れる(まだなければ)

    もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter

    node -v
    • バージョン番号(例 v26.13.1)が出る = 入っています。この手順は飛ばせます
    • "command not found"(Windows では "is not recognized")が出る = まだ入っていないか、入れた直後でターミナルを開き直す必要があります
    ターミナルの開き方

    Mac:⌘ + Space を押し、Terminal と入力して Enter

    Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」

    まだ入っていない場合: 公式ダウンロードページで LTS 版と、クリックで進むインストーラーを選びます:Mac は .pkg、Windows は .msi。ダブルクリックして最後まで進めるだけで、curl コマンドは不要です

    Node.js のダウンロードページを開く ↗

    入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: node -v

    一度入れれば、Node.js を使うすべてのツールで使えます

  2. パソコン版 Claude アプリの設定ファイルを開く

    SettingsDeveloperEdit Config

  3. この設定を貼り付けて保存

    {
      "mcpServers": {
        "hypequery": {
          "command": "npx",
          "args": [
            "-y",
            "@hypequery/mcp",
            "--config",
            "your-value"
          ]
        }
      }
    }
  4. Claude を終了してもう一度開く

  5. 試してみる

    hypequery ClickHouse を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude が hypequery ClickHouse を使っていると言うか、回答に hypequery ClickHouse のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

ChatGPT はまだ hypequery ClickHouse につなげません

hypequery ClickHouse はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません

代わりにできること

A · hypequery ClickHouse につなげるアプリを使う

  • 先にパソコンへ Node.js を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
  • 先にパソコンへ Node.js を入れてください(1 回だけ)
  • 先にパソコンへ Node.js を入れてください(1 回だけ) · ワンクリックのボタンはありません。設定を貼り付けて値を自分で入力します
  • 先にパソコンへ Node.js を入れてください(1 回だけ) · ワンクリックのボタンはありません。設定を貼り付けて値を自分で入力します

B · データベース・データセット の中で ChatGPT につなげる別のサーバー

同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました

Claude Code につなげますが、先に準備が必要です

先にパソコンへ Node.js を入れてください(1 回だけ)

AI にインストールしてもらう

このメッセージを Claude Code のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。

このパソコンの Claude Code に MCP server hypequery ClickHouse を入れてください。順番に:1) node -v で Node.js があるか確認。なければ https://nodejs.org/en/download から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):claude mcp add --scope user hypequery -- npx -y @hypequery/mcp --config your-value 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、hypequery ClickHouse のツールが本当に表示されるか確認する。

このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。

  1. Node.js を入れる(まだなければ)

    もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter

    node -v
    • バージョン番号(例 v26.13.1)が出る = 入っています。この手順は飛ばせます
    • "command not found"(Windows では "is not recognized")が出る = まだ入っていないか、入れた直後でターミナルを開き直す必要があります
    ターミナルの開き方

    Mac:⌘ + Space を押し、Terminal と入力して Enter

    Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」

    まだ入っていない場合: 公式ダウンロードページで LTS 版と、クリックで進むインストーラーを選びます:Mac は .pkg、Windows は .msi。ダブルクリックして最後まで進めるだけで、curl コマンドは不要です

    Node.js のダウンロードページを開く ↗

    入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: node -v

    一度入れれば、Node.js を使うすべてのツールで使えます

  2. ターミナルを開く

    Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く

  3. このコマンドを貼り付けて Enter

    claude mcp add --scope user hypequery -- npx -y @hypequery/mcp --config your-value
  4. Claude Code で /mcp と入力

    hypequery ClickHouse が一覧にあり、接続済みと表示されれば OK です

  5. 試してみる

    hypequery ClickHouse を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Claude Code が hypequery ClickHouse を使っていると言うか、回答に hypequery ClickHouse のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Cursor につなげますが、先に準備が必要です

先にパソコンへ Node.js を入れてください(1 回だけ) · ワンクリックのボタンはありません。設定を貼り付けて値を自分で入力します

AI にインストールしてもらう

このメッセージを Cursor のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。

このパソコンの Cursor に MCP server hypequery ClickHouse を入れてください。順番に:1) node -v で Node.js があるか確認。なければ https://nodejs.org/en/download から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "mcpServers": { "hypequery": { "command": "npx", "args": [ "-y", "@hypequery/mcp", "--config", "your-value" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、hypequery ClickHouse のツールが本当に表示されるか確認する。

このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。

  1. Node.js を入れる(まだなければ)

    もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter

    node -v
    • バージョン番号(例 v26.13.1)が出る = 入っています。この手順は飛ばせます
    • "command not found"(Windows では "is not recognized")が出る = まだ入っていないか、入れた直後でターミナルを開き直す必要があります
    ターミナルの開き方

    Mac:⌘ + Space を押し、Terminal と入力して Enter

    Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」

    まだ入っていない場合: 公式ダウンロードページで LTS 版と、クリックで進むインストーラーを選びます:Mac は .pkg、Windows は .msi。ダブルクリックして最後まで進めるだけで、curl コマンドは不要です

    Node.js のダウンロードページを開く ↗

    入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: node -v

    一度入れれば、Node.js を使うすべてのツールで使えます

  2. Cursor の MCP 設定ファイルを開く

    ~/.cursor/mcp.json

    この設定を貼り付け、空いている値を入力して保存

    {
      "mcpServers": {
        "hypequery": {
          "command": "npx",
          "args": [
            "-y",
            "@hypequery/mcp",
            "--config",
            "your-value"
          ]
        }
      }
    }
  3. Cursor の AI チャットを Agent モードで開く

  4. 試してみる

    hypequery ClickHouse を使って、私に何ができるか教えて、1 つやってみせて

    ✓ Cursor が hypequery ClickHouse を使っていると言うか、回答に hypequery ClickHouse のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

VS Code につなげますが、先に準備が必要です

先にパソコンへ Node.js を入れてください(1 回だけ) · ワンクリックのボタンはありません。設定を貼り付けて値を自分で入力します

AI にインストールしてもらう

このメッセージを VS Code のチャットに貼り付けます。AI がパソコンを確認し、変更するファイルを伝え、毎回あなたの了承を待ちます。

このパソコンの VS Code に MCP server hypequery ClickHouse を入れてください。順番に:1) node -v で Node.js があるか確認。なければ https://nodejs.org/en/download から入れるよう私に伝え、自分では入れない。2) この設定だけを使う(PopNx MCP の確認済み):{ "servers": { "hypequery": { "type": "stdio", "command": "npx", "args": [ "-y", "@hypequery/mcp", "--config", "your-value" ] } } } 3) 変更するファイルのフルパスか実行するコマンドを伝えて、私の了承を待つ。4) キーは不要。5) 了承した内容を実行し、hypequery ClickHouse のツールが本当に表示されるか確認する。

このメッセージにあなたのキーは含まれません。キーが必要な場合は、AI がファイルやアプリの入力欄にご自身で貼るよう案内します。

  1. Node.js を入れる(まだなければ)

    もう入っていますか?先に確認 · ターミナルを開き、このコマンドを入力して Enter

    node -v
    • バージョン番号(例 v26.13.1)が出る = 入っています。この手順は飛ばせます
    • "command not found"(Windows では "is not recognized")が出る = まだ入っていないか、入れた直後でターミナルを開き直す必要があります
    ターミナルの開き方

    Mac:⌘ + Space を押し、Terminal と入力して Enter

    Windows:スタートメニューを開き、Windows PowerShell と入力して「開く」

    まだ入っていない場合: 公式ダウンロードページで LTS 版と、クリックで進むインストーラーを選びます:Mac は .pkg、Windows は .msi。ダブルクリックして最後まで進めるだけで、curl コマンドは不要です

    Node.js のダウンロードページを開く ↗

    入れ終わったらターミナルを閉じて開き直し、同じコマンドをもう一度実行します。バージョン番号が出れば完了です: node -v

    一度入れれば、Node.js を使うすべてのツールで使えます

  2. VS Code の MCP 設定ファイルを開く

    MCP: Open User Configuration

    この設定を貼り付け、空いている値を入力して保存

    {
      "servers": {
        "hypequery": {
          "type": "stdio",
          "command": "npx",
          "args": [
            "-y",
            "@hypequery/mcp",
            "--config",
            "your-value"
          ]
        }
      }
    }
  3. VS Code の AI チャットを Agent モードで開く

  4. 試してみる

    hypequery ClickHouse を使って、私に何ができるか教えて、1 つやってみせて

    ✓ VS Code が hypequery ClickHouse を使っていると言うか、回答に hypequery ClickHouse のツール名が出れば接続成功です

メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります

Windsurf、Zed、Gemini CLI など MCP を使える他のアプリは追加方法がそれぞれ違います。アプリ一覧で確認してください

MCP を使えるアプリをすべて見る →

JSON 設定は下の「開発者向け」にあります

つまずいたら?hypequery ClickHouse を使っている人に聞いてみましょう💬 ディスカッション →
開発者向け:ターミナルのコマンドと JSON 設定

パソコンにインストール

Claude Code

claude mcp add --scope user hypequery -- npx -y @hypequery/mcp --config your-value

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "hypequery": {
      "command": "npx",
      "args": [
        "-y",
        "@hypequery/mcp",
        "--config",
        "your-value"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "hypequery": {
      "command": "npx",
      "args": [
        "-y",
        "@hypequery/mcp",
        "--config",
        "your-value"
      ]
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "hypequery": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@hypequery/mcp",
        "--config",
        "your-value"
      ]
    }
  }
}

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

ひと目でわかる

GitHubスターi
106 (リポジトリ全体のスター)
このリポジトリには複数の MCP があり、スターは順位で1件だけ数えます
週あたりのダウンロードi
13,205/週
ライセンスi
ライセンスの記載なし
接続方法
パソコンで動く
最新バージョンi
0.14.0
レジストリ公開日i
2026年11月16日
コードの最終更新i
2026年11月15日
作者
hypequery
パッケージ
npm: @hypequery/mcp
ウェブサイト
hypequery.com
レジストリでの状態
有効

使えるアプリ

このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。

パソコン上で動かせるアプリ

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

すべてのアプリと長所・短所 →

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月16日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント hypequery で確認済みです

  • ✓ 合格

    今もメンテナンスされている

    コードの最終更新:昨日

  • ! 注意

    ライセンスがある

    GitHubがライセンスの種類を判別できませんでした。ファイルを開いて確認してください

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

公開済みの脆弱性(OSV.dev)

まだ確認していません

確認していること → · JSON

作者の方へ:再確認の依頼・情報の誤りの報告

話し合い

質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。

まだ投稿はありません。最初の質問や共有をどうぞ。

ここの投稿は利用者によるもので、PopNx チームのものではありません。

ログインして投稿

ユーザーレビュー

まだレビューはありません

ログインしてレビューを書く

データベース・データセットのほかのサーバーとの比較i

  • このカテゴリのほかの1204件のうち95%よりスターが多い
  • このカテゴリのほかの1204件のうち99%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの1204件のうち51%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

hypequery ClickHouseは安全ですか?

当てはまる基本チェック3項目のうち2項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は昨日、最新バージョン(0.14.0)がレジストリに届いたのは今日です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。

代わりに使えるものは?

同じカテゴリには:QueryWeaver, Supabase, Neon, DBCode, Keboola MCP

似た働きのほかの候補

同じカテゴリでほかの作者のもの。コマンドは確認済み。公式を先に、次にスター順。

カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

QueryWeaver

An MCP server for Text2SQL: transforms natural language into SQL using graph schema understanding.

作者:FalkorDB成長中★ 109614 か月前更新

パソコンで動く✓ falkordb.com

Supabase

MCP server for interacting with the Supabase platform

作者:supabase広く使われている↓ 24.6万/週★ 3014 リポジトリ全体のスター3 日前更新

パソコンでもクラウドでも✓ 提供元 · supabase.com

Neon

Official Neon MCP server for managing Neon projects and Lakebase Postgres databases.

作者:neondatabase成長中★ 66310 日前更新

クラウドで動く✓ 提供元 · neon.com

DBCode

Query and explore 100+ databases through your DBCode connections.

作者:dbcodeio初期↓ 80/週★ 367 リポジトリ全体のスター44 日前更新

パソコンで動く✓ 提供元 · dbcode.io

Keboola MCP

Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...

作者:keboola成長中↓ 1421/週★ 855 日前更新

パソコンでもクラウドでも✓ 提供元 · keboola.com
  • QueryWeaver — パソコンにインストールが必要 · キー不要
  • Supabase — クラウドでもパソコンにインストールでも使える · キーが必要 · Claude のディレクトリに掲載
  • Neon — クラウドで動き、インストール不要 · キー不要 · Claude のディレクトリに掲載
  • DBCode — パソコンにインストールが必要 · キー不要
  • Keboola MCP — クラウドでもパソコンにインストールでも使える · キー不要

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

@hypequery/mcp: governed ClickHouse MCP server

A ClickHouse MCP server for Claude Code, Cursor, Codex and other AI agents. Agents query the datasets and metrics you define, never raw SQL. Run it in five minutes against the public ClickHouse playground: hypequery.com/clickhouse-mcp.

@hypequery/mcp turns your hypequery datasets and metrics into Model Context Protocol tools for Claude, Cursor, and other MCP clients. Agents can discover and query approved analytics without receiving unrestricted SQL access or database credentials.

Install

npm install @hypequery/mcp @hypequery/datasets @hypequery/clickhouse

Expose your semantic layer

// mcp-config.ts

import { publishDatasets } from '@hypequery/datasets';

export const datasets = publishDatasets() .publish(Orders, { metrics: { revenue } }) .build();

export const analytics = createDatasetClient({ queryBuilder: db });

Compile the config, then start the stdio server:

npx hypequery-mcp --config /absolute/path/to/mcp-config.js

Add it to an MCP client:

{

"mcpServers": { "hypequery-clickhouse": { "command": "npx", "args": [ "hypequery-mcp", "--config", "/absolute/path/to/mcp-config.js" ] } } }

Now an agent can ask, “Show revenue by region for the last month,” using the same metric definition as your backend and dashboard.

Connect to a Python HTTP backend

An existing Python server can own definitions, authorization, tenancy and SQL. Opt its dataset/metric routes into ClientQueryProfile and install add_client_contract_endpoint from hypequery.serve. The MCP bridge consumes that endpoint's authorized view; an offline build export cannot be used as live discovery. No Node dataset registry or Python application import is needed.

import {

createMCPHttpExecutor, createMCPProtocolServer, connectMCPServerStdio, } from '@hypequery/mcp';

const url = process.env.HYPEQUERY_CLIENT_CONTRACT_URL; const token = process.env.HYPEQUERY_API_KEY; if (!url || !token) throw new Error('Configure the backend discovery URL and credential.');

const executor = await createMCPHttpExecutor({ url, headers: { authorization: Bearer ${token} }, }); await connectMCPServerStdio(createMCPProtocolServer({ executor }));

The URL is the full discovery endpoint, including its mount prefix. HTTPS is required except for loopback development. URLs cannot contain credentials, queries or fragments. Keep one executor/session per principal; a headers resolver may rotate credentials for that same principal. Browser code must never contain this server credential. To serve the bridge to remote agents, see "Serve over Streamable HTTP" below.

The four tool names stay the same. HTTP mode preserves each authorized endpoint's own dimensions, filters, defaults, time controls and limits. Metric-only groups have queryable: false; inspecting them does not invent a dataset query route. Introspection returns endpoint profiles rather than merging permissions into a synthetic dataset. Unsupported segments, SQL/debug options and caller-selected tenants, tokens, origins or routes are rejected before backend requests.

HTTP query responses preserve the public backend envelope: data, plus optional meta with request ID, timing, row count, pagination and optional cache.hit. Set includeMeta: true when the endpoint advertises metadata and use pagination.hasMore with offset + limit to page. This differs from the existing local executor's cache-status metadata; each mode advertises its actual output schema. Returned rows must contain exactly the selected fields with their advertised scalar/null types. Private diagnostics or unexpected fields fail closed instead of being forwarded to the agent.

The bridge rechecks its authorized view before discovery, prompts and execution, and pins each POST to the validated endpoint schema. View changes or backend 409s invalidate the session: construct a new executor/reconnect explicitly. No query is automatically replayed with new semantics. Backend authorization is still checked on every request, including after discovery.

Budgets default to 30 seconds, 256 KiB discovery/manifests and 1 MiB query responses. HTTP mode has a hard 1 MiB response ceiling, 1,000 rows/filter-list values, 10,000 JSON nodes, 1,000 members per JSON collection and nesting depth 16. Query ceilings can be lowered through queryLimits; unservable default selections are refused rather than silently changed. executionBudget, catalogBudget and maxContractBytes allow smaller deployment limits. Streamed/decompressed bytes are bounded even without Content-Length, and redirects are refused. Request cancellation aborts the HTTP operation; the backend must carry disconnection into its executor (the Python serve adapter does so). End-to-end ClickHouse cancellation remains part of integrated release qualification.

A TypeScript consumer of the MCP SDK needs its Fetch/DOM type names available (e.g. lib: ["ES2022", "DOM"] alongside Node types); this does not require a browser runtime. The repository's installed-artifact smoke checks this without skipLibCheck and without the optional ClickHouse peer installed.

Tools agents receive

  • list_datasets discovers available analytics models;
  • get_dataset_schema explains dimensions, measures, metrics, and relationships;
  • query_metric executes named KPIs;
  • query_dataset explores the fields you chose to publish.

Every tool declares an output schema and returns the same result twice: MCP structuredContent for clients that support typed results, and compact JSON in the text content block for compatibility. Query metadata includes row count, timing when available, pagination state, and cache outcome. Tools also advertise human-readable titles and read-only, non-destructive, idempotent annotations.

Tool failures use a stable structured envelope:

{

"error": { "code": "MCP_INVALID_ARGUMENTS", "category": "correctable_input", "message": "Invalid query_dataset arguments: ...", "retryable": false, "correctable": true } }

Unclassified backend failures are redacted to MCP_EXECUTION_FAILED; database error details and physical SQL are not copied into agent-facing errors.

A hosted server can add retryAfterSeconds, relist, reason (its own stable code), hint (the next action), docsUrl and requestId to an error through MCPToolError's options, and refuse a call over a rate limit with MCP_RATE_LIMITED. mcpToolErrorFromSemanticFailure maps a semantic data-plane failure's code to reason and its relist to relist, and takes the host's retryAfterSeconds, hint, docsUrl and requestId as options. createMCPErrorResponse returns the error in the published envelope.

Safer than raw SQL access

  • Tool schemas come from your TypeScript semantic layer.
  • Advertised schemas and runtime validation use the same canonical catalog compiler and deterministic manifest hash.
  • Filters, fields, ordering, and limits are validated.
  • ClickHouse credentials remain in the server process.
  • SQL text stays hidden by default.
  • Tenant identity comes from trusted host configuration, never the prompt.

For tenant-scoped datasets, run the server programmatically with the trusted tenant ID:

await createMCPServer({

datasets, analytics, name: 'acme-analytics', version: '1.0.0', tenantId: session.accountId, queryLimits: { defaultResultSize: 100, maxResultSize: 1_000, maxOffset: 10_000, }, executionBudget: { timeoutMs: 30_000, maxResponseBytes: 1_048_576, }, });

Every query receives a server-side limit even when the agent omits one. The effective ceiling is the lowest applicable server or Dataset limit. Dimensions, measures, filters, ordering, and pagination offsets also have hard package ceilings that server configuration may lower but cannot raise.

Query calls also have a hard wall-clock deadline and UTF-8 response-byte ceiling. Client cancellation and local deadlines propagate through the semantic client to the backing ClickHouse request. Budget failures use the stable MCP_REQUEST_CANCELLED, MCP_QUERY_TIMEOUT, and MCP_RESULT_TOO_LARGE classifications.

Embed in another MCP transport

The semantic executor is independent of stdio and network lifecycle. A hosted gateway can inject its own MCP transport without reimplementing Hypequery's tools, prompts, catalog schemas, or validation:

import {

createMCPExecutor, createMCPProtocolServer, } from '@hypequery/mcp';

const executor = createMCPExecutor({ datasets, analytics, tenantId: trustedPrincipal.tenantId, });

const server = createMCPProtocolServer({ executor, name: 'acme-hosted-analytics', version: '1.0.0', });

await server.connect(hostTransport);

hostTransport can be an MCP SDK in-memory, stdio, or hosted transport. For an explicit local adapter, use startStdioMCPServer(config). The existing createMCPServer(config) and HypequeryMCPServer.start() APIs remain available for compatibility.

Serve over Streamable HTTP

createMCPHttpHandler serves the same tools to remote agents. It answers Fetch Requests, so it runs on Node (listenMCPHttpServer, createMCPNodeRequestListener), Bun, Deno or Cloudflare Workers. The package imports Node built-ins (node:crypto, node:http, node:stream), so a Worker needs the nodejs_compat compatibility flag:

import {

createMCPExecutor, createMCPHttpHandler, createMCPServeAuthenticator, listenMCPHttpServer, } from '@hypequery/mcp'; import { createJwtStrategy } from '@hypequery/serve';

const handler = createMCPHttpHandler({ authenticate: createMCPServeAuthenticator({ strategies: createJwtStrategy({ jwksUri, issuer, audience: 'https://mcp.example.com/mcp' }), }), createExecutor: principal => createMCPExecutor({ datasets, analytics, tenantId: principal.tenantId }), allowedHosts: ['mcp.example.com'], oauth: { resource: 'https://mcp.example.com/mcp', authorizationServers: ['https://example.auth0.com/'], requiredScopes: ['analytics:read'], }, }); await listenMCPHttpServer(handler, { host: '0.0.0.0', port: 3333 });

Every request checks Host and Origin (DNS-rebinding protection), then its credential. Each session belongs to the principal that opened it and gets its own executor for that principal's tenant. With oauth, the server publishes RFC 9728 protected-resource metadata and answers with RFC 6750 challenges that point at it; your identity provider remains the authorization server. createMCPStaticKeyAuthenticator({ key, tenantId }) is the shared-key alternative. From the CLI: hypequery mcp --http. See Remote MCP over HTTP.

Learn more

License

Apache-2.0.