使用说明
项目简介
本项目是一个基于 Model Context Protocol (MCP) 的服务器实现,专注于为大型语言模型 (LLM) 应用提供访问 PostgreSQL 数据库的能力。它通过标准化的 MCP 协议,将 PostgreSQL 数据库的操作封装成一系列易于 LLM 调用的工具,使得 LLM 可以安全、高效地与 PostgreSQL 数据库进行交互。
主要功能点
- 执行 SQL 查询: 允许 LLM 执行 SELECT 查询语句,并获取查询结果。
- 执行 SQL 语句: 允许 LLM 执行 INSERT, UPDATE, DELETE 等 SQL 语句,进行数据操作。
- 事务处理: 支持在事务中执行多个 SQL 语句,保证数据操作的原子性。
- Schema 信息查询: 提供查询数据库表结构信息的功能,帮助 LLM 理解数据库 schema。
- 参数化查询: 所有 SQL 操作均支持参数化查询,有效防止 SQL 注入攻击,保障数据安全。
安装步骤
- 克隆仓库
git clone https://github.com/habuvo/postgres-mcp.git cd postgres-mcp - 安装依赖
确保已安装 Go 语言环境,然后执行命令下载项目依赖:
go mod download - 配置数据库连接
复制 '.env.example' 文件并重命名为 '.env',然后编辑 '.env' 文件,填入您的 PostgreSQL 数据库连接信息,例如:
DB_HOST=localhost DB_PORT=5432 DB_NAME=your_database_name DB_USER=your_username DB_PASSWORD=your_password DB_SSLMODE=disable - 构建服务器
执行以下命令编译服务器程序:
go build -o postgres-mcp - 运行服务器
执行编译生成的可执行文件启动 MCP 服务器:
服务器默认使用 Stdio 协议,通过标准输入输出与 MCP 客户端通信。./postgres-mcp
服务器配置
MCP 客户端需要配置以下 JSON 格式的信息才能连接到 PostgreSQL MCP 服务器:
{ "server_name": "PostgreSQL MCP Server", // MCP 服务器名称,可自定义 "command": "./postgres-mcp", // 启动 PostgreSQL MCP 服务器的命令 "args": [], // 启动命令参数,本项目无需参数 "protocol": "stdio" // 使用 stdio 协议进行通信 }
基本使用方法
启动 PostgreSQL MCP 服务器后,MCP 客户端可以通过 JSON-RPC 协议调用服务器提供的工具。主要工具包括:
-
execute_tool: 执行非查询 SQL 语句,例如 INSERT, UPDATE, DELETE。
- 请求参数包括 'statement' (SQL 语句,使用 '$1', '$2' 等占位符) 和 'arguments' (参数值数组)。
- 返回执行结果,例如受影响的行数。
-
query_tool: 执行 SELECT 查询语句。
- 请求参数同样包括 'statement' 和 'arguments'。
- 返回查询结果,包含 'rows' (数据行数组), 'columns' (列名数组), 'rowCount' (行数)。
-
transaction_tool: 执行事务,包含多个 SQL 语句。
- 请求参数包括 'statements' (SQL 语句数组) 和 'arguments' (对应每个语句的参数数组的数组)。
- 返回每个语句的执行结果。
-
schema_tool: 获取表结构信息。
- 请求参数包括 'table_name' (表名)。
- 返回表的列信息,包括列名、数据类型、是否允许为空、默认值等。
客户端需要根据具体的工具和参数构造符合 MCP 协议的 JSON-RPC 请求,并发送给 PostgreSQL MCP 服务器。服务器会执行相应的数据库操作,并将结果以 JSON-RPC 响应返回给客户端。
例如,使用 'query_tool' 查询 'users' 表的数据,客户端需要发送类似以下的 JSON-RPC 请求(简化示例,实际请求需符合 JSON-RPC 规范):
{ "tool_name": "query_tool", "parameters": { "statement": "SELECT * FROM users WHERE id = $1", "arguments": [1] } }
服务器会执行查询,并返回包含查询结果的 JSON-RPC 响应。
信息
分类
数据库与文件