PostgreSQL Full Access MCP Server

PostgreSQL Full Access MCP Server

site icon
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 协助进行数据库管理和数据操作的场景。

核心功能

  1. 完整读写访问
  2. 安全执行 DML 操作(INSERT, UPDATE, DELETE)
  3. 使用 DDL 创建、修改和管理数据库对象
  4. 事务管理,支持显式提交
  5. 安全超时和自动回滚保护

  6. 丰富的模式信息

  7. 详细的列元数据(数据类型、描述、最大长度、可空性)
  8. 主键标识
  9. 外键关系
  10. 索引信息(类型和唯一性标志)
  11. 表行数估计
  12. 表和列描述(当可用时)

  13. 高级安全控制

  14. SQL 查询分类(DQL, DML, DDL, DCL, TCL)
  15. 强制执行只读查询
  16. 所有操作在隔离的事务中运行
  17. 自动事务超时监控
  18. 可配置的安全限制
  19. 两步事务提交过程,需要用户明确确认

适用场景

  1. 数据库管理:创建、修改和删除数据库对象
  2. 数据操作:插入、更新和删除数据
  3. 数据分析:执行复杂查询并获取结果
  4. 数据库维护:执行数据库维护任务
  5. 数据迁移:协助进行数据迁移和转换

工具列表

  1. execute_query
  2. 执行只读 SQL 查询(SELECT 语句)
  3. 所有查询在 READ ONLY 事务中执行
  4. 结果包括执行时间指标和字段信息

  5. execute_dml_ddl_dcl_tcl

  6. 执行数据修改操作(INSERT, UPDATE, DELETE)或模式更改(CREATE, ALTER, DROP)
  7. 自动包装在具有可配置超时的事务中
  8. 返回事务 ID 用于显式提交

  9. execute_commit

  10. 通过 ID 显式提交事务
  11. 永久应用数据库更改

  12. execute_rollback

  13. 通过 ID 显式回滚事务
  14. 安全丢弃所有更改并清理资源

  15. list_tables

  16. 获取数据库中所有表的全面列表
  17. 包括列计数和表描述

  18. describe_table

  19. 获取特定表结构的详细信息
  20. 返回完整的模式信息,包括主键、外键、索引和列详细信息

常见问题解答

  1. 如何确保数据库安全?
  2. 创建具有适当权限的专用数据库用户
  3. 始终使用 "Allow once" 审查每个写入操作
  4. 连接到测试数据库进行初始探索

  5. 如何处理事务超时?

  6. 可以通过环境变量 TRANSACTION_TIMEOUT_MS 调整事务超时时间
  7. 超过超时时间的事务将自动回滚以确保安全

  8. 如何限制并发事务数量?

  9. 通过环境变量 MAX_CONCURRENT_TRANSACTIONS 设置最大并发事务数

使用教程

使用依赖

  1. 确保系统已安装 Node.js
  2. 确保已安装 PostgreSQL 数据库并具有适当的访问权限

安装教程

  1. 使用 npx 安装包或将其添加到项目中
npx -y mcp-postgres-full-access "postgresql://username:password@localhost:5432/database"
  1. 配置 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"
      }
    }
  }
}
  1. 替换数据库连接字符串为实际的 PostgreSQL 连接详细信息
  2. 完全重启 Claude Desktop

调试方式

  1. 检查服务器是否正常运行
ps aux | grep mcp-postgres-full-access
  1. 检查数据库连接是否正常
psql "postgresql://username:password@localhost:5432/database"
  1. 查看服务器日志以获取错误信息
tail -f /var/log/mcp-postgres-full-access.log
  1. 测试基本查询功能
curl -X POST http://localhost:8080/execute_query -d '{"sql":"SELECT * FROM information_schema.tables"}'

许可证

该项目遵循 MIT 开源许可条款。