每日 MCP Server

Postgres MCP:让 AI 直接查询数据库,从自然语言到 SQL 到结果

2026-08-16
数据库仓库
支持客户端:
Claude DesktopCursorVS CodeContinue
MCPPostgres数据库SQL

简介

Postgres MCP 让 Claude/Cursor 直接连数据库执行 SQL、看表结构、分析结果,全程不用切应用。本文拆解安装配置、读写权限分离、5 个实战场景(自然语言查数、Schema 探索、数据校验、报表生成、慢查询分析),以及只读模式与写权限的安全管控要点。

安装命令

npx -y @modelcontextprotocol/server-postgres

为什么需要 Postgres MCP

数据工作流的痛点:

你:帮我查上周销售额按品类拆分
传统流程:
  1. 切到 SQL 客户端
  2. 查表结构(有哪些字段)
  3. 写 SQL
  4. 执行,复制结果
  5. 切回 AI 对话,贴结果
  6. AI 分析
  → 6 步,5 次应用切换

Postgres MCP:
  你:帮我查上周销售额按品类拆分
  AI:
    1. 自动查表结构
    2. 生成 SQL
    3. 直接执行
    4. 分析结果
    5. 一句话回答
  → 1 步,0 次切换

Postgres MCP 把数据库变成 AI 的"原生能力",让自然语言到数据的距离归零。

核心能力

能力工具名说明
列出表list_tables获取所有表名
表结构describe_table查看字段、类型、注释
执行 SQLexecute_sql运行只读或写 SQL
只读查询read_query仅 SELECT,安全
写操作write_queryINSERT/UPDATE/DELETE
Schema 探索list_schemas列出所有 schema

安装与配置

Step 1:准备数据库

确保 Postgres 可访问,准备一个专用账号(不要用 root):

-- 创建只读账号(推荐)
CREATE USER mcp_reader WITH PASSWORD 'strong_password';
GRANT USAGE ON SCHEMA public TO mcp_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_reader;
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
  GRANT SELECT ON TABLES TO mcp_reader;

-- 如需写权限(高风险,慎用)
CREATE USER mcp_writer WITH PASSWORD 'strong_password';
GRANT INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO mcp_writer;

Step 2:各客户端配置

Claude Desktop

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "POSTGRES_CONNECTION_STRING": "postgresql://mcp_reader:strong_password@host:5432/dbname"
      }
    }
  }
}

Cursor / VS Code Continue

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "POSTGRES_CONNECTION_STRING": "postgresql://mcp_reader:strong_password@host:5432/dbname"
      }
    }
  }
}

Step 3:验证

重启客户端,输入:

列出数据库里所有的表

AI 调用 list_tables 返回表清单,确认配置成功。

五个实战场景

场景 1:自然语言查数

你:上周各品类的销售额,按降序排

AI:
  1. describe_table orders → 确认字段(category, amount, created_at)
  2. 生成 SQL:
     SELECT category, SUM(amount) AS total
     FROM orders
     WHERE created_at >= NOW() - INTERVAL '7 days'
     GROUP BY category
     ORDER BY total DESC
  3. execute_sql → 拿到结果
  4. 输出:
     | 品类 | 销售额 |
     | 服饰 | ¥128,500 |
     | 数码 | ¥98,200 |
     | 食品 | ¥45,800 |

场景 2:Schema 探索

你:我刚接手这个库,帮我理清核心表关系

AI:
  1. list_tables → 找到 15 张表
  2. 对每张 describe_table → 抓外键
  3. 输出关系图:
     users ─┬─ orders ──── order_items ── products
            └─ addresses                    └─ categories
     关键字段标注 + 表用途一句话总结

场景 3:数据校验

你:检查 users 表里有没有重复邮箱

AI:
  1. 生成校验 SQL:
     SELECT email, COUNT(*) AS cnt
     FROM users
     GROUP BY email
     HAVING COUNT(*) > 1
  2. execute_sql
  3. 输出:发现 3 个重复邮箱,列出明细
  4. 建议修复 SQL(但不执行,需你确认)

场景 4:报表生成

配合 Filesystem MCP 把查询结果落盘:

你:生成本月销售周报,存到 /reports/ 下

AI:
  1. 查本月数据(4 周)
  2. 算环比、同比
  3. 生成 Markdown 报表
  4. 用 Filesystem MCP 写到 /reports/2026-08.md
  → 直接交付成品文件

场景 5:慢查询分析

你:最近 orders 表查询慢,帮我分析

AI:
  1. 查 pg_stat_statements:
     SELECT query, calls, mean_exec_time, total_time
     FROM pg_stat_statements
     WHERE query LIKE '%orders%'
     ORDER BY total_time DESC LIMIT 5
  2. describe_table orders → 看索引
  3. 定位:某查询没命中索引
  4. 建议:CREATE INDEX idx_orders_status_date ON orders(status, created_at)
  5. 给出执行计划对比(EXPLAIN ANALYZE)

权限管控要点

1. 只读优先

✓ 用 mcp_reader 账号(仅 SELECT)
✗ 用 mcp_writer 账号日常用 → 误删数据风险

2. 写操作二次确认

AI 生成的 UPDATE/DELETE:
  → 不直接执行
  → 先 SELECT WHERE 同条件预览影响行
  → 用户确认后再 write_query

Step 3 在 system prompt 中加规则:

你连的是生产库。规则:
1. 任何写操作前必须先用 SELECT 预览影响行
2. DELETE 必须带 LIMIT
3. 不执行 DROP/TRUNCATE
4. 大批量写(>100 行)需用户确认

3. 敏感字段脱敏

✗ AI 查 users 表把 password_hash、手机号全输出
✓ system prompt 加规则:输出前脱敏 phone(显示 138****1234)、隐藏 password 类字段

4. 连接隔离

✗ 一个 MCP 连接既读生产又读测试 → 容易搞混
✓ 生产/测试用不同 MCP 配置,命名清晰

注意事项

1. 连接池

MCP server 默认单连接,高并发会阻塞。生产环境需配连接池(如 PgBouncer)。

2. 查询超时

✗ AI 生成的 SQL 跑了 10 分钟没回来 → 卡住
✓ 在连接串加 statement_timeout:
   postgresql://user:pass@host/db?options=-c%20statement_timeout%3D30000
   (30 秒超时)

3. 大结果集

✗ SELECT * FROM logs → 1000 万行 → 内存爆
✓ system prompt 加规则:默认 LIMIT 100,需全量时用户确认

4. 事务边界

AI 多次 write_query 不是一个事务 → 中途失败留下脏数据
解决:复杂写操作让 AI 生成完整 SQL 脚本,一次性执行

5. 注释依赖

✗ 字段名 user_id1、flag2 → AI 猜不出含义
✓ 字段加 COMMENT ON COLUMN → AI 能读懂
   COMMENT ON COLUMN orders.status IS '订单状态:pending/paid/shipped/done'

与直接用 SQL 的区别

维度Postgres MCP直接写 SQL
入门门槛自然语言学 SQL
探索速度快(自动理 schema)慢
适合场景临时分析、探索高频报表
可控性中高
上线建议探索用 MCP,生产报表用 SQL

与其他 MCP 的协作

组合场景
Postgres + Filesystem查询结果写文件
Postgres + Slack数据异常通知团队
Postgres + GitLab数据问题追溯代码
Postgres + Memory MCP记住常用查询模板

小结

Postgres MCP 把数据库从"需要切应用才能用"变成 AI 的原生能力,让自然语言到数据的距离归零。

记住一个安全原则:只读账号日常用,写操作必须二次确认。配合 Filesystem MCP 落盘、Slack MCP 通知,你能搭一个从数据到决策到交付的全自动数据助手。

相关推荐

查看更多 →
MCP数据库

Redis MCP Server:让 Agent 直接读写 Redis 数据库

Redis 是最流行的内存数据库之一,但 Agent 通常只能通过你手写脚本来间接操作。Redis MCP Server 打开了直连通道——让 Claude Code、Cursor、VS Code 中的 Agent 能够直接执行 Redis 命令、查询键值、管理过期时间、分析数据结构。本文介绍 Redis MCP 的核心能力(String/Hash/List/Set/ZSet 操作)、在各客户端中的配置方式、三个实战场景(实时配置热更新 / 缓存数据分析 / 会话存储巡检),以及与 PostgreSQL MCP 的选型对比和安全注意事项。

2026-09-02
#MCP#Redis
MCP数据库

SQLite MCP:让 LLM 操作本地轻量数据库的官方服务器

SQLite MCP 是 ModelContextProtocol 官方维护的轻量级数据库集成服务器,基于 SQLite 文件数据库让 LLM 客户端能够查询数据、分析表结构、执行统计。无需数据库服务、无需网络配置,一个 .db 文件即可让 Claude Code、Cursor 等 MCP 客户端成为本地数据分析助理。本文梳理核心能力、与 Postgres MCP 的差异、各客户端接入与实战注意事项。

2026-08-09
#MCP#SQLite
MCP数据库

Postgres MCP:让 LLM 直接查询数据库、分析数据的官方服务器

Postgres MCP 是 ModelContextProtocol 官方维护的数据库集成服务器,通过 PostgreSQL 协议让 LLM 客户端能够查询数据、分析表结构、执行聚合统计。一条 npx 命令即可让 Claude Code、Cursor、VS Code 等 MCP 客户端成为数据库分析助理。本文梳理核心能力、安全配置、各客户端接入与实战注意事项。

2026-08-08
#MCP#PostgreSQL
MCP数据库

PostgreSQL MCP Server:让 AI 直接查询你的数据库

官方维护的 PostgreSQL MCP Server,支持让 AI 客户端连接数据库、查询表结构、执行 SQL、生成报表。

2026-07-28
#MCP#数据库