使用说明
PostgreSQL MCP服务器
一个模型上下文协议(MCP)服务器,通过STDIO(主传输)和一个实验性的SSE HTTP接口公开PostgreSQL模式探索和查询工具。
特性
- 工具:
health_check–快速连接检查get_schema–完整列列表(不包括系统模式)list_tables–列出用户表describe_table–描述一个特定的表(“schema.table”)select–安全的SELECT查询执行execute–INSERT/UPDATE/DELETE/DDL(非SELECT)返回rowCountrun_query无限制的SQL(谨慎使用)
- 通过CLI参数或环境变量进行配置
- 通过连接池
pg - 可与STDIO上任何兼容MCP的IDE/客户端配合使用
- 用于实验的可选SSE端点(
postgres-mcp-sse二进制)
安装
npm install -g postgres-mcp-server
(或者克隆此仓库并运行 npm install && npm run build,然后使用 node dist/index.js.)
配置
提供完整的连接URL或离散参数。
环境变量
| 变量 | 目的 |
|---|---|
PG_URL / DATABASE_URL |
完整连接URL(覆盖离散字段) |
PGHOST |
主持人 |
PGPORT |
端口(默认值5432) |
PGUSER |
用户名 |
PGPASSWORD |
密码 |
PGDATABASE |
数据库名称 |
PGSSL |
require, disable,或 allow |
PGPOOL_MAX |
池最大连接数(默认值10) |
PG_IDLE_TIMEOUT |
空闲超时毫秒(默认30000) |
PG_STATEMENT_TIMEOUT |
语句超时毫秒 |
PG_APP_NAME |
application_name值 |
CLI标志
上述任何一项(小写)都可以作为 --host, --port, --user等等。例子:
postgres-mcp --host localhost --database mydb --user me --password secret
STDIO使用情况(主要)
在大多数启用MCP的工具中,您可以配置命令。JSON代码片段示例(例如,假设的IDE配置):
{
"name": "Postgres",
"command": "postgres-mcp",
"args": ["--host", "localhost", "--database", "mydb", "--user", "me"],
"env": {"PGPASSWORD": "secret"}
}
客户端将执行MCP初始化握手,然后列出并调用工具。
直接调用示例
您可以使用参考MCP客户端(如果可用)或通过stdio发送JSON-RPC(高级)进行手动测试。
简单的健康检查(使用 jq 为了可读性)使用最小的模拟客户端超出了本文的范围,但服务器已经为任何兼容的MCP客户端做好了准备。
实验性SSE服务器
启动SSE服务器:
postgres-mcp-sse --host localhost --database mydb --user me --password secret
终点:
GET /tools–列出工具POST /tool/:name–调用工具(JSON body=params)GET /stream/:name–调用工具并流式传输单个事件(仅限演示)
例子:
curl -X POST http://localhost:3333/tool/list_tables | jq
安全说明
run_query不受限制;在嵌入共享环境时限制其使用。- 除了参数化支持之外,不会执行SQL清理;始终首选参数数组(
params)以避免注射。 - SSE层是一个演示层,不进行身份验证;在生产场景中保护或禁用。
发展
在本地克隆和构建:
git clone <repo>
cd postgres-mcp
npm install
npm run build
node dist/index.js --host localhost --database mydb --user me --password secret
在开发模式下直接使用TypeScript运行:
npm run dev -- --host localhost --database mydb
工具输出
所有工具响应都以文本内容的形式返回,其中包含JSON编码的有效载荷,以实现兼容性。未来的增强功能可以为每个工具添加结构化内容和输出模式。
路线图/想法
- 为常见管理任务添加提示资源
- 为大型结果集添加流式处理(分页)
- 添加基于角色的限制
- 添加结构化输出模式
许可证
MIT(必要时进行调整)。
