项目简介
Postgres MCP 是一个基于 Model Context Protocol (MCP) 的服务器实现,专为 PostgreSQL 数据库设计。它允许 LLM 客户端通过标准的 MCP 协议,安全地访问 PostgreSQL 数据库的元数据信息(例如表结构),并执行只读 SQL 查询。
主要功能点
- 数据库资源浏览: 允许客户端获取 PostgreSQL 数据库中表的结构信息,包括表名和字段名及数据类型。
- 只读 SQL 查询: 支持客户端执行只读的 SQL SELECT 查询,安全地获取数据库中的数据。
- HTTP 接口: 通过简洁的 HTTP 接口与 MCP 客户端进行通信。
- 灵活配置: 支持通过命令行参数或环境变量配置数据库连接信息。
安装步骤
- 安装 Go 环境: 确保已安装 Go 1.23.6 或更高版本,并配置好 Go 开发环境。
- 安装 Git: 确保已安装 Git,用于克隆仓库。
- 克隆仓库: 执行以下命令克隆 Postgres MCP 仓库到本地:
git clone https://github.com/ipfans/postgres-mcp.git cd postgres-mcp - 下载依赖: 在项目根目录下,执行以下命令下载所需的 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' 字段可以为空数组 '[]'。
基本使用方法
-
启动服务器: 在项目根目录下,执行以下命令启动 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' 启动。
-
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 请求。
信息
分类
数据库与文件