mcpField
P
PostgreSQL MCP Server

PostgreSQL MCP Server

本地服务
github.com/habuvo数据库279 周前更新

关于 PostgreSQL MCP Server

PostgreSQL MCP Server 为 MCP 客户端提供与 PostgreSQL 数据库交互和检查的接口,适合执行查询及数据库操作的场景。它支持参数化 SQL、多语句事务和表结构读取。

主要功能

  1. 01执行参数化 SQL 查询
  2. 02执行插入、更新和删除操作
  3. 03运行多语句事务
  4. 04读取表结构信息
  5. 05安全处理查询参数

适用场景

  1. 01查询 PostgreSQL 数据并筛选结果
  2. 02在事务中执行多项数据库写入
  3. 03检查表的列与类型

MCP 相关

该服务通过 MCP 暴露 SQL 执行、查询、事务和表结构读取工具,供 MCP 客户端操作 PostgreSQL。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

PostgreSQL MCP 服务

这是一个模型上下文协议(MCP)服务,用于提供与 PostgreSQL 数据库交互的接口。通过标准化 API,您可以执行查询、进行数据库操作并管理事务。

功能

  • 使用参数化输入执行 SQL 查询
  • 执行数据库操作(INSERT、UPDATE、DELETE)
  • 执行包含多条语句的事务
  • 获取数据库架构信息
  • 安全处理参数,防止 SQL 注入

安装

  1. 克隆仓库:

    git clone https://github.com/yourusername/postgres-mcp.git
    cd postgres-mcp
    
  2. 安装依赖项:

    go mod download
    
  3. 配置数据库连接:

    cp .env.example .env
    

    编辑 .env 文件,填写 PostgreSQL 数据库凭据。

  4. 构建服务:

    go build -o postgres-mcp
    
  5. 运行服务:

    ./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

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。