PostgreSQL MCP服务器

一个基于MCP协议的PostgreSQL数据库交互工具,支持AI助手执行SQL查询、解释语句、创建表和列出数据库表。

  • by leixiaotian1
  • Go
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 leixiaotian1/pgsql-mcp-server

使用说明

PostgreSQL MCP服务器

中文 |英语

一种模型上下文协议(MCP)服务器,提供与PostgreSQL数据库交互的工具。它使AI助手能够通过MCP协议执行SQL查询、解释语句、创建表和列出数据库表。

✨ 特性

  • 通过AI与数据库交互: 使LLM能够通过结构化协议执行数据库操作。
  • 安全工具集: 将读写操作分离为不同的、可授权的工具(read_query, write_query).
  • 架构管理: 允许创建表(create_table)和上市(list_tables).
  • 查询分析: 提供分析查询执行计划的工具(explain_query).
  • 多种运输方式: 支持 stdio,服务器发送的事件(sse),以及 streamableHttp 用于灵活的客户端集成。
  • 基于环境的配置: 使用易于配置 .env 文件。

🛠️ 可用工具

服务器提供以下工具供MCP客户端调用:

工具名称 描述 参数
read_query 执行a SELECT SQL查询。 query (string,必填): SELECT 要执行的语句。
write_query 执行一个 INSERT, UPDATE,或 DELETE SQL查询。 query (string,必填): INSERT/UPDATE/DELETE 要执行的语句。
create_table 执行a CREATE TABLE SQL语句。 schema (string,必填): CREATE TABLE 声明。
list_tables 列出数据库中所有用户创建的表。 schema (字符串,可选):用于筛选表的架构名称
explain_query 返回给定SQL查询的执行计划。 query (string,必填):要解释的查询(必须以开头 EXPLAIN).

🚀 快速开始

先决条件

  • 转到1.23或更高版本
  • PostgreSQL数据库服务器

安装

  1. 克隆存储库:

    git clone https://github.com/leixiaotian1/pgsql-mcp-server.git
    cd pgsql-mcp-server
    
  2. 安装依赖项:

    go mod download
    
  3. 构建MCP服务器:

    go build -o pgsql-mcp-server
    

配置

这 pg-mcp-server 需要通过环境变量提供数据库连接详细信息。创建一个 .env 项目根目录中的文件,包含以下变量:

DB_HOST=localhost      # PostgreSQL server host
DB_PORT=5432           # PostgreSQL server port
DB_NAME=postgres       # Database name
DB_USER=your_username  # Database user
DB_PASSWORD=your_pass  # Database password
DB_SSLMODE=disable     # SSL mode (disable, require, verify-ca, verify-full)
SERVER_MODE=stdio      # Server mode (stdio, sse, streamableHttp)

用法

运行服务器

./pgsql-mcp-server

MCP配置

要将此服务器与启用MCP的AI助手一起使用,请在MCP配置中添加以下内容:

{
  "mcpServers": {
    "pgsql-mcp-server": {
      "command": "/path/to/pgsql-mcp-server",
      "args": [],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "5432",
        "DB_NAME": "postgres",
        "DB_USER": "your_username",
        "DB_PASSWORD": "your_password",
        "DB_SSLMODE": "disable",
        "SERVER_MODE": "stdio"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

DOCKER部署

Click to expand Docker Deployment Guide

先决条件

  • Docker已安装

部署步骤

  1. 克隆项目

    git clone https://github.com/leixiaotian1/pgsql-mcp-server.git
    cd pgsql-mcp-server
    
  2. 配置 .env 文件

    创建一个 .env 项目根目录中的文件。此文件存储数据库连接信息。 确保 DB_HOST 值与稍后启动的数据库容器名称匹配。

    DB_HOST=postgres
    DB_PORT=5432
    DB_NAME=postgres
    DB_USER=user
    DB_PASSWORD=password
    DB_SSLMODE=disable
    SERVER_MODE=sse
    
  3. 创建Docker网络

    要启用应用程序容器和数据库容器之间的通信,请创建一个共享的Docker网络。此命令只需运行一次。

    docker network create sql-mcp-network
    
  4. 启动PostgreSQL数据库容器

    使用此命令启动PostgreSQL容器并将其连接到我们的网络。

    注:

    • --name postgres:容器名称,必须与 DB_HOST 在你的 .env 文件。
    • --network sql-mcp-network:连接到共享网络。
    • -p 5432:5432:地图主机 5432 港口到集装箱 5432 端口。这意味着您可以通过以下方式从计算机连接(例如,使用DBeaver) localhost:5432,而应用程序容器将访问 5432 端口直接通过内部网络。
    docker run -d \
      --name postgres \
      --network sql-mcp-network \
      -e POSTGRES_USER=user \
      -e POSTGRES_PASSWORD=password \
      -e POSTGRES_DB=postgres \
      -p 5432:5432 \
      postgres
    
  5. 构建并运行应用程序

    现在,您可以使用以下命令 Makefile 管理应用程序。

    • 构建映像并运行容器:

      make build
      make run
      

      这将自动停止旧容器,构建新映像,并启动新容器。

    • 查看应用程序日志:

      make logs
      

      如果你看到 Successfully connected to database,一切正常。

    • 停止应用程序:

      make stop
      

🔌 服务器模式

您可以通过设置来选择传输协议 SERVER_MODE 环境变量。

stdio

服务器通过标准输入和输出进行通信。这是默认模式,非常适合本地测试或与基于命令行的MCP客户端直接集成。

sse

服务器使用服务器发送事件(SSE)进行通信。启用此模式后,服务器将启动HTTP服务并侦听连接。

  • SSE 端点: http://localhost:8088/sse
  • 消息终结点: http://localhost:8088/message

streamableHttp

服务器使用Streamable HTTP传输,这是一种更现代、更灵活的基于HTTP的MCP传输。

  • 端点: http://localhost:8088/mcp

🤝 贡献

欢迎投稿!如果您发现任何错误、功能请求或改进建议,请随时提交Pull Request或打开Issue。

  1. 分叉项目。
  2. 创建功能分支(git checkout -b feature/AmazingFeature).
  3. 提交您的更改(git commit -m 'Add some AmazingFeature').
  4. 推到分支机构(git push origin feature/AmazingFeature).
  5. 打开拉取请求。

📄 许可证

该项目是开源的,并根据MIT许可证获得许可。