MCP PostgreSQL 服务器使用说明

项目简介

本项目实现了一个 MCP (Model Context Protocol) 服务器,它允许 LLM 客户端(如 Cursor)通过标准化的 MCP 协议与 PostgreSQL 数据库进行交互。该服务器提供了一组工具,使 LLM 能够安全地执行只读 SQL 查询、列出数据库表以及获取表结构信息。

主要功能点

  • 执行 SQL 查询: 允许 LLM 运行只读的 SQL 查询语句,并以 JSON 格式返回结果。
  • 列出数据库表: 提供工具以获取 PostgreSQL 数据库中所有表的列表。
  • 描述表结构: 允许 LLM 获取指定表的详细结构信息,包括列名、数据类型、是否允许为空等。
  • 基于 Docker 部署: 易于安装和部署,通过 Docker Compose 进行容器化管理。
  • 使用 Stdio 传输协议: 通过标准输入输出流与 MCP 客户端通信。

安装步骤

  1. 克隆仓库

    git clone https://github.com/MadeByNando/mcp-postgres-server
    cd mcp-postgres-server
  2. 启动服务器 确保您已安装 Docker 和 Docker Compose。在仓库根目录下,运行以下命令启动服务器:

    docker-compose up -d

    这将会在后台启动 PostgreSQL MCP 服务器。

服务器配置 (MCP 客户端)

要将此 MCP 服务器配置到 MCP 客户端(例如 Cursor),您需要提供以下连接信息。以下配置信息为 JSON 格式,请在 MCP 客户端中按照指引填写。

{
  "server name": "MCP Postgres Server",  //  服务器连接名称,可以自定义
  "command": "docker exec -i mcp-postgres-server node dist/index.js"  //  启动服务器的命令,在 Docker 容器内部执行 node dist/index.js
}

配置参数说明:

  • 'server name': 为您的 MCP 服务器连接指定一个易于识别的名称,例如 "PostgreSQL MCP Server"。
  • 'command': 这是 MCP 客户端用来启动和连接到 MCP 服务器的关键命令。它指示客户端在名为 'mcp-postgres-server' 的 Docker 容器内部执行 'node dist/index.js' 命令。'-i' 参数确保 'docker exec' 命令保持 STDIN 打开,即使没有附加交互式会话。

注意: 请确保 Docker 容器 'mcp-postgres-server' 正在运行,并且您的 MCP 客户端能够执行 'docker' 和 'docker-compose' 命令(如果客户端在容器外部运行)。您可能需要根据您的具体 MCP 客户端配置界面进行调整,但核心是提供启动服务器的命令。

基本使用方法

  1. 在 MCP 客户端中配置服务器连接: 按照上述“服务器配置”部分,在您的 MCP 客户端(如 Cursor)中添加一个新的 MCP 服务器连接,并填入相应的配置信息。
  2. 使用 LLM 调用工具: 配置完成后,您的 LLM 客户端应该能够检测到此 MCP 服务器提供的工具,例如 'postgres_query', 'postgres_list_tables', 和 'postgres_describe_table'。您可以指示 LLM 使用这些工具来查询和探索 PostgreSQL 数据库。具体的工具调用方式取决于您的 LLM 客户端的功能和界面。例如,在 Cursor 中,您可以使用 '@tool_code' 或类似的指令来调用这些工具。

请参考您的 MCP 客户端的文档,了解如何使用 MCP 服务器提供的工具与 PostgreSQL 数据库进行交互。

信息

分类

数据库与文件