返回市场
邮政数据库-MCP服务器

邮政数据库-MCP服务器

作者:HenkDz140 星标更新:2025-10-15

项目介绍

PostgreSQL MCP 服务器

smithery 徽章

这是一个提供全面 PostgreSQL 数据库管理功能的模型上下文协议(MCP)服务器,适用于AI助手。

<a href="https://glama.ai/mcp/servers/@HenkDz/postgresql-mcp-server"> <img width="380" height="200" src="https://gips3.baidu.com/it/u=1815813476,3101388145&fm=3081&app=3_081&f=PNG?w=760&h=400" alt="PostgreSQL Server MCP 服务器" /> </a>

功能

🚀 新特性: 该服务器已从46个独立工具整合并增强为17个智能工具(34→8个元工具)和新增加了4个新工具,提供了更好的AI发现能力,并增加了强大的数据操作和注释管理功能。

快速开始

先决条件

  • Node.js ≥18.0.0
  • 对 PostgreSQL 服务器的访问权限
  • (可选)用于AI集成的MCP客户端,如Cursor或Claude

安装MCP服务器

方案1:npm(推荐)

# 全局安装
npm install -g @henkey/postgres-mcp-server

# 或直接使用npx运行(无需安装)
# 使用环境变量连接字符串(可选)
export POSTGRES_CONNECTION_STRING="postgresql://user:pass@localhost:5432/db"
npx @henkey/postgres-mcp-server
# 或直接传递:
npx @henkey/postgres-mcp-server --connection-string "postgresql://user:pass@localhost:5432/db"

验证安装

npx @henkey/postgres-mcp-server --help

添加到您的MCP客户端配置中:

{
  "mcpServers": {
    "postgresql-mcp": {
      "command": "npx",
      "args": [
        "@henkey/postgres-mcp-server",
        "--connection-string", "postgresql://user:password@host:port/database"
      ]
    }
  }
}

方案2:通过Smithery安装

npx -y @smithery/cli install @HenkDz/postgresql-mcp-server --client claude

方案3:Docker(生产推荐)

# 构建Docker镜像
docker build -t postgres-mcp-server .

# 使用环境变量运行
docker run -i --rm \
  -e POSTGRES_CONNECTION_STRING="postgresql://user:password@host:port/database" \
  postgres-mcp-server

添加到您的MCP客户端配置中:

{
  "mcpServers": {
    "postgresql-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "henkey/postgres-mcp:latest",
        "-e",
        "POSTGRES_CONNECTION_STRING"
      ],
      "env": {
        "POSTGRES_CONNECTION_STRING": "postgresql://user:password@host:port/database"
      }
    }
  }
}

方案4:手动安装(开发)

git clone <repository-url>
cd postgresql-mcp-server
npm install
npm run build

添加到您的MCP客户端配置中:

{
  "mcpServers": {
    "postgresql-mcp": {
      "command": "node",
      "args": [
        "/path/to/postgresql-mcp-server/build/index.js",
        "--connection-string", "postgresql://user:password@host:port/database"
      ]
    }
  }
}

包含内容

17个强大工具,分为三类:

  • 🔄 整合: 34个原始工具整合为8个智能元工具
  • 🔧 专业化: 5个工具保持独立以处理复杂操作
  • 🆕 增强: 4个全新工具(不在原始46个中)

📊 整合元工具(8个工具)

  • 模式管理 - 表、列、ENUM、约束
  • 用户与权限 - 创建用户,授予权限/撤销权限
  • 查询性能 - 解释计划、慢查询、统计
  • 索引管理 - 创建、分析、优化索引
  • 函数 - 创建、修改、管理存储过程
  • 触发器 - 数据库触发器管理
  • 约束 - 外键、检查、唯一约束
  • 行级安全 - RLS策略和管理

🚀 增强工具(4个新工具)

全新功能,不在原始46个工具中

  • 执行查询 - 支持count/exists的SELECT操作
  • 执行变更 - INSERT/UPDATE/DELETE/UPSERT操作
  • 执行SQL - 支持事务的任意SQL执行
  • 注释管理 - 所有数据库对象的综合注释管理

🔧 专业化工具(5个工具)

  • 数据库分析 - 性能和配置分析
  • 调试数据库 - 连接、性能、锁问题排查
  • 数据导出/导入 - JSON/CSV数据迁移
  • 数据库间复制 - 跨数据库数据传输
  • 实时监控 - 实时数据库指标和警报

示例用法

// 分析数据库性能
{ "analysisType": "performance" }

// 创建带有约束的表
{
  "operation": "create_table",
  "tableName": "users", 
  "columns": [
    { "name": "id", "type": "SERIAL PRIMARY KEY" },
    { "name": "email", "type": "VARCHAR(255) UNIQUE NOT NULL" }
  ]
}

// 使用参数查询数据
{
  "operation": "select",
  "query": "SELECT * FROM users WHERE created_at > $1",
  "parameters": ["2024-01-01"],
  "limit": 100
}

// 插入新数据
{
  "operation": "insert",
  "table": "users",
  "data": {"name": "John Doe", "email": "john@example.com"},
  "returning": "*"
}

// 查找慢查询
{
  "operation": "get_slow_queries",
  "limit": 5,
  "minDuration": 100
}

// 执行参数化的SELECT查询
{
  "operation": "select",
  "query": "SELECT * FROM users WHERE id = $1",
  "parameters": [1]
}

// 执行INSERT变更
{
  "operation": "insert",
  "table": "products",
  "data": {"name": "New Product", "price": 99.99},
  "returning": "id"
}

// 管理数据库对象注释
{
  "operation": "set",
  "objectType": "table",
  "objectName": "users",
  "comment": "主要用户账户信息表"
}

📚 文档

📋 完整的工具模式参考 - 所有18个工具参数及示例一览

更多详细信息,请参阅docs/文件夹:

功能亮点

🔄 整合成就

34→8个元工具 - 智能整合以提高AI发现能力 ✅ 每个工具多个操作 - 统一模式与操作参数 ✅ 智能参数验证 - 清晰错误消息和类型安全性

🆕 增强数据能力

完整的CRUD操作 - 参数化查询支持的INSERT/UPDATE/DELETE/UPSERT ✅ 灵活查询 - 支持count/exists的SELECT操作和安全限制 ✅ 任意SQL执行 - 支持事务的复杂操作

🔧 生产就绪

灵活连接 - CLI参数、环境变量或每个工具配置 ✅ 注重安全 - 防止SQL注入,参数化查询 ✅ 健壮架构 - 连接池,全面错误处理

Docker使用

PostgreSQL MCP服务器完全兼容Docker,并可用于生产环境。

构建镜像

# 本地构建
docker build -t postgres-mcp-server .

# 或从Docker Hub拉取
docker pull henkey/postgres-mcp:latest

使用环境变量运行

# 基本用法(使用Docker Hub镜像)
docker run -i --rm \
  -e POSTGRES_CONNECTION_STRING="postgresql://user:password@host:port/database" \
  henkey/postgres-mcp:latest

# 或使用本地构建的镜像
docker run -i --rm \
  -e POSTGRES_CONNECTION_STRING="postgresql://user:password@host:port/database" \
  postgres-mcp-server

# 带工具配置
docker run -i --rm \
  -e POSTGRES_CONNECTION_STRING="postgresql://user:password@host:port/database" \
  -e POSTGRES_TOOLS_CONFIG="/app/config/tools.json" \
  -v /path/to/config:/app/config \
  postgres-mcp-server

Docker Compose示例

version: '3.8'
services:
  postgres-mcp:
    build: .
    environment:
      - POSTGRES_CONNECTION_STRING=postgresql://user:password@postgres:5432/database
    depends_on:
      - postgres
    stdin_open: true
    tty: true

  postgres:
    image: postgres:15
    environment:
      - POSTGRES_DB=database
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
    ports:
      - "5432:5432"

MCP客户端配置

用于与MCP客户端如Cursor或Claude Desktop一起使用:

{
  "mcpServers": {
    "postgresql-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "henkey/postgres-mcp:latest",
        "-e",
        "POSTGRES_CONNECTION_STRING"
      ],
      "env": {
        "POSTGRES_CONNECTION_STRING": "postgresql://user:password@host:port/database"
      }
    }
  }
}

先决条件

  • Node.js ≥ 18.0.0(用于本地开发)
  • Docker(用于容器化部署)
  • PostgreSQL服务器访问权限
  • 有效的连接凭证

贡献

  1. 叉出仓库
  2. 创建一个功能分支
  3. 提交您的更改
  4. 创建一个Pull Request

详见开发指南获取详细的设置说明。

许可证

AGPLv3许可证 - 详情见LICENSE文件。