详细介绍
Postgresql MCP Server 是一个基于 FastMCP 协议的中间件服务,旨在为 PostgreSQL 数据库提供安全、可控的访问接口。该服务支持对指定表的增删改查(CRUD)操作、模式检查以及自定义 SQL 查询,并通过 YAML 配置文件实现表级和列级的访问控制,适用于微服务架构、低代码平台和需要统一数据库接口的系统。
核心功能
PostgreSQL MCP 服务器提供以下核心功能:
- 数据库连接:支持连接任意 PostgreSQL 数据库实例,通过配置文件定义连接参数。
- CRUD 操作:允许对指定表执行创建、读取、更新和删除记录的操作。
- 访问控制:支持表级和列级的精细权限控制,可配置允许的操作类型。
- 模式检查:提供获取表结构信息的功能,便于了解字段和类型。
- 自定义查询:支持执行参数化的 SQL 查询,但需谨慎配置以避免安全风险。
安装方法
安装 PostgreSQL MCP 服务器需要以下步骤:
- 克隆项目仓库:
git clone https://github.com/yourusername/postgresql-mcp.git
cd postgresql-mcp- 安装依赖:
pip install -r requirements.txt配置说明
服务器通过 config.yaml 文件进行配置,包含数据库连接信息和表访问权限。示例配置如下:
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 客户端发送操作请求。以下是常用工具的使用示例:
列出所有可访问表
resp>创建新记录
resp
table_name="users",
data={
"name": "John Doe",
"email": "john@example.com"
}
)读取记录
resp
table_name="users",
filters={"name": "John Doe"},
limit=10,
offset=0
)更新记录
resp
table_name="users",
record_id=1,
data={"email": "newemail@example.com"},
id_column="id"
)删除记录
resp
table_name="users",
record_id=1,
id_column="id"
)执行自定义 SQL 查询
resp
query="SELECT * FROM users WHERE age > %s",
params=[18]
)获取表结构信息
resp>使用场景
PostgreSQL MCP 服务器适用于以下场景:
- 需要安全访问 PostgreSQL 数据库的应用程序,避免直接暴露数据库。
- 需要统一数据库操作接口的微服务架构。
- 低代码平台中,通过配置即可实现数据库操作。
- 需要精细权限控制的系统,如多租户架构。
注意事项
使用 PostgreSQL MCP 服务器时需注意以下事项:
- 数据库连接信息需根据实际环境配置。
- 表和列的访问控制严格遵循配置文件中的定义。
- 所有 SQL 查询需通过参数化方式执行,以防止 SQL 注入攻击。
- 自定义 SQL 查询功能存在潜在安全风险,建议仅在受控环境中使用。
PostgreSQL MCP 服务器通过标准化的 MCP 协议提供安全、可控的数据库访问方式,适用于需要统一接口和精细权限管理的场景。