使用说明

项目简介

本项目 'enhanced-postgres-mcp-server' 是一个基于 Model Context Protocol (MCP) 的服务器实现,专为 PostgreSQL 数据库设计。它扩展了官方的只读 PostgreSQL MCP 服务器,提供了读写数据库以及数据库结构管理的能力。借助此服务器,LLM 可以连接到 PostgreSQL 数据库,执行查询、修改数据,甚至创建和修改数据库表结构、函数、触发器和索引等。

主要功能点

  • 数据查询 (Data Query): 执行只读 SQL 查询,获取数据库信息。
  • 数据修改 (Data Modification): 执行 SQL 语句进行数据插入、更新和删除操作。
  • 数据库结构管理 (Schema Management): 支持创建、修改数据库表、函数、触发器和索引等结构。
  • 资源 (Resources): 提供数据库表结构的 JSON Schema 信息,方便 LLM 理解数据结构。

安装步骤

您可以通过 Docker 或 NPX 两种方式安装和运行此 MCP 服务器。

方法一:使用 Docker

  1. 构建 Docker 镜像: 在仓库根目录下,使用 Docker 命令构建镜像:
    docker build -t mcp/postgres -f Dockerfile .

方法二:使用 NPX (Node.js 包执行器)

  1. 确保已安装 Node.js 和 npm: 如果您的环境中尚未安装 Node.js 和 npm,请先安装。

服务器配置

为了让 MCP 客户端(例如 Claude Desktop)连接到此服务器,您需要在客户端的配置文件(例如 'claude_desktop_config.json')中添加 MCP 服务器的配置信息。

针对 Docker 部署的配置示例:

{
  "mcpServers": {
    "postgres": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp/postgres",
        "postgresql://host.docker.internal:5432/mydb" // PostgreSQL 数据库连接 URL,需要替换为您的数据库地址
                                                        // host.docker.internal 用于 Docker Desktop for Mac,如果服务器和客户端不在同一 Docker 网络,可能需要调整为主机 IP 或域名
      ]
    }
  }
}

针对 NPX 部署的配置示例:

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres", //  使用 NPX 运行 @modelcontextprotocol/server-postgres 包
        "postgresql://localhost/mydb"          // PostgreSQL 数据库连接 URL,需要替换为您的数据库地址
                                                // localhost 假设数据库运行在本地,mydb 是数据库名称
      ]
    }
  }
}

配置参数说明:

  • 'server name': 服务器名称,例如 "postgres",在客户端中用于标识和调用此服务器。
  • 'command': 启动服务器的命令,Docker 部署时为 "docker",NPX 部署时为 "npx"。
  • 'args': 命令参数,根据部署方式和数据库连接信息进行配置。
    • 对于 Docker,'args' 包括 'run', '-i', '--rm', 'mcp/postgres' (Docker 镜像名称) 和 PostgreSQL 连接 URL。
    • 对于 NPX,'args' 包括 '-y' (自动确认安装包), '@modelcontextprotocol/server-postgres' (要执行的 npm 包) 和 PostgreSQL 连接 URL。
    • PostgreSQL 连接 URL: 例如 'postgresql://user:password@host:port/database',请根据您的数据库实际连接信息进行替换。如果需要跳过 SSL 证书验证,可以添加 '?sslmode=no-verify' 参数。

基本使用方法

配置完成后,在 MCP 客户端中,您可以使用以下格式的指令与 PostgreSQL MCP 服务器进行交互:

  • 查询数据:

    /query SELECT * FROM 表名 LIMIT 5
  • 插入数据:

    /insert table="表名", data={"列名1": "值1", "列名2": "值2"}
  • 更新数据:

    /update table="表名", data={"要更新的列名": "新值"}, where="条件"
  • 创建表:

    /createTable tableName="新表名", columns=[{"name": "列名1", "type": "数据类型", "constraints": "约束"}, {"name": "列名2", "type": "数据类型"}]
  • 创建函数和触发器:

    /createFunction name="函数名", parameters="参数列表", returnType="返回类型", language="语言", body="函数体"
    
    /createTrigger name="触发器名", tableName="表名", functionName="函数名", when="触发时机", events=["事件类型"], forEach="ROW/STATEMENT"

请参考仓库 'README.md' 文件中的 "Example Usage" 部分,了解更多工具的使用方法和示例。

信息

分类

数据库与文件