mcpField
N
NexQL Postgres MCP

NexQL Postgres MCP

本地服务
github.com数据库02 天前更新

关于 NexQL Postgres MCP

NexQL Postgres MCP 是一个独立的 Rust 服务,可供 MCP 客户端连接 PostgreSQL。它结合离线架构索引与查询、上下文、性能、写入和管理工具,并通过访问模式控制操作。

主要功能

  1. 01离线架构索引与关系图
  2. 0254 个架构、查询及 DBA 工具
  3. 03读取、写入和管理访问模式
  4. 04stdio 与 HTTP 传输
  5. 05CLI 配置档案与客户端设置

适用场景

  1. 01查找陌生架构中的表和关系
  2. 02通过 MCP 客户端执行只读查询
  3. 03检查数据库健康状态、锁和索引
  4. 04为客户端配置已保存的数据库连接

MCP 相关

向 MCP 客户端提供 PostgreSQL 架构、查询、上下文、性能、写入和管理工具。支持 stdio 启动,也支持带 bearer 身份验证和会话的 HTTP。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
npmnexql-mcp0.2.4
cargonexql-mcp0.2.4

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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 x64nexql-mcp-<tag>-x86_64-unknown-linux-gnu.tar.gz
Linux arm64nexql-mcp-<tag>-aarch64-unknown-linux-gnu.tar.gz
macOS Intelnexql-mcp-<tag>-x86_64-apple-darwin.tar.gz
macOS Apple Siliconnexql-mcp-<tag>-aarch64-apple-darwin.tar.gz
Windows x64nexql-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。

  1. 设置 → 搜索 NexQL: Mcp: Enabled(postgresExplorer.mcp.enabled)→ 勾选。默认关闭。
  2. 就这么简单 — 设置会立即生效(无需重新加载),并读取 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 验证
1nexql-conn + nexql-policy + pg_query 验证器
2MCP stdio 传输 + 约 8 个目录工具
3nexql-index(与 TS 格式按字节兼容)
4完整工具集、资源、提示词、补全
5本地嵌入 + RRF 融合
6发布 v1.0:cargo-dist、npm、brew、Docker、MCPB
7扩展切换 — VS Code 通过 stdio MCP 定义启动二进制文件
8Streamable HTTP + bearer token(--http / NEXQL_MCP_HTTP_TOKEN)— OAuth 网关 = 专业版
9写入/管理工具 + validate_write_sql(选择加入 --access-mode write|admin)
10Agent 易用性 — 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.ts
  • pro/src/providers/chat/tools/ToolExecutor.ts
  • pro/src/features/dbindex/*

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。