PostgreSQL 全访问 MCP 服务器
View on Smithery
View on Smithery
这是一个功能强大的 Model Context Protocol (MCP) 服务器,提供对 PostgreSQL 数据库的完整读写访问。与官方只读的 MCP PostgreSQL 服务器不同,此增强实现允许大型语言模型 (LLMs) 在适当的事务管理和安全控制下查询和修改数据库内容。
目录
- 功能
- 完整读写访问
- 丰富的模式信息
- 高级安全控制
- 工具
- execute_query
- execute_dml_ddl_dcl_tcl
- execute_maintenance
- execute_commit
- execute_rollback
- list_tables
- describe_table
- list_schemas
- 资源
- 与 Claude Desktop 集成
- Claude Desktop 集成
- 重要提示:使用“仅允许一次”以确保安全
- 环境变量
- 使用 Claude 进行完整数据库访问
- 安全注意事项
- 数据库用户权限
- 安全使用的最佳实践
- Docker
- 许可证
- 与官方 PostgreSQL MCP 服务器的比较
🌟 功能
完整读写访问
- 安全执行 DML 操作(INSERT、UPDATE、DELETE)
- 使用 DDL 创建、修改和管理数据库对象
- 显式提交的事务管理
- 安全超时和自动回滚保护
丰富的模式信息
- 详细的列元数据(数据类型、描述、最大长度、可空性)
- 主键标识
- 外键关系
- 索引信息(类型和唯一性标志)
- 表行数估计
- 表和列描述(如果可用)
高级安全控制
- SQL 查询分类(DQL、DML、DDL、DCL、TCL)
- 强制执行只读查询
- 所有操作在隔离的事务中运行
- 自动事务超时监控
- 可配置的安全限制
- 两步提交过程,需用户显式确认
🔧 工具
- execute_query
- 执行只读 SQL 查询(SELECT 语句)
- 输入:
sql
(字符串):要执行的 SQL 查询 - 所有查询在 READ ONLY 事务中执行
- 结果包括执行时间指标和字段信息
- execute_dml_ddl_dcl_tcl
- 执行数据修改操作(INSERT、UPDATE、DELETE)或模式更改(CREATE、ALTER、DROP)
- 输入:
sql
(字符串):要执行的 SQL 语句 - 自动包装在具有可配置超时的事务中
- 返回事务 ID 以供显式提交
- 重要安全功能:执行后会话将结束,允许用户查看结果后再决定提交或回滚
- execute_maintenance
- 在事务外执行维护命令,如 VACUUM、ANALYZE 或 CREATE DATABASE
- 输入:
sql
(字符串):要执行的 SQL 语句 - 必须是 VACUUM、ANALYZE 或 CREATE DATABASE - 返回包含执行时间指标的结果对象
- execute_commit
- 通过 ID 显式提交事务
- 输入:
transaction_id
(字符串):要提交的事务 ID - 安全处理提交或回滚后的清理
- 永久应用对数据库的更改
- execute_rollback
- 通过 ID 显式回滚事务
- 输入:
transaction_id
(字符串):要回滚的事务 ID - 安全丢弃所有更改并清理资源
- 在审查更改并决定不应用时非常有用
- list_tables
- 获取数据库中所有表的完整列表
- 包括列数和表描述
- 无需输入参数
- describe_table
- 获取特定表结构的详细信息
- 输入:
table_name
(字符串):要描述的表名 - 返回完整的模式信息,包括主键、外键、索引和列详细信息
- list_schemas
- 获取数据库中所有模式的列表
- 无需输入参数
- 返回包含模式名称、所有者和表计数的数组
📊 资源
服务器为数据库表提供了增强的模式信息:
- 表模式 (
postgres://<host>/<table>/schema
) - 每个表的详细 JSON 模式信息
- 包括完整的列元数据、主键和约束
- 自动从数据库元数据中发现
🚀 与 Claude Desktop 集成
Claude Desktop 集成
要使用此服务器与 Claude Desktop 集成,请按照以下步骤操作:
- 首先,确保您的系统已安装 Node.js
- 使用 npx 安装包或将其添加到您的项目中
- 通过编辑
claude_desktop_config.json
(通常在 macOS 上位于~/Library/Application Support/Claude/
)来配置 Claude Desktop:
- 将数据库连接字符串替换为实际的 PostgreSQL 连接详细信息
- 完全重启 Claude Desktop
重要提示:使用“仅允许一次”以确保安全
当 Claude 尝试提交对数据库的更改时,Claude Desktop 将提示您进行批准:

在批准之前,请务必仔细审查 SQL 更改!
安全使用的最佳实践:
- 对于提交操作,始终点击“仅允许一次”(而不是“始终允许”)
- 在批准之前仔细审查事务 SQL
- 考虑使用权限有限的数据库用户
- 首次尝试此服务器时,尽可能使用测试数据库
这种“仅允许一次”的方法使您能够完全控制,防止对数据库进行不必要的更改,同时在需要时仍允许 Claude 帮助完成数据管理任务。
⚙️ 环境变量
您可以通过在 Claude Desktop 配置中设置环境变量来自定义服务器行为:
关键环境变量:
TRANSACTION_TIMEOUT_MS
:事务超时时间(以毫秒为单位,默认:15000)- 如果事务需要更多时间,请增加此值
- 超过此时间的事务将自动回滚以确保安全
MAX_CONCURRENT_TRANSACTIONS
:最大并发事务数(默认:10)- 降低此数值以进行更保守的操作
- 较高的值允许更多的同时写操作
ENABLE_TRANSACTION_MONITOR
:启用/禁用事务监控(“true”或“false”,默认:“true”)- 监控并自动回滚被遗弃的事务
- 通常不需要禁用
PG_STATEMENT_TIMEOUT_MS
:SQL 查询执行超时时间(以毫秒为单位,默认:30000)- 限制任何单个 SQL 语句的运行时间
- 防止查询失控的重要安全功能
PG_MAX_CONNECTIONS
:最大 PostgreSQL 连接数(默认:20)- 确保不超过数据库的连接限制
MONITOR_INTERVAL_MS
:检查卡住事务的频率(默认:5000)- 通常不需要调整
🔄 使用 Claude 进行完整数据库访问
此服务器使 Claude 能够在您的批准下从 PostgreSQL 数据库读取和写入数据。以下是一些示例对话流程:
示例:创建新表并添加数据
您:“我需要一个包含 id、name、price 和 inventory 列的新 products 表”
Claude:分析您的数据库并创建查询
Claude Desktop 将提示您批准此操作
您:审查并点击“仅允许一次”
Claude:“我已创建 products 表。您希望我添加一些示例数据吗?”
您:“是的,请添加 5 个示例产品”
Claude:创建 INSERT 语句并提示批准
您审查并通过“仅允许一次”批准
示例:使用安全查询进行数据分析
您:“按价格排序,我的前 3 个产品是什么?”
Claude:自动执行只读查询
向您显示结果
安全工作流程
关键安全功能是任何修改数据库的操作都采用两步法:
- Claude 分析您的请求并准备 SQL
- 对于只读操作(SELECT),Claude 自动执行
- 对于写操作(INSERT、UPDATE、DELETE、CREATE 等):
- Claude 在事务中执行 SQL 并结束会话
- 您审查结果
- 在新的会话中,您响应“是”以提交或“否”以回滚
- Claude Desktop 向您显示将要更改的内容并请求权限
- 您点击“仅允许一次”以允许特定操作
- Claude 执行操作并返回结果
这为您提供了多次机会,在更改永久应用到数据库之前进行验证。
⚠️ 安全注意事项
当将 Claude 连接到具有写访问权限的数据库时:
数据库用户权限
重要提示:创建一个具有适当权限的专用数据库用户:
安全使用的最佳实践
- 始终使用“仅允许一次” 审查每个写操作
- 对于数据库修改,切勿选择“始终允许”
- 花时间仔细审查 SQL
- 首次探索此工具时,连接到测试数据库
- 考虑使用数据库副本/备份进行初始测试
- 限制数据库用户权限 仅授予必要的权限
- 避免使用超级用户或管理员账户
- 尽可能授予表特定权限
- 在广泛使用之前实施数据库备份
- 切勿暴露不应暴露给 LLMs 的敏感数据
- 在批准之前验证所有 SQL 操作
- 检查表名
- 验证列名和数据
- 确认 WHERE 子句是否适当
- 查看是否正确处理事务
Docker
服务器可以轻松在 Docker 容器中运行:
对于 macOS 上的 Docker,使用 host.docker.internal 连接到主机网络:
📄 许可证
此 MCP 服务器根据 MIT 许可证授权。
💡 与官方 PostgreSQL MCP 服务器的比较
功能 | 本服务器 | 官方 MCP PostgreSQL 服务器 |
读取访问 | ✅ | ✅ |
写入访问 | ✅ | ❌ |
模式详细信息 | 增强 | 基本 |
事务支持 | 显式带超时 | 只读 |
索引信息 | ✅ | ❌ |
外键详细信息 | ✅ | ❌ |
行数估计 | ✅ | ❌ |
表描述 | ✅ | ❌ |
作者
版权所有 © 2025 kamusis。保留所有权利。
- Author:waytomcp
- URL:https://www.waytomcp.com/article/kamusis/mcp-postgres-full-access-extended
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!