使用说明
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数据库服务器
安装
-
克隆存储库:
git clone https://github.com/leixiaotian1/pgsql-mcp-server.git cd pgsql-mcp-server -
安装依赖项:
go mod download -
构建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已安装
部署步骤
-
克隆项目
git clone https://github.com/leixiaotian1/pgsql-mcp-server.git cd pgsql-mcp-server -
配置
.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 -
创建Docker网络
要启用应用程序容器和数据库容器之间的通信,请创建一个共享的Docker网络。此命令只需运行一次。
docker network create sql-mcp-network -
启动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 -
构建并运行应用程序
现在,您可以使用以下命令
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。
- 分叉项目。
- 创建功能分支(
git checkout -b feature/AmazingFeature). - 提交您的更改(
git commit -m 'Add some AmazingFeature'). - 推到分支机构(
git push origin feature/AmazingFeature). - 打开拉取请求。
📄 许可证
该项目是开源的,并根据MIT许可证获得许可。