使用说明
pg_mcp
PostgreSQL的MCP服务器。通过以下方式提供模式自检和查询执行工具 模型上下文协议.
特征
- 执行任意SQL查询
- 执行只读查询(SELECT安全)
- 内省模式、表、视图、函数、触发器、索引
- 安全控制的三种权限模式
需求
- 锈1.75+(2024年版)
- PostgreSQL 15+
- Podman或Docker(用于集成测试)
设置
cp .env.example .env
# Edit .env with your database credentials
DATABASE_URL=postgres://postgres:postgres@localhost:5432/postgres
DEFAULT_SCHEMA=public
PERMISSION_MODE=restricted
构建与运行
cargo build --release
./target/release/pg_mcp
服务器通过stdio(MCP协议)进行通信。
工具
| 工具 | 说明 |
|---|---|
execute_sql |
执行任意SQL(INSERT、UPDATE、DELETE、SELECT等) |
execute_query |
通过read only事务执行只读查询 |
list_schemas |
列出所有架构 |
list_tables |
列出架构中的表 |
list_views |
列出架构中的普通视图 |
list_materialized_views |
列出架构中的物化视图 |
list_procedures |
列出模式中的函数/过程 |
list_triggers |
列表触发器(可选表筛选器) |
list_indexes |
列出表的索引 |
get_table_structure |
列、约束、外键 |
get_view_definition |
视图的SQL定义 |
get_function_definition |
函数的SQL定义 |
权限模式
| 模式 | execute_sql | execute_query | 架构工具 |
|---|---|---|---|
unrestricted |
✅ | ✅ | ✅ |
readonly |
❌ | ✅ | ✅ |
restricted |
❌ | ❌ | ✅ |
违约: restricted.通过设置 PERMISSION_MODE env-var(不区分大小写)。
查询行为
execute_sql:执行任意SQL。失败时返回错误。
execute_query:将查询包装在 READ ONLY 交易。列值通过类型感知进行序列化: bool, int2/int4/int8, float4/float8, numeric, json/jsonb 保留为其原生JSON类型。其他类型以字符串形式返回。
安全
- SQL错误被净化以剥离连接字符串(通过以下方式防止密码泄漏
sqlx::Error). execute_sql仅在以下情况下可用unrestricted模式。execute_query被封锁了restricted模式。