
PostgreSQL Full Access MCP Server

2025.04.01
5
TypeScript数据库管理数据操作数据分析数据库
mcp-postgres-full-access 是一个基于 Model Context Protocol 的 PostgreSQL 数据库全访问服务器,提供对 PostgreSQL 数据库的完整读写访问权限。与只读的官方 MCP PostgreSQL 服务器不同,该增强实现允许大型语言模型(LLMs)在适当的事务管理和安全控制下查询和修改数据库内容。
View on GitHub
Overview
基本能力
产品定位
mcp-postgres-full-access 是一个增强型的 PostgreSQL 数据库访问工具,专为需要数据库读写操作的场景设计,特别适合需要 LLM 协助进行数据库管理和数据操作的场景。
核心功能
- 完整读写访问
- 安全执行 DML 操作(INSERT, UPDATE, DELETE)
- 使用 DDL 创建、修改和管理数据库对象
- 事务管理,支持显式提交
-
安全超时和自动回滚保护
-
丰富的模式信息
- 详细的列元数据(数据类型、描述、最大长度、可空性)
- 主键标识
- 外键关系
- 索引信息(类型和唯一性标志)
- 表行数估计
-
表和列描述(当可用时)
-
高级安全控制
- SQL 查询分类(DQL, DML, DDL, DCL, TCL)
- 强制执行只读查询
- 所有操作在隔离的事务中运行
- 自动事务超时监控
- 可配置的安全限制
- 两步事务提交过程,需要用户明确确认
适用场景
- 数据库管理:创建、修改和删除数据库对象
- 数据操作:插入、更新和删除数据
- 数据分析:执行复杂查询并获取结果
- 数据库维护:执行数据库维护任务
- 数据迁移:协助进行数据迁移和转换
工具列表
- execute_query
- 执行只读 SQL 查询(SELECT 语句)
- 所有查询在 READ ONLY 事务中执行
-
结果包括执行时间指标和字段信息
-
execute_dml_ddl_dcl_tcl
- 执行数据修改操作(INSERT, UPDATE, DELETE)或模式更改(CREATE, ALTER, DROP)
- 自动包装在具有可配置超时的事务中
-
返回事务 ID 用于显式提交
-
execute_commit
- 通过 ID 显式提交事务
-
永久应用数据库更改
-
execute_rollback
- 通过 ID 显式回滚事务
-
安全丢弃所有更改并清理资源
-
list_tables
- 获取数据库中所有表的全面列表
-
包括列计数和表描述
-
describe_table
- 获取特定表结构的详细信息
- 返回完整的模式信息,包括主键、外键、索引和列详细信息
常见问题解答
- 如何确保数据库安全?
- 创建具有适当权限的专用数据库用户
- 始终使用 "Allow once" 审查每个写入操作
-
连接到测试数据库进行初始探索
-
如何处理事务超时?
- 可以通过环境变量
TRANSACTION_TIMEOUT_MS
调整事务超时时间 -
超过超时时间的事务将自动回滚以确保安全
-
如何限制并发事务数量?
- 通过环境变量
MAX_CONCURRENT_TRANSACTIONS
设置最大并发事务数
使用教程
使用依赖
- 确保系统已安装 Node.js
- 确保已安装 PostgreSQL 数据库并具有适当的访问权限
安装教程
- 使用 npx 安装包或将其添加到项目中
npx -y mcp-postgres-full-access "postgresql://username:password@localhost:5432/database"
- 配置 Claude Desktop 以使用此服务器
编辑 claude_desktop_config.json
(通常在 macOS 上位于 ~/Library/Application Support/Claude/
):
{
"mcpServers": {
"postgres-full": {
"command": "npx",
"args": [
"-y",
"mcp-postgres-full-access",
"postgresql://username:password@localhost:5432/database"
],
"env": {
"TRANSACTION_TIMEOUT_MS": "60000",
"MAX_CONCURRENT_TRANSACTIONS": "5",
"PG_STATEMENT_TIMEOUT_MS": "30000"
}
}
}
}
- 替换数据库连接字符串为实际的 PostgreSQL 连接详细信息
- 完全重启 Claude Desktop
调试方式
- 检查服务器是否正常运行
ps aux | grep mcp-postgres-full-access
- 检查数据库连接是否正常
psql "postgresql://username:password@localhost:5432/database"
- 查看服务器日志以获取错误信息
tail -f /var/log/mcp-postgres-full-access.log
- 测试基本查询功能
curl -X POST http://localhost:8080/execute_query -d '{"sql":"SELECT * FROM information_schema.tables"}'