关于 PostgreSQL MCP Server
PostgreSQL MCP Server 为 MCP 客户端提供与 PostgreSQL 数据库交互和检查的接口,适合执行查询及数据库操作的场景。它支持参数化 SQL、多语句事务和表结构读取。
主要功能
- 01执行参数化 SQL 查询
- 02执行插入、更新和删除操作
- 03运行多语句事务
- 04读取表结构信息
- 05安全处理查询参数
适用场景
- 01查询 PostgreSQL 数据并筛选结果
- 02在事务中执行多项数据库写入
- 03检查表的列与类型
MCP 相关
该服务通过 MCP 暴露 SQL 执行、查询、事务和表结构读取工具,供 MCP 客户端操作 PostgreSQL。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
PostgreSQL MCP 服务
这是一个模型上下文协议(MCP)服务,用于提供与 PostgreSQL 数据库交互的接口。通过标准化 API,您可以执行查询、进行数据库操作并管理事务。
功能
- 使用参数化输入执行 SQL 查询
- 执行数据库操作(INSERT、UPDATE、DELETE)
- 执行包含多条语句的事务
- 获取数据库架构信息
- 安全处理参数,防止 SQL 注入
安装
-
克隆仓库:
git clone https://github.com/yourusername/postgres-mcp.git cd postgres-mcp -
安装依赖项:
go mod download -
配置数据库连接:
cp .env.example .env编辑
.env文件,填写 PostgreSQL 数据库凭据。 -
构建服务:
go build -o postgres-mcp -
运行服务:
./postgres-mcp
使用方法
该服务提供以下 MCP 工具:
1. execute_tool
执行单条 SQL 语句。
请求:
{
"statement": "INSERT INTO users(name, email) VALUES($1, $2)",
"arguments": ["Jane Doe", "[email protected]"]
}
响应:
{
"rows affected": 1
}
2. query_tool
执行 SELECT 查询并返回结果。
请求:
{
"statement": "SELECT * FROM users WHERE id = $1",
"arguments": [1]
}
响应:
{
"rows": [
{
"id": 1,
"name": "John Doe",
"email": "[email protected]"
}
],
"columns": ["id", "name", "email"],
"rowCount": 1
}
3. transaction_tool
在事务中执行多条语句。
请求:
{
"statements": [
"INSERT INTO users(name, email) VALUES($1, $2)",
"INSERT INTO user_roles(user_id, role) VALUES($1, $2)"
],
"arguments": [
["Alice", "[email protected]"],
[1, "admin"]
]
}
响应:
{
"results": [
{
"statement": 0,
"rowsAffected": 1
},
{
"statement": 1,
"rowsAffected": 1
}
]
}
4. schema_tool
获取表的架构信息。
请求:
{
"table_name": "users"
}
响应:
{
"table": "users",
"columns": [
{
"name": "id",
"type": "integer",
"nullable": false,
"default": "nextval('users_id_seq'::regclass)"
},
{
"name": "name",
"type": "character varying",
"nullable": false,
"default": null
},
{
"name": "email",
"type": "character varying",
"nullable": false,
"default": null
}
]
}
客户端示例
以下示例展示了如何使用 MCP 客户端与服务交互:
package main
import (
"encoding/json"
"fmt"
"log"
"github.com/mark3labs/mcp-go/client"
)
func main() {
// Create a new MCP client
c := client.NewClient("http://localhost:8080")
// Prepare a query request
queryReq := map[string]interface{}{
"statement": "SELECT * FROM users WHERE id = $1",
"arguments": []interface{}{1},
}
// Execute the query
resp, err := c.Execute("query_tool", queryReq)
if err != nil {
log.Fatalf("Failed to execute query: %v", err)
}
// Print the response
prettyJSON, _ := json.MarshalIndent(resp.Data, "", " ")
fmt.Println(string(prettyJSON))
}
安全注意事项
- 始终使用参数化查询,防止 SQL 注入攻击
- 将数据库用户权限限制在必要范围内
- 在生产环境中使用 SSL/TLS 连接数据库
- 为 MCP 服务实施适当的身份验证和授权机制
许可证
本项目采用 MIT 许可证。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。