每日 MCP Server

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

2026-08-08
数据库仓库
支持客户端:
Claude CodeCursorVS CodeContinueCline
MCPPostgreSQL数据库数据分析

简介

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

安装命令

npx -y @modelcontextprotocol/server-postgres

简介

Postgres MCP 是 ModelContextProtocol 官方仓库维护的数据库集成服务器。它通过 PostgreSQL 协议直接连接数据库,让任何兼容 MCP 的客户端都能用自然语言查询数据库,无需写 SQL、无需打开数据库客户端、无需复制粘贴结果

对数据分析师与开发者而言,这意味着:让 AI 助理直接帮你"查一下上周的新增用户数"、"统计各品类的销售额排名"、"分析这张表的字段类型与索引情况"。

核心能力

工具名用途关键参数
query执行只读 SQL 查询sql(SELECT 语句)
list_tables列出所有表schema(可选)
describe_table描述表结构table
list_schemas列出所有 schema
get_table_stats获取表统计信息table(行数、大小等)
get_index_info获取索引信息table

安全限制

  • 仅支持 只读查询(SELECT),不支持 INSERT/UPDATE/DELETE/DROP
  • 自动添加 LIMIT 100 防止返回过多数据
  • 超时设置防止慢查询阻塞
  • 连接使用 SSL 加密(如数据库支持)

连接配置

Postgres MCP 通过连接字符串配置数据库连接:

postgresql://用户名:密码@主机:端口/数据库名?sslmode=require

示例

# 本地数据库
postgresql://postgres:password@localhost:5432/mydb

# 云数据库(如 Supabase)
postgresql://postgres.xxx:password@aws-0-region.pooler.supabase.com:5432/postgres

# 带SSL
postgresql://user:pass@host:5432/db?sslmode=require

各客户端配置示例

Claude Code(CLI)

编辑 ~/.claude/claude_desktop_config.json

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://postgres:password@localhost:5432/mydb"
      ]
    }
  }
}

注意:连接字符串作为 args 的最后一个参数直接传入,不是 env 变量。

Cursor

编辑 ~/.cursor/mcp.json

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://user:pass@host:5432/db?sslmode=require"
      ]
    }
  }
}

VS Code(Continue 插件)

编辑 ~/.continue/config.json

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "npx",
          "args": [
            "-y",
            "@modelcontextprotocol/server-postgres",
            "postgresql://user:pass@host:5432/db"
          ]
        }
      }
    ]
  }
}

Cline 插件

通过 Cline: MCP Settings 打开配置,结构同 Claude Desktop。

实战场景

场景 1:让 Claude Code 做"数据查询助理"

查询过去 7 天每天的订单量与 GMV,
按日期排序,
标注环比变化。

Claude Code 会调用 query → 自动生成 SQL → 返回结果 → 格式化输出。

场景 2:让 Cursor 做"表结构分析"

分析 users 表的结构:
1. 列出所有字段、类型、是否可空
2. 标注主键与索引
3. 检查是否有未建索引的外键
4. 估算表大小与行数
5. 给出优化建议

Cursor 会调用 describe_table + get_index_info + get_table_stats → 综合分析。

场景 3:让 Claude Code 做"数据质量检查"

检查 orders 表的数据质量:
1. 是否有 NULL 值集中的字段
2. 是否有重复订单号
3. 金额字段是否有负值或异常值
4. 时间字段是否有未来日期
5. 外键引用是否完整

Claude Code 会生成多条质检 SQL → 逐条执行 → 汇总报告。

场景 4:让 VS Code 做"业务指标看板"

帮我计算本月核心业务指标:
1. DAU / MAU / 活跃比
2. 新增用户 / 流失用户 / 净增
3. 留存率(次日 / 7 日 / 30 日)
4. ARPU / ARPPU
5. 转化漏斗各步骤转化率

Cline + Continue 会生成多条聚合 SQL → 合并为指标看板。

与 Filesystem MCP 的对比

维度Postgres MCPFilesystem MCP
数据类型结构化数据文件
查询方式SQL路径/模式
写入能力❌(只读)
适合场景数据分析、业务统计代码管理、文件操作
安全模型只读 + LIMIT目录白名单
性能快(索引查询)快(本地IO)

建议两个都装:Postgres MCP 查数据,Filesystem MCP 管代码与脚本。

安全最佳实践

1. 创建只读用户

不要用超级用户连接!创建专门的只读用户:

-- 创建只读用户
CREATE USER mcp_reader WITH PASSWORD 'strong_password';

-- 授予 schema 访问权限
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;

-- 撤销写权限(双保险)
REVOKE INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public FROM mcp_reader;

2. 限制 schema 访问

只暴露必要的 schema:

-- 只允许访问业务 schema
GRANT USAGE ON SCHEMA analytics TO mcp_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA analytics TO mcp_reader;

-- 不授权 pg_catalog 等系统 schema

3. 连接加密

始终使用 SSL:

postgresql://user:pass@host:5432/db?sslmode=require

4. 连接字符串保密

连接字符串含密码,切勿提交到 Git:

// ❌ 不要这样写死
"args": ["postgresql://user:pass@host/db"]

// ✅ 用环境变量
"args": ["postgresql://user:${DB_PASS}@host/db"]

5. 网络隔离

生产数据库不要直接暴露公网,用 SSH 隧道或 VPC 内连接:

# SSH 隧道
ssh -L 5432:localhost:5432 user@db-server

# MCP 连接本地隧道
postgresql://user:pass@localhost:5432/db

注意事项

  1. 只读限制:Postgres MCP 不支持写入操作,数据修改需人工执行 SQL。
  2. LIMIT 100:查询结果默认限制 100 行,需更多数据时在 SQL 中显式加 LIMIT
  3. 超时设置:慢查询会被自动中断(默认 30 秒),复杂分析需优化 SQL 或分批查询。
  4. 连接池:MCP 服务器维护单连接,高并发场景需考虑连接池。
  5. 大表查询:对千万级大表的 COUNT(*) 或全表扫描会超时,建议先 get_table_stats 了解规模。
  6. 视图支持:可以查询视图(View),但 describe_table 对视图的描述可能不完整。
  7. JSON 字段:PostgreSQL 的 JSONB 字段查询结果在 MCP 中以文本返回,需 AI 解析。
  8. 时区问题:查询时间字段注意数据库时区设置,建议用 AT TIME ZONE 转换。
  9. 权限继承:新建表默认不授予 mcp_reader,需 ALTER DEFAULT PRIVILEGES

与其他数据库 MCP 的关系

MCP数据库特点
Postgres MCPPostgreSQL官方维护,功能最全
SQLite MCPSQLite轻量本地数据库
MySQL MCPMySQL社区维护
Supabase MCPSupabasePostgres + Auth + Storage

若用 Supabase,可直接用 Supabase MCP(含 Auth/Storage 等更多能力);若用自建 PostgreSQL,用 Postgres MCP 即可。

小结

Postgres MCP 是数据团队最直接的 AI 数据分析入口:一个连接字符串、一个只读用户,就能让任意 MCP 客户端查询数据库、分析表结构、统计业务指标。对于需要"即席查询、数据质量检查、业务指标计算"的场景,几乎是必装组件。

MCP 进阶系列下一篇将讲 SQLite MCP,看轻量级本地数据库的 AI 集成方案。

相关推荐

查看更多 →
MCP数据库

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

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

2026-07-28
#MCP#数据库
MCP文件

Filesystem MCP:让 LLM 读写本地文件的官方服务器

Filesystem MCP 是 ModelContextProtocol 官方维护的本地文件系统集成服务器,通过受限的文件 API 让 LLM 客户端能够读取文件、写入文件、创建目录、搜索文件、移动文件。一条 npx 命令即可让 Claude Code、Cursor、VS Code 等 MCP 客户端安全地操作本地项目。本文梳理核心能力、权限配置、各客户端接入与安全注意事项。

2026-08-07
#MCP#Filesystem
MCP开发

GitHub MCP:让 LLM 直接操作仓库、PR、Issue 的官方服务器

GitHub MCP 是 ModelContextProtocol 官方维护的开发者集成服务器,通过 GitHub API 让 LLM 客户端能够搜索仓库、读取代码、创建 Issue、提交 PR、管理分支。一条 npx 命令即可让 Claude Code、Cursor、VS Code 等 MCP 客户端成为 GitHub 自动化助理。本文梳理核心能力、Token 申请、各客户端配置与实战注意事项。

2026-08-06
#MCP#GitHub
MCP文件

Notion MCP:让 LLM 读写 Notion 数据库、页面与块的官方服务器

Notion MCP 是 ModelContextProtocol 官方维护的协作平台集成服务器,通过 Notion API 让 LLM 客户端能够搜索页面、读取内容、创建文档、更新数据库记录。一条 npx 命令即可让 Claude Code、Cursor、VS Code 等 MCP 客户端成为 Notion 知识库助理。本文梳理核心能力、Internal Integration 申请、各客户端配置与实战注意事项。

2026-08-05
#MCP#Notion