PostgreSQL MCP 服务端
使用说明(Markdown 格式)
-
项目简介
- 这是一个面向 MCP 客户端的服务器实现,使用 Node.js 编写,连接 PostgreSQL 数据库,向 LLM 客户端暴露数据库中的资源、可执行的工具以及查询与分析能力。通过 MCP 约定的 JSON-RPC 形式与客户端通信,支持通过标准接口读取资源、调用工具、获取工具清单等。
-
主要功能点
- 资源管理:将数据库中的表视为资源,客户端可以列出资源、读取资源(表数据的前 100 行预览)等。
- 工具集成:提供多种工具,如列出表、描述表、列出索引、列出约束、在表中搜索文本、执行只读查询、执行修改性查询、获取执行计划等。
- 安全与健壮性:对输入进行基本校验,/SELECT 等只读操作有简单校验,表名和对象名进行一定的防注入判断。
- 通信传输:使用 Stdio 传输实现 MCP 的请求-响应模式,后续可扩展至其他传输(如 SSE、WebSocket 等)。
- 会话与能力:服务器注册能力(工具与资源)并对外提供相应的 API,便于 MCP 客户端获取能力声明。
-
安装步骤
- 先决条件
- Node.js 版本 18 及以上
- PostgreSQL 数据库可访问
- 获取与准备
- 将代码克隆到本地并安装依赖
- 根据需要修改数据库连接信息
- 构建与运行
- 运行构建命令将 TypeScript 转译为可执行的 JS
- 以环境变量 DATABASE_URL 启动服务(若使用 .env,请确保在正确工作目录下加载)
- 启动后,服务将通过标准输入/输出(Stdio)与 MCP 客户端通信
- 先决条件
-
服务器配置(JSON 配置示例,供 MCP 客户端使用) 说明:MCP 客户端需要知道服务器的启动命令及参数,以便与 MCP 服务器建立连接。以下为基于仓库信息的准确描述,请勿直接拷贝运行于你环境,需要按实际路径与环境调整。 { "mcpServers": { "postgre-server": { "name": "mcp-postgre-server", "command": "node", "args": ["build/index.js"], "env": { "DATABASE_URL": "postgresql://myuser:mypassword@localhost:5432/mydatabase" } // 注释:若使用 .env 文件,请确保在运行目录下存在正确的 .env } } }
-
基本使用方法
- 启动服务
- 在项目根目录确保数据库连接信息正确(DATABASE_URL)
- 运行构建并启动:npm install、npm run build、node build/index.js(或按你的路径配置执行)
- 配置客户端
- 将上述 JSON 配置提交给 MCP 客户端(如 VSCode 扩展、Antigravity 等),以告知客户端如何启动并连接到服务器
- 常用操作演示
- 请求列出数据库中的资源(表信息)
- 请求读取某个表的前 100 行数据作为示例内容
- 请求列出/描述某个表、执行只读查询、解释执行计划等工具操作
- 重要注意
- 生产环境应加强安全策略、对 SQL 使用进一步的输入校验与访问控制
- 启动服务