NexQL Postgres MCP について
NexQL Postgres MCPは、MCPクライアントからPostgreSQLへ接続する独立したRustサーバーです。オフラインのスキーマ索引と、クエリ、コンテキスト、性能、書き込み、管理ツールを備え、アクセスモードで操作を制御します。
主な機能
- 01オフラインのスキーマ索引と関係グラフ
- 02スキーマ・クエリ・DBA向け54ツール
- 03読み取り・書き込み・管理のアクセスモード
- 04stdioとHTTPのトランスポート
- 05CLIプロファイルとクライアント設定
活用シーン
- 01不慣れなスキーマのテーブルや関係の検索
- 02MCPクライアントからの読み取り専用クエリ
- 03データベースの状態、ロック、インデックスの確認
- 04保存済みの接続プロファイルを使うクライアント設定
MCP 対応
MCPクライアントにPostgreSQLのスキーマ、クエリ、コンテキスト、性能、書き込み、管理ツールを公開します。stdioでの起動と、Bearer認証およびセッション対応のHTTPをサポートします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
nexql-mcp
スタンドアロンの Postgres MCP サーバー — スキーマを認識し、デフォルトで読み取り専用、あらゆる環境にインストールできます。
NexQL Pro には、VS Code 専用のインプロセス MCP サーバーが含まれています(pro/src/mcp/)。このリポジトリではその機能を独立した Rust バイナリとして切り出し、Claude Desktop、Cursor、VS Code Copilot、Zed など、あらゆる MCP クライアントから起動できるようにしています。
ステータス: フェーズ 0〜6、フェーズ 7 拡張機能の切り替え(stdio 起動)、フェーズ 8 HTTP(ベアラートークン、セッション、レート制限)、フェーズ 9 書き込み/管理ツールを実装済みです。スキーマ、クエリ、コンテキスト、パフォーマンス、書き込み、管理の各領域にまたがる 54 個のツールを備えています。完全な OAuth ゲートウェイは引き続き Pro 専用です。セッションストアの LRU 追い出し上限はまだ実装されていません。docs/CUTOVER.md をご覧ください。
開発の背景
競合する Postgres MCP サーバーが公開するのは、「接続 → クエリ実行 → 行を返す」という機能です。モデルは、実在しないスキーマに対してテーブル名を幻覚します。NexQL の強みは、pro/src/features/dbindex/ で構築されるオフラインのスキーマインデックスです(TF-IDF、推論した FK を含む結合グラフ、値プロファイル、オプションの埋め込み、RRF 融合)。このリポジトリでは、そのインデックスに加え、Pro のクエリ/スキーマ/DBA/メタデータ用ツール 54 個を高速で簡単にインストールできるバイナリに移植しています。
アーキテクチャ
crates/
├── nexql-mcp/ CLI, subcommands, wiring (binary)
├── nexql-proto/ MCP JSON-RPC types, transports
├── nexql-tools/ tool registry, schemas, executors
├── nexql-index/ dbindex port (builder, store, lexical, joins, embed)
├── nexql-conn/ connection resolution, pool, credentials
└── nexql-policy/ access modes, allow/deny, PII, caps, audit
npm/ npx shim (per-platform optionalDependencies)
mcpb/ one-click Claude Desktop bundle
docs/ per-client setup, tool reference
レイヤーの依存関係は一方向です。policy と conn は末端 → index → tools → バイナリの順に依存します。nexql-tools が nexql-proto に依存することはありません。
スコープの境界: nexql-mcp は、接続先データベース内のオブジェクト(テーブル、インデックス、列など)を管理します。データベースカタログ自体は管理しません。すべてのアクセスモードで CREATE DATABASE/DROP DATABASE は拒否されます。これは意図的に設けた恒久的なスコープであり、機能の欠落ではありません。docs/tools/README.md と docs/REFERENCE.md をご覧ください。
インストール
npx — 推奨、インストール不要
npx -y nexql-mcp@latest postgres://dev@localhost:5432/appdb doctor
-y を指定すると「続行してもよろしいですか?」という確認プロンプトを省略できます。@latest を指定すると、npx のキャッシュにあるバージョンではなく、常に最新の公開リリースが選ばれます。必ず両方を組み合わせて使ってください。これが nexql-mcp の推奨実行方法です。別途インストールする必要も、PATH に追加するものもなく、人が入力する場合も AI エージェントが代わりに実行する場合も同じように動作します。Node.js が必要です(npx は Node.js に同梱されています)。それ以外は必要ありません。
# Verify
npx -y nexql-mcp@latest --version
# Setup
npx -y nexql-mcp@latest setup # initialize connections and db profiles
# Wire your MCP client (or run the guided wizard)
npx -y nexql-mcp@latest init cursor # Cursor
npx -y nexql-mcp@latest init claude-desktop # Claude Desktop
npx -y nexql-mcp@latest init vscode-copilot # VS Code Copilot
npx -y nexql-mcp@latest tui # interactive profile + client wiring
クライアント設定(command/args)にも同じパターンを使うため、クライアント側でもインストールは不要です。
{
"mcpServers": {
"nexql-mcp": {
"command": "npx",
"args": ["-y", "nexql-mcp@latest", "--profile", "mydb"]
}
}
}
AI コーディングエージェントとして、ユーザーに代わってこの設定を行う場合:
npx -y nexql-mcp@latest init <client> --applyを実行してください。非対話型でブラウザーは不要です。クライアント設定をマージして直接書き込みます(claude-codeの場合は.mcp.json、claude-desktopの場合はclaude_desktop_config.jsonなど。クライアントごとの正確なパスは docs/clients/README.md をご覧ください)。または、nexql-mcp setupの HTTP API を直接呼び出します:POST /api/v1/clients/preview→POST /api/v1/clients/apply(起動時にベアラートークンが stderr に出力されます)。claude mcp add形式のシェルコマンドを手書きしたり、クライアントの JSON 設定を自分で解析してマージしたりするよりも、この方法を優先してください。
クライアントごとの設定パスと貼り付け用ブロック:docs/clients/README.md。
恒久的な nexql-mcp を PATH に配置し、npx -y nexql-mcp@latest の繰り返しを避けたい場合は、npm install -g nexql-mcp も使えます。仕組みは同じシムで、同じ @nexql/mcp-<os>-<arch> のビルド済みバイナリを使用し、どちらの方法でも Rust ツールチェーンは不要です。
Linux のシステム要件: ビルド済み GNU/Linux バイナリの対象は glibc 2.35 以降です(Ubuntu 22.04、Debian 12、RHEL 9 以降)。npx/npm で GLIBC_2.39 not found エラーが発生する場合は、以下の代替方法をお使いください(cargo install はソースからビルドします。Docker では glibc 自体が不要です)。Musl/静的リンク版の Linux ビルドはまだ公開されていません。
その他のインストール方法(代替手段)
npx が使えない場合に限り、次のいずれかをお選びください。たとえば、オフラインまたはエアギャップ環境の場合、固定バイナリを組み込んだ CI イメージを使う場合、Node.js がない場合、あるいは恒久的なインストールを希望する場合です。いずれも npm パッケージと同じバイナリを提供します。
クイックインストールスクリプト(Linux/macOS/Windows) — 永続的なバイナリをインストールします。Node.js は不要です
Linux と macOS — 最新リリースをダウンロードして、/usr/local/bin(sudo が使用できない場合は ~/.local/bin)にインストールし、セットアップ手順を表示します:
curl -fsSL https://raw.githubusercontent.com/NexQL-OSS/mcp/main/scripts/install.sh | bash
バージョンを固定する場合:
NEXQL_MCP_VERSION=v0.2.2 curl -fsSL https://raw.githubusercontent.com/NexQL-OSS/mcp/main/scripts/install.sh | bash
Windows(PowerShell)— %LOCALAPPDATA%\Programs\nexql-mcp にインストールし、ユーザーの PATH に追加します:
irm https://raw.githubusercontent.com/NexQL-OSS/mcp/main/scripts/install.ps1 | iex
バージョンを固定する場合:
$env:NEXQL_MCP_VERSION = "v0.2.2"; irm https://raw.githubusercontent.com/NexQL-OSS/mcp/main/scripts/install.ps1 | iex
または、スクリプトをダウンロードしてローカルで実行できます:scripts/install.sh · scripts/install.ps1。インストール後は、上記の各コマンドで npx -y nexql-mcp@latest の部分を省き、nexql-mcp を直接呼び出せます。
uv(PyPI)
uv は、PyPI の CLI ツールを分離された環境にインストールします。同じプリビルドバイナリを利用でき、Rust ツールチェーンは不要です。
uv 自体をインストールします(必要な場合):
curl -LsSf https://astral.sh/uv/install.sh | sh # macOS / Linux
irm https://astral.sh/uv/install.ps1 | iex # Windows
nexql-mcp をインストールします:
uv tool install nexql-mcp
uv tool update-shell # once, if uv warns the tool bin dir is not on PATH
インストールせずに一度だけ実行する場合(uv での npx -y 相当):
uvx nexql-mcp postgres://dev@localhost:5432/appdb doctor
バージョンを固定する場合:
uv tool install 'nexql-mcp==0.2.2'
後でアップグレードする場合:
uv tool upgrade nexql-mcp
PyPI の状況: wheel はまだ公開されていません。最初の PyPI リリースまでは、上記の npx またはクイックインストールスクリプトを使用してください。メンテナー向けの手順:docs/publish-pypi-uv.md。
cargo(crates.io) — ソースからビルド
cargo install nexql-mcp
先に clang/libclang が必要です(pg_query の bindgen で必要です):
sudo apt install clang libclang-dev # Debian/Ubuntu
sudo pacman -S clang # Arch
手動ダウンロード — リリースアーカイブを直接ダウンロード
リリースページからダウンロードします:
| プラットフォーム | アーカイブ |
|---|---|
| Linux x64 | nexql-mcp-<tag>-x86_64-unknown-linux-gnu.tar.gz |
| Linux arm64 | nexql-mcp-<tag>-aarch64-unknown-linux-gnu.tar.gz |
| macOS Intel | nexql-mcp-<tag>-x86_64-apple-darwin.tar.gz |
| macOS Apple Silicon | nexql-mcp-<tag>-aarch64-apple-darwin.tar.gz |
| Windows x64 | nexql-mcp-<tag>-x86_64-pc-windows-msvc.tar.gz |
展開して、nexql-mcp(または nexql-mcp.exe)を PATH に追加します。
Docker
ビルド済みイメージは、リリースごとに GHCR に公開されます:
docker run --rm -i ghcr.io/nexql-oss/mcp:0.5.0 postgres://[email protected]:5432/appdb
# or: ghcr.io/nexql-oss/mcp:latest
または、distroless Dockerfile からローカルでビルドします:
docker build -t nexql-mcp:0.5.0 .
docker run --rm -i nexql-mcp:0.5.0 postgres://[email protected]:5432/appdb
Claude Desktop(MCPB ワンクリックバンドル)
各リリースには、プラットフォーム用の .mcpb バンドル(nexql-mcp-<vendor>.mcpb)が添付されます。リリースページからお使いの OS/アーキテクチャに合ったものをダウンロードし、ダブルクリックして Claude Desktop にインストールしてください。scripts/package-mcpb.sh を使い、mcpb/manifest.json からビルドされます。
Homebrew
公開済みの tap はまだありません。各リリースでは formula(Formula/nexql-mcp.rb)を生成し(scripts/render-homebrew-formula.sh を使用)、今後の homebrew-tap リポジトリで取得できるよう、リリースアセットとして添付します。tap が利用可能になるまでは、上記の npx またはクイックインストールスクリプトを使用してください。
MCP Registry
公式 MCP Registry に io.github.NexQL-OSS/nexql-mcp(server.json)として登録されています。各リリース後に GitHub OIDC を使って自動公開されます(認証情報の保存は不要です)。詳細は .github/workflows/publish-mcp-registry.yml をご覧ください。
- mcp-name: io.github.NexQL-OSS/nexql-mcp
ソースから
export LIBCLANG_PATH="${LIBCLANG_PATH:-/usr/lib}" # or your llvm lib dir
cargo build --release -p nexql-mcp
./target/release/nexql-mcp postgres://dev@localhost:5432/appdb
以下のコマンドは、
nexql-mcpがPATHで解決されることを前提としています。代わりに npx を使って実行する場合は、nexql-mcpの代わりに各コマンドの先頭にnpx -y nexql-mcp@latestを付けてください。インストールを参照してください。
一時的な接続(設定不要)— 接続文字列を直接渡します。
nexql-mcp postgres://dev@localhost:5432/appdb
保存済みプロファイル — 接続情報を ~/.config/nexql-mcp/config.toml に追加します(NEXQL_MCP_CONFIG でパスを変更できます)。
default_profile = "local"
[profiles.local]
url = "postgres://dev@localhost:5432/appdb"
access_mode = "read"
[profiles.prod]
host = "prod.example.com"
dbname = "app"
user = "readonly_agent"
password_command = "op read op://vault/pg/password" # never store plaintext secrets
sslmode = "verify-full"
access_mode = "read"
schemas = ["public", "billing"]
deny_tables = ["auth.*"]
pii_columns = ["public.users.ssn", "public.users.email"]
max_rows = 200
フィールドの完全な一覧は、docs/config.example.toml を参照してください。その後、引数なし(nexql-mcp)で実行して default_profile を使用するか、nexql-mcp --profile prod を実行します。
クライアントに接続する前に、接続をテストします。
nexql-mcp postgres://dev@localhost:5432/appdb doctor
# or, for a saved profile (note: --profile goes before the subcommand):
nexql-mcp --profile prod doctor
ガイド付きセットアップ — インタラクティブなプロファイルエディターと、使用するクライアントへのワンキー接続設定を利用できます。
nexql-mcp tui— ターミナル UI(下記のインタラクティブ TUIを参照)nexql-mcp setup— ループバック上のブラウザー UI(プロファイル、クライアント接続設定、npx/パス起動の切り替え)。npx -y nexql-mcp@latest setupでも実行できます。
クライアントを接続する
nexql-mcp postgres://dev@localhost:5432/appdb init cursor
init がサポートするクライアント:claude | claude-desktop | claude-code | cursor | vscode | vscode-copilot | zed | windsurf | continue | jetbrains | openai-agents。
クライアントごとの貼り付け用ブロック:docs/clients/README.md。
ツールの範囲/コンテキスト予算
--tools query|dba|meta|full(環境変数:NEXQL_MCP_TOOLS)は、クライアントに提示するツールを制限します。これはコンテキストウィンドウの予算を調整するためのものであり、セキュリティ境界ではありません。あくまで参考情報です。呼び出しで実際に可能な操作を制御するのは、nexql-policy の access_mode(read/write/admin。--access-mode またはプロファイルの access_mode で設定)です。エージェントのコンテキストウィンドウに読み込まれるツールスキーマ JSON の量を減らしたい場合に限り、より範囲の狭いプロファイルを選択してください。
query— 基本的なクエリ/検索ツール(スキーマ検索、run_select、explain_query、…)dba— 監視/管理ツール(ヘルスチェック、インデックスの提案、ロック、…)meta— 初期状態での範囲が最小限で、discover_toolsを使って残りを必要に応じて有効化できます(docs/tools/README.mdを参照)full(デフォルト)— 有効なすべてのツール
プロファイルごとの正確な構成は、nexql-tools/src/registry.rs の QUERY_PROFILE/DBA_PROFILE/META_PROFILE/ACTIVE 定数を参照してください。
NexQL VS Code 拡張機能で使う
ric-v.postgres-explorer(+NexQL Pro)をすでに使っている場合は、上記の設定は不要です。拡張機能がこのバイナリを独自に起動し、別の config.toml を使わずに既存の保存済み接続を再利用できます。
- Settings → NexQL: Mcp: Enabled(
postgresExplorer.mcp.enabled)を検索し、チェックを入れます。デフォルトではオフです。 - 以上です。設定はすぐに反映され(再読み込みは不要)、
postgresExplorer.connectionsに保存済みのすべての接続が読み込まれます。Copilot Chat/エージェントモードのツール選択画面に、NexQL という名前の MCP サーバーとして表示されます。
拡張機能は次の順序でバイナリを解決します:postgresExplorer.mcp.binaryPath 設定 → NEXQL_MCP_BIN 環境変数 → 拡張機能に同梱されたコピー → PATH 上の nexql-mcp(つまり、上記の npm/cargo/curl 経由でインストールされたもの)。拡張機能に特定のインストールを使用させたい場合は、postgresExplorer.mcp.binaryPath を明示的に設定してください。
対話型 TUI
nexql-mcp tui
ガイド付きプロファイルエディター:接続プロファイルの追加・編集・削除、保存前のライブ接続テストを行い、7 つのクライアント(Claude Desktop、Claude Code、Cursor、VS Code、Copilot Chat、Zed、Windsurf)のいずれかを選んで、一度に設定できます。選択した各クライアントの実際の設定ファイルを読み込み、マージし(既存の無関係なサーバーは保持されます)、差分を表示して、確認後にのみ書き込みます。タイムスタンプ付きのバックアップも同じ場所に保存されます。continue / jetbrains / openai-agents には安全にマージできるディスク上の保存先がないため、init と同様に、概要画面にコピー&ペースト用のスニペットとして表示されます。
キー:n 新規作成 · e/Enter 編集 · d 削除 · t テスト · w クライアントへの設定 · q 終了。接続先がほかに解決されない場合、URL もフラグも指定せずに nexql-mcp を実行すると、TUI が自動的に起動します。
リリース
v* タグをプッシュすると .github/workflows/release.yml が起動し、
darwin arm64/x64、linux gnu arm64/x64、windows x64 向けにビルドします。アーカイブ、プラットフォームごとの .mcpb バンドル、
CycloneDX SBOM、レンダリング済みの Homebrew formula を GitHub リリースに添付し、npm パッケージと
GHCR イメージを公開します。また、依存関係の順序に従ってワークスペースのクレートを crates.io に公開します。後続のワークフロー
(publish-mcp-registry.yml) では、GitHub OIDC を介してリリースを
MCP Registry に登録します。Linux GNU バイナリは Ubuntu 22.04(glibc 2.35)上でビルドされます。Musl ターゲットは、clang 対応の musl ビルダーの検証が完了するまで延期されています。
開発
cargo check # workspace compile
cargo run -p nexql-mcp -- doctor
cargo test -p nexql-mcp -- init_clients
cargo fmt --all
cargo clippy --workspace --all-targets
実装する前に、CLAUDE.md と docs/REFERENCE.md をお読みください。
ライセンス
このリポジトリのすべてのクレートは、v0.2.0 以降 GPL-3.0-only です。この プログラムまたはその派生物を、別のアプリケーションに同梱する場合も含めて配布する場合は、 ソースコードも GPL に基づいて公開する必要があります。
v0.1.6 までのリリースは Apache-2.0 の下で公開されました。この許諾は これらのバージョンについて取り消し不能であり、今回の変更の影響を受けません。
著作権は NexQL-OSS Team のみに帰属するため、GPL の義務を免除する商用ライセンスは ご要望に応じて提供しています。プレミアム拡張機能(プロバイダー埋め込み、 チーム同期、ホスト型ゲートウェイ)は、別のプロプライエタリクレートで提供しています。
ロードマップ
| フェーズ | 成果物 |
|---|---|
| 0 | 技術検証:tokio-postgres + candle MiniLM の実証 |
| 1 | nexql-conn + nexql-policy + pg_query バリデーター |
| 2 | MCP stdio トランスポート + 約 8 個のカタログツール |
| 3 | nexql-index(TS 形式とバイト互換) |
| 4 | ツール、リソース、プロンプト、補完機能の完全な実装 |
| 5 | ローカル埋め込み + RRF 融合 |
| 6 | v1.0 リリース:cargo-dist、npm、brew、Docker、MCPB |
| 7 | 拡張機能の切り替え — VS Code が stdio MCP 定義を介してバイナリを起動 |
| 8 | Streamable HTTP + ベアラートークン(--http / NEXQL_MCP_HTTP_TOKEN)— OAuth ゲートウェイは pro |
| 9 | 書き込み/管理ツール + validate_write_sql(オプトインの --access-mode write|admin) |
| 10 | エージェントの使いやすさ — 1 回の呼び出しで初期化する orient、discover_tools + コンテキスト予算プロファイル用の --tools、init <client> --apply、save_profile のマージセマンティクス、破壊的操作の確認ゲートを備えた apply_ddl、呼び出しごとの timeout_ms(docs/roadmap/claude-review-2026-08-23.md) |
全体計画:社内設計ドキュメント(federated-greeting-badger)。切り替えの詳細:docs/CUTOVER.md。
リファレンス実装
隣接する nexql-pro チェックアウト内の TypeScript ソース(チャットでは引き続き使用されています。MCP HTTP スタックは削除済みです):
pro/src/mcp/McpDefinitionProvider.ts— このバイナリを stdio で起動pro/src/mcp/NexqlMcpStdioHost.ts— 一時的なプロファイル + バイナリの解決pro/src/providers/chat/tools/ToolSpec.tspro/src/providers/chat/tools/ToolExecutor.tspro/src/features/dbindex/*
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。