关于 NexQL Postgres MCP
NexQL Postgres MCP 是一个独立的 Rust 服务,可供 MCP 客户端连接 PostgreSQL。它结合离线架构索引与查询、上下文、性能、写入和管理工具,并通过访问模式控制操作。
主要功能
- 01离线架构索引与关系图
- 0254 个架构、查询及 DBA 工具
- 03读取、写入和管理访问模式
- 04stdio 与 HTTP 传输
- 05CLI 配置档案与客户端设置
适用场景
- 01查找陌生架构中的表和关系
- 02通过 MCP 客户端执行只读查询
- 03检查数据库健康状态、锁和索引
- 04为客户端配置已保存的数据库连接
MCP 相关
向 MCP 客户端提供 PostgreSQL 架构、查询、上下文、性能、写入和管理工具。支持 stdio 启动,也支持带 bearer 身份验证和会话的 HTTP。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
nexql-mcp
独立的 Postgres MCP 服务——了解架构,默认只读,可在任何地方安装。
NexQL Pro 附带一个仅限 VS Code 使用的进程内 MCP 服务(pro/src/mcp/)。本仓库将该功能提取为独立的 Rust 二进制文件,任何 MCP 客户端都可以启动它:Claude Desktop、Cursor、VS Code Copilot、Zed 等。
状态: 阶段 0–6、阶段 7 扩展切换(stdio 启动)、阶段 8 HTTP(bearer、会话、速率限制)和阶段 9 写入/管理工具均已完成。Schema、Query、Context、Perf、Write 和 Admin 共 54 个工具。完整的 OAuth 网关仍仅限 Pro 使用;尚未实现会话存储的 LRU 驱逐上限。参见 docs/CUTOVER.md。
为什么要做这个项目
其他 Postgres MCP 服务只提供 连接 → 运行查询 → 返回行。模型会针对不存在的架构臆造表名。NexQL 的优势在于离线架构索引(TF-IDF、含推断外键的连接图、值概况、可选嵌入、RRF 融合),该索引构建于 pro/src/features/dbindex/。本仓库将该索引以及 Pro 中的 54 个查询/架构/DBA/元数据工具移植为快速、易于安装的二进制文件。
架构
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 Agent 代为运行,效果都一样。需要 Node.js(随附 npx),不需要其他依赖。
# 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 编码 Agent:**运行
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 的 bearer token)。建议使用此方式,而不是手动编写claude mcp add风格的 shell 命令,或自行解析并合并客户端的 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 状态: 尚未发布 wheels。首个 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
手动下载 — 手动获取发布压缩包
从Releases 页面获取:
| 平台 | 压缩包 |
|---|---|
| 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)— 从Releases 页面下载适用于你操作系统和架构的安装包,然后双击即可安装到 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 设置)。只有在想减少加载到 Agent 上下文窗口中的工具架构 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。
- 设置 → 搜索 NexQL: Mcp: Enabled(
postgresExplorer.mcp.enabled)→ 勾选。默认关闭。 - 就这么简单 — 设置会立即生效(无需重新加载),并读取
postgresExplorer.connections中已保存的所有连接。它会在 Copilot Chat / Agent 模式工具选择器中显示为名为 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 退出。如果没有其他方式解析出连接,直接运行 nexql-mcp(不带 URL 或标志)会自动启动 TUI。
发布
推送 v* 标签会触发 .github/workflows/release.yml:构建
darwin arm64/x64、linux gnu arm64/x64 和 windows x64 版本;将归档文件、各平台的 .mcpb 捆绑包、
CycloneDX SBOM 和渲染后的 Homebrew 公式附加到 GitHub 发布;发布 npm 软件包和
GHCR 镜像;并按依赖顺序将工作区 crate 发布到 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 起,本仓库中的所有 crate 均采用 GPL-3.0-only 许可证。如果你分发此 程序或其衍生作品(包括捆绑在其他应用程序中的版本),也必须在 GPL 许可证下 发布源代码。
截至 v0.1.6(含)的版本均以 Apache-2.0 许可证发布。该授权对这些版本 不可撤销,且不受此变更影响。
版权仅由 NexQL-OSS Team 持有,因此可按需提供免除 GPL 义务的商业许可证。高级扩展(提供方嵌入、 团队同步、托管网关)位于单独的专有 crate 中。
路线图
| 阶段 | 交付内容 |
|---|---|
| 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 + bearer token(--http / NEXQL_MCP_HTTP_TOKEN)— OAuth 网关 = 专业版 |
| 9 | 写入/管理工具 + validate_write_sql(选择加入 --access-mode write|admin) |
| 10 | Agent 易用性 — 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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。