Postgres数据库查询服务

一个轻量级的MCP服务器,用于通过SQL或普通英语命令查询Postgres数据库,提供全面的数据库操作、表自省和查询执行工具。

  • by freakynit
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 freakynit/postgres-mcp

使用说明

Postgres MCP

一个轻量级的MCP(模型上下文协议)服务器,用于使用SQL或纯英语命令查询Postgres数据库。它为数据库操作、表自检和具有智能权限处理的查询执行提供了全面的工具。

特性

智能查询权限处理

  • 只读查询:自动批准(选择、解释、显示、值)
  • 读写查询:需要用户确认(插入、更新、删除、合并)
  • 管理员/DDL查询:需要提升权限(CREATE、ALTER、DROP等)
  • 干运行模式:验证查询而不执行

综合表反思

  • 具有类型和约束的列定义
  • 主键和外键关系
  • 指数定义
  • 触发器和检查约束

数据库管理

  • 多数据库切换功能
  • 强大的错误处理和回滚

可用工具

工具 说明
execute_raw_query 执行具有权限验证和模拟运行支持的SQL查询
list_tables 列出所有非系统表
describe_tables 获取全面的表信息,包括列、索引、触发器和约束
switch_database 切换活动数据库连接

所需的最小环境变量

  1. POSTGRES_HOST
  2. POSTGRES_USER
  3. POSTGRES_PASSWORD
  4. POSTGRES_DATABASE

其他环境变量

  1. POSTGRES_PORT
  2. POSTGRES_SSL (布尔值)
  3. POSTGRES_VERIFY (布尔值)
  4. POSTGRES_SEND_RECEIVE_TIMEOUT (秒)
  5. POSTGRES_CONNECT_TIMEOUT (秒)

使用配置 mcpServers JSON

适用于Mac和Linux

{
  "mcpServers": {
    "postgres-mcp": {
      "command": "npx",
      "args": ["-y", "@freakynit/postgres-mcp@latest"],
      "env": {
        "POSTGRES_HOST": "<POSTGRES HOST>",
        "POSTGRES_USER": "<POSTGRES USER>",
        "POSTGRES_PASSWORD": "<POSTGRES PASSWORD>",
        "POSTGRES_DATABASE": "<POSTGRES DATABASE>"
      }
    }
  }
}

适用于 Windows

{
  "mcpServers": {
    "postgres-mcp": {
      "command": "cmd",
      "args": ["/k", "npx", "-y", "@freakynit/postgres-mcp@latest"],
      "env": {
        "POSTGRES_HOST": "<POSTGRES HOST>",
        "POSTGRES_USER": "<POSTGRES USER>",
        "POSTGRES_PASSWORD": "<POSTGRES PASSWORD>",
        "POSTGRES_DATABASE": "<POSTGRES DATABASE>"
      }
    }
  }
}

开发文档

先决条件

  • Node.js
  • PostgreSQL服务器

安装

npm i -g @freakynit/postgres-mcp

或

git clone https://github.com/freakynit/postgres-mcp.git
cd postgres-mcp
npm install

配置

创建一个 .env 项目根目录中的文件,包含以下变量:

# PostgreSQL
POSTGRES_HOST=your-db-host
POSTGRES_PORT=5432                      # Optional, default 5432
POSTGRES_USER=your-username
POSTGRES_PASSWORD=your-password
POSTGRES_DATABASE=your-database

# SSL settings (optional)
POSTGRES_SSL=false                      # Or true
POSTGRES_VERIFY=false                   # Verify server cert if SSL true

# Timeouts (optional, seconds)
POSTGRES_SEND_RECEIVE_TIMEOUT=60        # Query timeout
POSTGRES_CONNECT_TIMEOUT=60             # Connection timeout

用法

地方发展

启动服务器(从中启动 stdio 模式):

node src/index.js

与MCP检查员一起

调试和开发:

npx @modelcontextprotocol/inspector node src/index.js

使用MCP检查器进行调试

npx @modelcontextprotocol/inspector node src/index.js

许可证

该项目根据MIT许可证获得许可。看 许可证 了解详情。