Skip to main content
Glama
VAIBHAV7500

sqlpad-mcp

by VAIBHAV7500

SQLPad MCP Server

npm version License: MIT node

SQLPad 用の MCP サーバーです。AI エージェントを SQLPad インスタンスのベース URL とサービス トークンに向けると、エージェントは接続の検出、スキーマの検査、SQL の実行、保存済みクエリの管理を行うことができます。

要件

  • Node.js 20 以降。

  • 到達可能な SQLPad インスタンス。

  • SQLPad サーバーには SQLPAD_SERVICE_TOKEN_SECRET が設定されている必要があります。これがないと、Bearer 認証されたすべてのリクエストは 401 Unauthorized を返します。

  • SQLPad 管理 GUI で生成されたサービス トークン。

Related MCP server: SQLite Database MCP Server

クイックスタート

インストール手順は不要です。npm から直接実行できます:

SQLPAD_SERVICE_TOKEN=... npx sqlpad-mcp --base-url https://sqlpad.example.com

または、グローバルにインストールします:

npm install -g sqlpad-mcp

サーバーは stdio 経由で MCP を話すため、通常は手動ではなく MCP クライアントによって起動されます。直接実行しても資格情報の確認には役立ちます。成功すると、検出された SQLPad のバージョンが stderr に記録されます。

構成

環境変数

CLI フラグ

デフォルト

説明

SQLPAD_BASE_URL

--base-url

(必須)

SQLPad インスタンスのベース URL。サブパス マウントに対応しています。

SQLPAD_SERVICE_TOKEN

--token

(必須)

サービス トークン。Authorization: Bearer として送信されます。

SQLPAD_ALLOW_WRITES

--allow-writes

false

保存済みクエリの書き込みツールを登録します。

SQLPAD_ALLOW_ADMIN

--allow-admin

false

管理者専用ツールを登録します。

SQLPAD_MAX_ROWS

--max-rows

500

ステートメントごとに返される行数の上限。

SQLPAD_TIMEOUT_MS

--timeout-ms

60000

再開可能な batchId を返す前にバッチをポーリングする時間。

CLI フラグは対応する環境変数よりも優先されます。バッチのポーリング間隔 (250 ms) は内部的なものであり、設定できません。

Claude Code の構成

サーバーを Claude Code の mcp.json に追加します:

{
  "mcpServers": {
    "sqlpad": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "sqlpad-mcp",
        "--base-url",
        "https://sqlpad.example.com"
      ],
      "env": {
        "SQLPAD_SERVICE_TOKEN": "..."
      }
    }
  }
}

env を通じてトークンを指定すると、プロセス引数リストから除外されます。プロセス引数リストは ps で誰でも読み取れるためです。

ゲートされたツール グループを有効にするには、同じ env ブロックに "SQLPAD_ALLOW_WRITES": "true" または "SQLPAD_ALLOW_ADMIN": "true" を追加します。

ツール

12 個のツールは常に登録されます。さらに 6 個は 2 つの SQLPAD_ALLOW_* フラグの背後にあり、デフォルトではオフになっています。

実行

ツール

説明

run_sql

非同期 SQLPad バッチを作成し、完了までポーリングして、行をインラインで返すことで、DDL や DML を含む任意の SQL を実行します。サンドボックス化されていません。行数は maxRows で制限され、切り捨ては明示的に報告されます。タイムアウト時には batchId を返すため、再実行ではなく実行を再開できます。失敗したステートメントには、schema. 修飾が必要なテーブル名など、原因が認識できる場合に error.hint が含まれます。

get_batch

バッチとその現在のステートメントの状態を取得します。run_sql がタイムアウトした後、またはバッチがまだキューに入っているか実行中の場合に呼び出します。

get_statement_results

クエリを再実行する代わりに、大きな完了済みステートメント結果をページングします。ステートメントの列名を使用してオブジェクトに変換された、制限付きのページを返します。

cancel_batch

非同期バッチのキャンセルを要求します。接続が非同期実行をサポートしていない場合、SQLPad はキャンセルを拒否します。

検出

ツール

説明

list_connections

サービス トークンが利用できる接続を一覧表示します。get_connection とは異なり、非管理者トークンでも動作します。

get_connection_schema

接続の制限付きデータベース スキーマを取得します。フィルターなしの完全なスキーマ出力は非常に大きくなる可能性があるため、schemaFilter または tableFilter を優先し、列の詳細が必要でない限りサマリー モードを使用してください。

list_drivers

SQLPad データベース ドライバーを、要求された制限に基づいて一覧表示します。

保存済みクエリ

ツール

説明

list_queries

オプションの接続、テキスト、タグ、所有権、作成者、並べ替えフィルターを使用して保存済みクエリを一覧表示します。

get_query

ID で 1 つの保存済みクエリを取得します。

list_tags

保存済みクエリのタグを、制限付きのローカル ページネーションで一覧表示します。

list_query_history

呼び出し元ユーザーのクエリ履歴を、新しい順に、制限付きのローカル ページネーションで一覧表示します。

format_sql

SQLPad を使用して SQL テキストをフォーマットします。古い SQLPad サーバーではこのエンドポイントが提供されない場合があります。

保存済みクエリの書き込み — SQLPAD_ALLOW_WRITES=true が必要

ツール

説明

create_query

保存済みクエリを作成します。

update_query

既存の保存済みクエリの編集可能なフィールドを置き換えます。

delete_query

保存済みクエリを完全に削除します。

管理者 — SQLPAD_ALLOW_ADMIN=true が必要

これらは、管理者サービス トークンを必要とする SQLPad エンドポイントを呼び出します。

ツール

説明

get_connection

ID で 1 つの接続を取得します。

test_connection

保存せずに接続構成をテストします。

list_users

SQLPad ユーザーを、明示的な出力制限付きで一覧表示します。

SQL 実行の仕組み

SQLPad は非同期バッチを通じて SQL を実行します。バッチの作成は即座に返され、各ステートメントは queued から started に移行し、その後 finished または error になります。結果はステートメントごとに個別に取得され、そのステートメントが完了するまで利用できません。

run_sql ツールは、作成、ポーリング、取得、行の返却という完全なプロトコルを吸収するため、エージェントは 1 回の呼び出しで済みます。ポーリングが設定されたタイムアウトに達すると、ツールは batchId を返し、エージェントはハングせずに再開できます。

接続にはデフォルト データベースがない場合があります。テーブル名は schema.table のように修飾し、get_connection_schema を使用して利用可能なスキーマを確認してください。

セキュリティ

  • run_sql は DDL や DML を含む任意の SQL を実行し、サンドボックス化されていません。SQLPAD_ALLOW_WRITES は SQLPad 自身の保存済みクエリ オブジェクトの変更のみを制限し、SQL コンテンツを制限するものではありません。SQLPad 接続自体には読み取り専用のデータベース資格情報を使用してください。それが唯一の実際の強制手段です。

  • SQLPad の /api/service-tokens エンドポイントは意図的に公開されていません。資格情報を発行するツールは権限昇格のプリミティブです。

  • 管理者ツールはデフォルトでオフです。

  • サービス トークンはすべてのエラーとログから編集されます。stdout は JSON-RPC チャネルであるため、すべてのログは stderr に出力されます。

  • バッチはトークン自身のユーザーにスコープされるため、サーバーは常に自身のクエリ履歴のみを参照します。

コントリビューション

リポジトリをクローンして依存関係をインストールします:

git clone https://github.com/VAIBHAV7500/sqlpad-mcp.git
cd sqlpad-mcp
npm install
npm run build

変更用のブランチを作成します。プル リクエストを開く前に、次を実行します:

npm run typecheck && npm run lint && npm test

CI は Node 20 と 22 で同じ 3 つのコマンドを実行します。

ライセンス

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to query databases via natural language using the Model Context Protocol, with automatic schema discovery, SQL query execution, and read-only safety checks.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to connect to and query an SQLite database through the Model Context Protocol, allowing natural language interaction with database tables and data.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to search and read Metabase dashboards and cards, explore database schema, and run read-only query previews through the Model Context Protocol.
    17
    15 npm
    2
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query, analyze, and manage SQL Server databases through natural language via the Model Context Protocol.
    6
    1
    -