PostgreSQL MCP服务器

一个通过模型上下文协议(MCP)连接Claude Code和PostgreSQL 12的服务,实现自然语言与数据库交互。

  • by povesma
  • 本地部署
  • 更新于
在 GitHub 查看 povesma/postgres12-claude-mcp-server-usage

使用说明

PostgreSQL 12与用于AI代理的MCP服务器

使用模型上下文协议(MCP)将Claude代码连接到PostgreSQL 12。

太长,读不下去了

# Clone this repository
git clone https://github.com/povesma/postgres12-claude-mcp-server-usage
cd postgres12-claude-mcp-server-usage

# Install Claude Code
npm install -g @anthropic-ai/claude-code

# Start PostgreSQL 12
docker-compose up -d

# Verify it's running
docker exec postgres12 psql -U postgres -d mydb -c "SELECT version();"

# Pull MCP server image
docker pull crystaldba/postgres-mcp

# Start Claude Code in this directory
claude

在Claude Code中,MCP服务器将自动连接。让Claude用自然语言与您的数据库交互:

  • “显示数据库中的所有架构”
  • “公共架构中有哪些表?”
  • “运行此SQL:SELECT version()”
  • “分析我的数据库的运行状况”

Claude将自动使用适当的MCP工具来满足您的请求。

逐步

包含什么

此存储库包含三个配置文件:

  1. docker-compose.yml -定义带有数据库的PostgreSQL 12容器 mydb,用户/密码 postgres/postgres,暴露在端口5432上
  2. .mcp.json -运行的MCP服务器配置 crystaldba/postgres-mcp 在Docker中,访问不受限制
  3. .claude/settings.json -Claude代码设置 enableAllProjectMcpServers: true Docker命令权限(可提交,适用于所有用户)

运作原理

Docker编写设置PostgreSQL 12容器创建了一个名为 postgres12_default。此网络允许其他Docker容器使用容器名称与数据库通信 postgres12 作为主机名。

MCP服务器架构模型上下文协议(MCP)是AI代理与外部数据源交互的标准化方式。这 crystaldba/postgres-mcp 服务器充当Claude和PostgreSQL之间的桥梁,将数据库操作作为Claude可以调用的工具公开。

网络配置:当Claude Code启动MCP服务器时,它作为Docker容器运行 --network postgres12_default,将其放置在与数据库相同的网络上。连接字符串使用 postgres12:5432 (容器名称,而不是localhost),因为Docker的DNS解析同一网络中的容器名称。

访问模式:The --access-mode=unrestricted 标志允许完全读/写访问,包括CREATE、INSERT、UPDATE、DELETE操作。对于生产用途,切换到 --access-mode=restricted 用于只读访问。

自动配置:克劳德代码读取 .mcp.json 在项目根目录中查找可用的MCP服务器。这 .claude/settings.json 提交 enableAllProjectMcpServers: true 预先批准的Docker命令会自动为所有用户启用postgres服务器。用户可以创建 .claude/settings.local.json 在本地覆盖设置(此文件为gitignored)。

工具调用:连接后,Claude可以执行SQL查询、分析数据库健康状况、解释查询计划、推荐索引和检查模式。MCP服务器将Claude的工具调用转换为PostgreSQL操作,并以Claude可以理解并呈现给您的格式返回结果。

为什么选择Docker:在Docker中运行MCP服务器可确保不同环境之间的行为一致,并提供网络隔离。这 --rm 配置中的标志会在每次使用后自动移除容器,防止容器堆积。

数据库凭据

  • 主机:localhost(来自主机)或postgres2(来自Docker网络)
  • 端口: 5432
  • 数据库:mydb
  • 用户:Postgres
  • 密码:Postgres

安全说明:这些是发展证书。对于生产,使用环境变量或机密管理。