Skip to main content
Glama

PostgreSQL Full Access MCP Server

by syahiidkamil

PostgreSQL 完全访问 MCP 服务器

强大的模型上下文协议 (MCP) 服务器,提供对 PostgreSQL 数据库的完全读写访问权限。与只读的官方 MCP PostgreSQL 服务器不同,此增强版允许大型语言模型 (LLM) 查询和修改数据库内容,并具有适当的事务管理和安全控制。

目录

🌟 功能

完全读写访问权限

  • 安全地执行 DML 操作(INSERT、UPDATE、DELETE)
  • 使用 DDL 创建、更改和管理数据库对象
  • 具有显式提交的事务管理
  • 安全超时和自动回滚保护

丰富的架构信息

  • 详细列元数据(数据类型、描述、最大长度、可空性)
  • 主键标识
  • 外键关系
  • 带有类型和唯一性标志的索引信息
  • 表行数估计
  • 表格和列描述(如果有)

先进的安全控制

  • SQL查询分类(DQL、DML、DDL、DCL、TCL)
  • 强制执行只读以确保安全查询
  • 所有操作都在独立事务中运行
  • 自动交易超时监控
  • 可配置的安全限制
  • 两步事务提交流程,需要用户明确确认

🔧 工具

  • 执行查询
    • 执行只读 SQL 查询(SELECT 语句)
    • 输入: sql (字符串):要执行的 SQL 查询
    • 所有查询都在只读事务中执行
    • 结果包括执行时间指标和现场信息
  • 执行_dml_ddl_dcl_tcl
    • 执行数据修改操作(INSERT、UPDATE、DELETE)或模式更改(CREATE、ALTER、DROP)
    • 输入: sql (字符串):要执行的 SQL 语句
    • 自动包装在具有可配置超时的交易中
    • 返回显式提交的事务 ID
    • 重要的安全特性:对话将在执行后结束,允许用户在决定提交或回滚之前查看结果
  • 执行提交
    • 通过 ID 明确提交事务
    • 输入: transaction_id (字符串):要提交的事务的ID
    • 安全地处理提交或回滚后的清理
    • 将更改永久应用于数据库
  • 执行回滚
    • 通过事务 ID 明确回滚事务
    • 输入: transaction_id (字符串):要回滚的事务的ID
    • 安全地丢弃所有更改并清理资源
    • 在审查更改并决定不应用它们时很有用
  • 列表表
    • 获取数据库中所有表的综合列表
    • 包括列数和表格描述
    • 无需输入参数
  • 描述表
    • 获取特定表结构的详细信息
    • 输入: table_name (字符串):要描述的表的名称
    • 返回完整的架构信息,包括主键、外键、索引和列详细信息

📊 资源

服务器为数据库表提供增强的架构信息:

  • 表模式postgres://<host>/<table>/schema
    • 每个表的详细 JSON 架构信息
    • 包括完整的列元数据、主键和约束
    • 从数据库元数据中自动发现

🚀 与 Claude Desktop 一起使用

Claude 桌面集成

要将此服务器与 Claude Desktop 一起使用,请按照以下步骤操作:

  1. 首先,确保您的系统上安装了 Node.js
  2. 使用 npx 安装包或将其添加到你的项目中
  3. 通过编辑claude_desktop_config.json (通常在 macOS 上位于~/Library/Application Support/Claude/ )来配置 Claude Desktop:
{ "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" } } } }
  1. 将数据库连接字符串替换为实际的 PostgreSQL 连接详细信息
  2. 完全重启Claude Desktop

重要提示:使用“允许一次”以确保安全

当 Claude 尝试向您的数据库提交更改时,Claude Desktop 将提示您批准:

允许一次对话框

在批准 SQL 更改之前,请务必仔细检查!

安全最佳实践:

  • 对于提交操作,始终单击“允许一次”(而不是“始终允许”)
  • 批准前仔细检查交易 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)
    • 限制单个 SQL 语句的运行时间
    • 防止失控查询的重要安全功能
  • PG_MAX_CONNECTIONS :最大 PostgreSQL 连接数(默认值:20)
    • 保持在数据库的连接限制内很重要
  • MONITOR_INTERVAL_MS :检查卡住事务的频率(默认值:5000)
    • 通常不需要调整

🔄 使用 Claude 进行完全数据库访问

该服务器允许 Claude 在您的授权下读取和写入您的 PostgreSQL 数据库。以下是一些示例对话流程:

示例:创建新表并添加数据

您:“我需要一个包含 ID、名称、价格和库存等列的新产品表”

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 将提示您批准此操作

您:查看并点击“允许一次”

克劳德:“我已经创建了产品表。你想让我添加一些示例数据吗?”

您:“是的,请添加 5 个样品”

Claude:创建 INSERT 语句并提示批准 您使用“允许一次”进行审核和批准

示例:使用安全查询进行数据分析

您:“按价格计算,我的前 3 种产品是什么?”

Claude:自动执行只读查询 并显示结果

安全工作流程

关键的安全特性是对任何修改数据库的操作采用两步方法:

  1. Claude 分析您的请求并准备 SQL
  2. 对于只读操作(SELECT),Claude 会自动执行
  3. 对于写入操作(INSERT、UPDATE、DELETE、CREATE 等):
    • Claude 在事务中执行 SQL 并结束对话
    • 您查看结果
    • 在新的对话中,您回复“是”表示提交,回复“否”表示回滚
    • Claude Desktop 向您展示将要更改的内容并请求许可
    • 您点击“允许一次”即可允许特定操作
    • Claude执行操作并返回结果

这为您提供了多次机会在将更改永久应用到数据库之前验证更改。

⚠️ 安全注意事项

当使用写权限将 Claude 连接到数据库时:

数据库用户权限

**重要提示:**创建具有适当权限的专用数据库用户:

-- Example of creating a restricted user (adjust as needed) 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; -- Only grant specific permissions as needed

安全使用的最佳实践

  1. **始终使用“允许一次”**来审查每个写入操作
    • 切勿选择“始终允许”进行数据库修改
    • 花时间仔细检查 SQL
  2. 首次探索此工具时连接到测试数据库
    • 考虑使用数据库副本/备份进行初始测试
  3. 将数据库用户权限限制为仅必要的权限
    • 避免使用超级用户或管理员帐户
    • 尽可能授予特定于表的权限
  4. 在广泛使用之前实施数据库备份
  5. 切勿分享不应向 LLM 公开的敏感数据
  6. 在批准所有 SQL 操作之前对其进行验证
    • 检查表名
    • 验证列名和数据
    • 确认 WHERE 子句是否合适
    • 寻找适当的交易处理

Docker

该服务器可以轻松地在 Docker 容器中运行:

# Build the Docker image docker build -t mcp-postgres-full-access . # Run the container 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 许可证获得许可。

💡 与官方 PostgreSQL MCP 服务器的比较

特征此服务器官方 MCP PostgreSQL 服务器
读取访问
写访问
架构详细信息增强型基本的
交易支持显式超时只读
索引信息
外键详细信息
行数估计
表格说明

作者

由 Syahiid Nur Kamil 创建( @syahiidkamil


版权所有 © 2024 Syahiid Nur Kamil。保留所有权利。

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    A Model Context Protocol server providing LLMs read-only access to PostgreSQL databases for inspecting schemas and executing queries.
    Last updated -
    16,948
    17
    JavaScript
    MIT License
    • Apple
  • -
    security
    A
    license
    -
    quality
    A Model Context Protocol server that provides read-only access to PostgreSQL databases with enhanced multi-schema support, allowing LLMs to inspect database schemas across multiple namespaces and execute read-only queries while maintaining schema isolation.
    Last updated -
    13
    2
    JavaScript
    MIT License
  • -
    security
    F
    license
    -
    quality
    A Model Context Protocol server providing both read and write access to PostgreSQL databases, enabling LLMs to query data, modify records, and manage database schemas.
    Last updated -
    4
    JavaScript
  • -
    security
    F
    license
    -
    quality
    A Model Context Protocol server that enables performing PostgreSQL database operations (create, read, update, delete) on User and Post entities through MCP tools.
    Last updated -
    TypeScript

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/syahiidkamil/mcp-postgres-full-access'

If you have feedback or need assistance with the MCP directory API, please join our Discord server