返回 MCP 目录
public公开dns本地运行

postgresql-mcp

一个基于FastMCP库的PostgreSQL数据库MCP服务,提供对指定表的CRUD操作、模式检查和自定义SQL查询功能。

article

README

🚀 PostgreSQL MCP 服务器

PostgreSQL MCP 服务器可提供 PostgreSQL 数据库表的增删改查(CRUD)操作。借助该服务器,用户能方便地与 PostgreSQL 数据库交互,对指定表执行各类操作。

🚀 快速开始

此 MCP 服务器允许您通过一组工具与 PostgreSQL 数据库交互,对指定的表执行增删改查操作。该服务器使用 FastMCP 库,并以标准输入输出模式运行,使其与各种 MCP 客户端兼容。

✨ 主要特性

  • 连接 PostgreSQL 数据库
  • 对指定表执行增删改查操作
  • 表级和列级访问控制
  • 数据库表结构检查
  • 执行自定义 SQL 查询
  • 通过 YAML 文件配置

📦 安装指南

  1. 克隆此仓库:

    git clone https://github.com/yourusername/postgresql-mcp.git
    cd postgresql-mcp
    
  2. 安装所需的依赖项:

    pip install -r requirements.txt
    

📚 详细文档

配置

服务器通过 config.yaml 文件进行配置。此文件包含:

  1. 数据库连接详细信息
  2. 表配置,包括:
    • 哪些表是可访问的
    • 允许哪些列进行操作
    • 允许哪些操作(创建、读取、更新、删除)

示例配置:

database:
  host: localhost
  port: 5432
  dbname: postgres
  user: postgres
  password: postgres
  
tables:
  - name: users
    allowed_columns:
      - id
      - name
      - email
      - created_at
    allowed_operations:
      - create
      - read
      - update
      - delete
  
  - name: products
    allowed_columns:
      - id
      - name
      - price
      - description
      - category
    allowed_operations:
      - create
      - read
      - update
      - delete

使用

运行 MCP 服务器:

python postgresql_mcp_server.py

服务器将以标准输入输出模式启动,准备接收来自 MCP 客户端的命令。

可用 MCP 工具

list_tables

列出配置中的所有表。

response = list_tables()

create_record

在指定表中创建新记录。

response = create_record(
    table_name="users",
    data={
        "name": "John Doe",
        "email": "john@example.com"
    }
)

read_records

从指定表中读取记录,带可选过滤条件。

response = read_records(
    table_name="users",
    filters={"name": "John Doe"},
    limit=10,
    offset=0
)

update_record

更新指定表中的记录。

response = update_record(
    table_name="users",
    record_id=1,
    data={"email": "newemail@example.com"},
    id_column="id"
)

delete_record

从指定表中删除记录。

response = delete_record(
    table_name="users",
    record_id=1,
    id_column="id"
)

execute_query

执行自定义 SQL 查询。

response = execute_query(
    query="SELECT * FROM users WHERE age > %s",
    params=[18]
)

get_table_schema

获取特定表的架构信息。

response = get_table_schema(table_name="users")

响应格式

所有工具都返回标准响应格式:

{
  "status": "success",
  "message": "Optional message",
  "records": [...],  // 用于读取操作
  "record": {...},   // 用于创建和更新操作
  "count": 10        // 用于读取操作
}

如果发生错误,响应状态将为 error,并包含错误消息。

⚠️ 注意事项

⚠️ 重要提示

  • 数据库连接信息需要根据实际情况配置。
  • 表和列的访问控制严格遵循配置文件中的定义。
  • 所有 SQL 查询都需要通过参数化方式执行以防止注入攻击。
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端