PostgreSQL MCP 服务器
一个模型上下文协议(MCP)服务器,为人工智能助手提供全面的PostgreSQL数据库管理功能。
特点/功能
🚀 最新动态该服务器已进行全面重新设计,通过整合(34个→8个元工具)和增强(新增4个工具),将原本46个独立工具简化为17个智能工具,不仅提升了AI发现能力,还增加了强大的数据处理和评论管理功能。
快速入门
先决条件
- Node.js ≥18.0.0
- 访问PostgreSQL服务器
- (可选)一个用于AI集成的MCP客户端,如Cursor或Claude
选项1:npm(推荐)
BASH``` 1 2 3 4 5 6 7 8# Install globally npm install -g @henkey/postgres-mcp-server
Or run directly with npx (no installation)
Use env var for connection string (optional)
export POSTGRES_CONNECTION_STRING=“postgresql://user:pass@localhost:5432/db” npx @henkey/postgres-mcp-server
Or pass directly:
npx @henkey/postgres-mcp-server —connection-string “postgresql://user:pass@localhost:5432/db”
# 验证安装
运行 `npx @henkey/postgres-mcp-server --help` 命令
在您的MCP客户端配置中添加:
JSON```
1
2
3
4
5
6
7
8
9
10
11{
"mcpServers": {
"postgresql-mcp": {
"command": "npx",
"args": [
"@henkey/postgres-mcp-server",
"--connection-string", "postgresql://user:password@host:port/database"
]
}
}
}
选项2:通过Smithery进行安装
BASH``` 1npx -y @smithery/cli install @HenkDz/postgresql-mcp-server —client claude
### 选项3:Docker(推荐用于生产环境)
BASH```
1
2
3
4
5
6# Build the Docker image
docker build -t postgres-mcp-server .
# Run with environment variable
docker run -i --rm \
-e POSTGRES_CONNECTION_STRING="postgresql://user:password@host:port/database" \
postgres-mcp-server
在您的MCP客户端配置中添加:
JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18{ “mcpServers”: { “postgresql-mcp”: { “command”: “docker”, “args”: [ “run”, “-i”, “—rm”, “henkey/postgres-mcp:latest”, “-e”, “POSTGRES_CONNECTION_STRING” ], “env”: { “POSTGRES_CONNECTION_STRING”: “postgresql://user:password@host:port/database” } } } }
### 选项4:手动安装(开发版)
BASH```
1
2
3
4git clone <repository-url>
cd postgresql-mcp-server
npm install
npm run build
在您的MCP客户端配置中添加:
JSON``` 1 2 3 4 5 6 7 8 9 10 11{ “mcpServers”: { “postgresql-mcp”: { “command”: “node”, “args”: [ “/path/to/postgresql-mcp-server/build/index.js”, “—connection-string”, “postgresql://user:password@host:port/database” ] } } }
## 包含内容
**17款强大工具** 分为三类:
- **🔄 巩固/整合**34种原始工具整合为8种智能元工具
- **🔧 专业化的**为复杂操作保留的5种独立工具
- **🆕 增强功能**4个全新工具(原46个中不包含)
### 📊 表格/数据图表 **综合元工具** (8种工具)
- **模式管理** - 表、列、枚举类型、约束
- **用户与权限** - 创建用户,授予/撤销权限
- **查询性能** - 解释计划、慢查询、统计信息
- **指数管理** - 创建、分析、优化索引
- **函数** - 创建、修改、管理存储函数
- **触发器** - 数据库触发器管理
- **约束条件** - 外键、检查约束、唯一约束
- **行级安全性** - RLS(远程学习系统/实时定位系统等,具体含义需根据上下文确定)政策与管理
### 🚀 表情符号通常表示火箭、快速进展或飞速发展,可以翻译为“🚀(火箭/飞速进展)”或根据上下文意译为“飞速前进”、“火箭升空”等。 **增强工具** (4种新工具)
*原始46款工具中不具备的全新功能*
- **执行查询** - 支持计数/存在性的SELECT操作
- **执行突变(或“执行变异”)** - 插入/更新/删除/插入或更新(UPSERT)操作
- **执行SQL** - 支持事务的任意SQL执行
- **评论管理** - 对所有数据库对象进行全面的注释管理
### 🔧(扳手,象征修理或工具) **专用工具** (5个工具)
- **数据库分析** - 性能与配置分析
- **调试数据库** - 解决连接、性能、锁问题
- **数据导出/导入** - JSON/CSV 数据迁移
- **在数据库之间复制** - 跨数据库数据传输
- **实时监控** - 实时数据库指标和警报
## 示例用法
TYPESCRIPT```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51// Analyze database performance
{ "analysisType": "performance" }
// Create a table with constraints
{
"operation": "create_table",
"tableName": "users",
"columns": [
{ "name": "id", "type": "SERIAL PRIMARY KEY" },
{ "name": "email", "type": "VARCHAR(255) UNIQUE NOT NULL" }
]
}
// Query data with parameters
{
"operation": "select",
"query": "SELECT * FROM users WHERE created_at > $1",
"parameters": ["2024-01-01"],
"limit": 100
}
// Insert new data
{
"operation": "insert",
"table": "users",
"data": {"name": "John Doe", "email": "john@example.com"},
"returning": "*"
}
// Find slow queries
{
"operation": "get_slow_queries",
"limit": 5,
"minDuration": 100
}
// Execute a parameterized SELECT query
{
"operation": "select",
"query": "SELECT * FROM users WHERE id = $1",
"parameters": [1]
}
// Perform an INSERT mutation
{
"operation": "insert",
"table": "products",
"data": {"name": "New Product", "price": 99.99},
"returning": "id"
}
// Manage database object comments
{
"operation": "set",
"objectType": "table",
"objectName": "users",
"comment": "Main user account information table"
}
📚 文档
📋 翻译成中文是:“清单”或“待办事项”。这个符号通常用来表示需要列出或完成的事项。 完整工具模式参考 - 所有18个工具参数及示例集中一处
如需更多信息,请参阅 docs/ 文件夹:
- 📖 使用指南 - 综合工具的使用及示例
- 🛠️ 开发指南 - 设置与贡献指南
- ⚙️ 技术细节 - 架构与实现
- 👨💻 开发者参考 API参考及高级用法
- 📋 文档索引 - 完整的文档概览
功能亮点
🔄 巩固成果
✅ 34→8 元工具 - 智能整合,助力更佳AI发现
✅ 翻译为中文是:✅(这个符号本身在中文中通常表示“正确”或“已完成”,没有直接的翻译文字,但可以根据上下文理解为“正确”、“确认”或“已完成”等意思。) 每种工具可执行多种操作 - 带有操作参数的统一模式
✅ 智能参数验证 - 清晰的错误信息和类型安全
🆕 增强的数据处理能力
✅(这个符号在中文中通常表示“正确”或“确认”,没有直接的中文对应词汇,但可以理解为“对”或“确认无误”的意思。) 完成增删改查(CRUD)操作 - 使用参数化查询进行插入/更新/删除/上插入(UPSERT)操作
✅ 灵活查询 - 支持计数/存在性的SELECT语句及安全限制 ✅ 任意SQL执行 - 支持复杂操作的事务处理
🔧 准备就绪,可投入生产
✅ 灵活连接 - CLI 参数、环境变量或工具特定配置
✅ 以安全为重点 - 防止SQL注入,使用参数化查询
✅ 稳健的架构 - 连接池,全面的错误处理
Docker 使用方法
PostgreSQL MCP 服务器完全兼容 Docker,可在生产环境中使用。
构建形象
BASH``` 1 2 3 4# Build locally docker build -t postgres-mcp-server .
Or pull from Docker Hub
docker pull henkey/postgres-mcp:latest
### 使用环境变量运行
BASH```
1
2
3
4
5
6
7
8
9
10
11
12
13
14# Basic usage (using Docker Hub image)
docker run -i --rm \
-e POSTGRES_CONNECTION_STRING="postgresql://user:password@host:port/database" \
henkey/postgres-mcp:latest
# Or with locally built image
docker run -i --rm \
-e POSTGRES_CONNECTION_STRING="postgresql://user:password@host:port/database" \
postgres-mcp-server
# With tools configuration
docker run -i --rm \
-e POSTGRES_CONNECTION_STRING="postgresql://user:password@host:port/database" \
-e POSTGRES_TOOLS_CONFIG="/app/config/tools.json" \
-v /path/to/config:/app/config \
postgres-mcp-server
Docker Compose 示例
YAML``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18version: ‘3.8’ services: postgres-mcp: build: . environment: - POSTGRES_CONNECTION_STRING=postgresql://user:password@postgres:5432/database depends_on: - postgres stdin_open: true tty: true postgres: image: postgres:15 environment: - POSTGRES_DB=database - POSTGRES_USER=user - POSTGRES_PASSWORD=password ports: - “5432:5432”
### MCP客户端配置
用于与Cursor或Claude Desktop等MCP客户端配合使用:
JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18{
"mcpServers": {
"postgresql-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"henkey/postgres-mcp:latest",
"-e",
"POSTGRES_CONNECTION_STRING"
],
"env": {
"POSTGRES_CONNECTION_STRING": "postgresql://user:password@host:port/database"
}
}
}
}
先决条件
- Node.js ≥ 18.0.0(用于本地开发)
- Docker(用于容器化部署)
- PostgreSQL服务器访问
- 有效的连接凭据
做出贡献
- 为仓库创建分支(或:克隆仓库)
- 创建一个特性分支
- 提交您的更改
- 创建拉取请求
看 开发指南 以获取详细的设置说明。
许可证
AGPLv3 许可证 - 详见 许可证 文件中有详细信息。