项目简介

Postgres MCP 是一个基于 Model Context Protocol (MCP) 的服务器实现,专为 PostgreSQL 数据库设计。它允许 LLM 客户端通过标准的 MCP 协议,安全地访问 PostgreSQL 数据库的元数据信息(例如表结构),并执行只读 SQL 查询。

主要功能点

  • 数据库资源浏览: 允许客户端获取 PostgreSQL 数据库中表的结构信息,包括表名和字段名及数据类型。
  • 只读 SQL 查询: 支持客户端执行只读的 SQL SELECT 查询,安全地获取数据库中的数据。
  • HTTP 接口: 通过简洁的 HTTP 接口与 MCP 客户端进行通信。
  • 灵活配置: 支持通过命令行参数或环境变量配置数据库连接信息。

安装步骤

  1. 安装 Go 环境: 确保已安装 Go 1.23.6 或更高版本,并配置好 Go 开发环境。
  2. 安装 Git: 确保已安装 Git,用于克隆仓库。
  3. 克隆仓库: 执行以下命令克隆 Postgres MCP 仓库到本地:
    git clone https://github.com/ipfans/postgres-mcp.git
    cd postgres-mcp
  4. 下载依赖: 在项目根目录下,执行以下命令下载所需的 Go 依赖包:
    go mod download

服务器配置

MCP 客户端需要配置以下信息以连接到 Postgres MCP 服务器。以下是示例 JSON 格式配置,请根据您的实际情况修改:

{
  "serverName": "postgres-mcp-server",
  "command": "go run cmd/postgres-mcp/main.go",
  "args": [
    "--db", "数据库连接URL"
  ],
  "description": "PostgreSQL MCP Server",
  "transport": "http",
  "baseURL": "http://localhost:8080/mcp"
}

参数说明:

  • 'serverName': MCP 服务器的名称,可以自定义。
  • 'command': 启动 MCP 服务器的命令。
  • 'args': 传递给启动命令的参数,用于配置数据库连接。
    • '--db "数据库连接URL"': 数据库连接 URL,例如 'postgres://user:password@localhost:5432/dbname'。请替换为您的实际数据库连接信息。您也可以选择不使用 '--db' 参数,而是设置环境变量 'DATABASE_URL'。
  • 'description': 服务器的描述信息,可以自定义。
  • 'transport': 传输协议,这里固定为 'http'。
  • 'baseURL': MCP 服务器的 HTTP 基础 URL,默认为 'http://localhost:8080/mcp'。

环境变量配置 (可选):

除了命令行参数,您还可以使用 '.env' 文件配置数据库连接。在项目根目录下创建 '.env' 文件,并添加以下内容,请替换为您的实际数据库连接信息

DATABASE_URL=postgres://user:password@localhost:5432/dbname

如果使用 '.env' 文件配置,MCP 客户端的 'args' 字段可以为空数组 '[]'。

基本使用方法

  1. 启动服务器: 在项目根目录下,执行以下命令启动 Postgres MCP 服务器:

    go run cmd/postgres-mcp/main.go --db "postgres://user:password@localhost:5432/dbname"

    或 (如果使用 '.env' 文件配置):

    go run cmd/postgres-mcp/main.go

    服务器默认会在 'http://localhost:8080' 启动。

  2. MCP 客户端请求: 使用 MCP 客户端向服务器发送请求,例如:

    获取数据库资源列表:

    POST http://localhost:8080/mcp
    Content-Type: application/json
    
    {
      "type": "function",
      "name": "resources"
    }

    执行 SQL 查询:

    POST http://localhost:8080/mcp
    Content-Type: application/json
    
    {
      "type": "function",
      "name": "query",
      "arguments": {
        "query": "SELECT * FROM your_table LIMIT 10"
      }
    }

    请参考 MCP 客户端的文档,了解如何配置和发送 MCP 请求。

信息

分类

数据库与文件