PostgreSQL数据库管理服务器

一个为AI助手提供全面PostgreSQL数据库管理功能的Model Context Protocol (MCP)服务器。

作者 By HenkDz
本地部署 数据库管理 AI集成
GitHub

PostgreSQL MCP 服务器

一个模型上下文协议(MCP)服务器,为人工智能助手提供全面的PostgreSQL数据库管理功能。

PostgreSQL Server MCP server

特点/功能

🚀 最新动态该服务器已进行全面重新设计,通过整合(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服务器访问
  • 有效的连接凭据

做出贡献

  1. 为仓库创建分支(或:克隆仓库)
  2. 创建一个特性分支
  3. 提交您的更改
  4. 创建拉取请求

看 开发指南 以获取详细的设置说明。

许可证

AGPLv3 许可证 - 详见 许可证 文件中有详细信息。