一个强大的模型上下文协议服务器,提供对 PostgreSQL 数据库的完全读写访问。与官方只读的 MCP PostgreSQL 服务器不同,这个增强实现允许大型语言模型(LLMs)查询和修改数据库内容,并具备适当的事务管理和安全控制。
execute_query
sql(字符串):要执行的 SQL 查询execute_dml_ddl_dcl_tcl
sql(字符串):要执行的 SQL 语句execute_maintenance
sql(字符串):要执行的 SQL 语句 - 必须是 VACUUM, ANALYZE 或 CREATE DATABASEexecute_commit
transaction_id(字符串):要提交的事务 IDexecute_rollback
输入:transaction_id(字符串):要回滚的事务 ID
安全地丢弃所有更改并清理资源
当审查更改并决定不应用它们时很有用
list_tables
describe_table
table_name(字符串):要描述的表名该服务器提供了增强的数据库表模式信息:
postgres://<host>/<table>/schema)
要使用此服务器与 Claude Desktop,按照以下步骤操作:
首先,确保您的系统上已安装 Node.js
使用 npx 安装包或将它添加到您的项目中
通过编辑 claude_desktop_config.json 配置 Claude Desktop(通常位于 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"
}
}
}
}
当 Claude 尝试将更改提交到您的数据库时,Claude Desktop 会提示您批准:

始终仔细审查 SQL 更改后再批准!
安全使用最佳实践:
这种“允许一次”的方法让您完全控制,防止意外更改数据库,同时仍能根据需要让 Claude 帮助进行数据管理任务。
您可以在 Claude Desktop 配置中使用环境变量自定义服务器行为:
"env": {
"TRANSACTION_TIMEOUT_MS": "60000",
"MAX_CONCURRENT_TRANSACTIONS": "5"
}
关键环境变量:
TRANSACTION_TIMEOUT_MS:事务超时时间(毫秒,默认值:15000)
MAX_CONCURRENT_TRANSACTIONS:最大并发事务数(默认值:10)
ENABLE_TRANSACTION_MONITOR:启用/禁用事务监视器("true" 或 "false",默认值:"true")
PG_STATEMENT_TIMEOUT_MS:SQL 查询执行超时时间(毫秒,默认值:30000)
PG_MAX_CONNECTIONS:最大 PostgreSQL 连接数(默认值:20)
MONITOR_INTERVAL_MS:检查卡住事务的频率(毫秒,默认值:5000)
此服务器使 Claude 能够在获得批准的情况下读取和写入您的 PostgreSQL 数据库。这里是一些示例对话流程:
您:“我需要一个新产品表,包含 id、name、price 和库存列”
Claude:分析您的数据库并创建查询
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL,
inventory INTEGER DEFAULT 0
);
Claude Desktop 将提示您批准此操作
您:审查并点击“允许一次”
Claude:“我已经创建了产品表。您想要我添加一些示例数据吗?”
您:“是的,请添加 5 个示例产品”
Claude:创建 INSERT 语句并提示批准 您审查并批准“允许一次”
您:“按价格计算,我的前三款产品是什么?”
Claude:自动执行只读查询 显示结果
任何修改数据库的操作的关键安全功能是两步方法:
这为您提供多次机会在更改永久应用于数据库之前进行验证。
当使用写访问权限连接 Claude 到您的数据库时:
重要:创建一个具有适当权限的专用数据库用户:
-- 创建受限用户的示例(根据需要调整)
CREATE USER claude_user WITH PASSWORD 'secure_password';
GRANT SELECT ON ALL TABLES IN SCHEMA public TO claude_user;
GRANT INSERT, UPDATE, DELETE ON TABLE table1, table2 TO claude_user;
-- 根据需要仅授予特定权限
**始终使用“允许一次”**来审查每次写操作
连接到测试数据库在首次探索此工具时
限制数据库用户权限仅限于必要的权限
实施数据库备份在广泛使用之前
从不共享敏感数据不应暴露给 LLMs
验证所有 SQL 操作在批准之前
该服务器可以轻松在 Docker 容器中运行:
# 构建 Docker 镜像
docker build -t mcp-postgres-full-access .
# 运行容器
docker run -i --rm mcp-postgres-full-access "postgresql://username:password@host:5432/database"
对于 macOS 上的 Docker,使用 host.docker.internal 来连接主机网络:
docker run -i --rm mcp-postgres-full-access "postgresql://username:password@host.docker.internal:5432/database"
此 MCP 服务器采用 MIT 许可证。
| 功能 | 此服务器 | 官方 MCP PostgreSQL 服务器 |
|---|---|---|
| 读取访问 | ✅ | ✅ |
| 写入访问 | ✅ | ❌ |
| 模式详情 | 增强 | 基本 |
| 事务支持 | 显式带超时 | 只读 |
| 索引信息 | ✅ | ❌ |
| 外键详情 | ✅ | ❌ |
| 行数估计 | ✅ | ❌ |
| 表描述 | ✅ | ❌ |
由 Syahiid Nur Kamil 创建 (@syahiidkamil)
版权所有 © 2024 Syahiid Nur Kamil. 保留所有权利。