关于 postgres-mcp
postgres-mcp 是面向 PostgreSQL 开发与运维的 MCP 服务,提供数据库检查、SQL 执行、查询计划、健康检查和索引分析。它还包含带 LLM 聊天和工具调用的 Gradio 界面。
主要功能
- 01执行 SQL 并检查数据库对象
- 02解释查询并分析数据库健康状况
- 03查看慢查询和索引性能
- 04检查活动查询、锁和表大小
- 05带 LLM 聊天与工具调用的 Gradio 界面
适用场景
- 01调查慢查询和数据库工作负载
- 02检查数据库健康状况与活动锁
- 03评估索引使用情况和查询计划
- 04通过 MCP 客户端浏览架构并执行 SQL
MCP 相关
提供 15 个用于 PostgreSQL 架构、对象、SQL 执行、查询分析、健康检查和索引分析的工具,支持 stdio 与 SSE 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
15收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| database_url | any | 否 |
详细介绍
📘 Postgres MCP Pro — сервер MCP для PostgreSQL
🔎 Обзор
Postgres MCP Pro — это open-source сервер Model Context Protocol (MCP), предназначенный для помощи разработчикам и AI-агентам на всех этапах разработки: от начального кода и тестирования до деплоя и продакшн-оптимизации.
🙌 Основано на crystaldba/postgres-mcp (MIT, © 2025 Crystal Corp / Johann Schleier-Smith). Форк развивается и поддерживается sparta2025 — автономный MCP-сервер, Gradio-оболочка, LLM-чат с tool-calling, сертификаты шифрования.
📚 Полная документация: docs/DOCUMENTATION.md — развёртывание (Docker/облако), Gradio-оболочка, подключение клиентов (stdio/SSE), все инструменты и переменные окружения.
Отличается от простого подключения к базе данных следующими возможностями:
- Анализ состояния БД: индекс, буферный кэш, autovacuum, последовательности, репликация и др.
- Оптимизация индексов: автоматический подбор лучших индексов с помощью промышленных алгоритмов.
- Планы выполнения: EXPLAIN и симуляция с гипотетическими индексами.
- Интеллект схемы: генерация SQL с учётом структуры базы.
- Безопасное выполнение SQL: поддержка режима только для чтения и защита в продакшне.
Поддерживает транспорты: stdio и SSE.
Запуск проекта и причины его создания
📺 Демонстрация
От медленного к молниеносному AI сгенерировал приложение на SQLAlchemy ORM — но оно было слишком медленным. Postgres MCP Pro с Cursor решил проблему за считанные минуты.
- 🚀 Оптимизация ORM-запросов, индексации и кэширования
- 🛠️ Исправление сломанной страницы
- 🧠 Улучшение вывода "топ-фильмов" путём анализа данных и корректировки запросов
👉 Подробнее: movie-app.md
⚡ Быстрый старт
Требования:
- Доступ к вашей базе данных PostgreSQL
- Docker или Python 3.12+
Удостоверьтесь в доступе:
Пример — подключение через psql или pgAdmin
💡 Для запуска через
docker composeзаранее создайте пустые файлы хранилищ подключений (иначе Docker смонтирует каталоги вместо файлов):touch connections.json llm_connections.json
Установка
🐳 Docker
docker pull crystaldba/postgres-mcp
🐍 Python (через pipx)
pipx install postgres-mcp-pro
или через uv:
uv pip install postgres-mcp-pro
Консольная команда после установки —
postgres-mcp(автономный MCP-сервер, stdio по умолчанию;--transport sseдля SSE).
⚙️ Настройка AI-ассистента (на примере Claude Desktop)
Откройте конфигурационный файл:
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
Пример конфигурации:
Через Docker
{
"mcpServers": {
"postgres": {
"command": "docker",
"args": [
"run", "-i", "--rm", "-e", "DATABASE_URI",
"crystaldba/postgres-mcp", "--access-mode=unrestricted"
],
"env": {
"DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
}
}
}
}
Через pipx
{
"mcpServers": {
"postgres": {
"command": "postgres-mcp",
"args": ["--access-mode=unrestricted"],
"env": {
"DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
}
}
}
}
Через uv
{
"mcpServers": {
"postgres": {
"command": "uv",
"args": [
"run", "postgres-mcp", "--access-mode=unrestricted"
],
"env": {
"DATABASE_URI": "postgresql://username:password@localhost:5432/dbname"
}
}
}
}
Режимы доступа:
--access-mode=unrestricted: полный доступ (dev)--access-mode=restricted: только чтение (prod)
⚠️ Флаг
--access-modeподдерживает только легаси-сервер (python -m postgres_mcp.server). Автономный MCP-сервер (postgres_mcp.autonomous.mcp_server) всегда выполняет переданный SQL; разграничение делайте на стороне пользователя БД.
🔄 SSE 传输
如需使用 SSE:
docker run -p 8000:8000 \
-e DATABASE_URI=postgresql://username:password@localhost:5432/dbname \
crystaldba/postgres-mcp --access-mode=unrestricted --transport=sse
Cursor 示例:
{
"mcpServers": {
"postgres": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}
🧩 安装扩展(可选)
适用于:
pg_stat_statements——用于分析查询hypopg——用于模拟索引
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION IF NOT EXISTS hypopg;
🧪 使用示例
- 检查数据库:“检查我的数据库健康状况……”
- 慢查询:“哪些查询最慢……”
- 建议:“如何让它更快?”
- 索引:“建议一些索引以提升性能”
- 查询优化:“帮我优化此查询:SELECT ...”
📡 MCP API(接口)
独立服务(postgres_mcp.autonomous.mcp_server)提供 15 个 MCP 工具:
| 工具 | 用途 |
|---|---|
list_schemas | 数据库架构列表 |
list_objects | 表、视图等对象列表 |
get_object_details | 对象详情 |
execute_sql | 执行 SQL |
explain_query | 查询的 EXPLAIN 计划 |
analyze_db_health | 根据多项指标检查数据库健康状况 |
get_top_queries | 最慢的查询(pg_stat_statements) |
analyze_index_performance | 分析索引使用情况 |
get_active_queries | 正在执行的查询 |
get_table_sizes | 表/索引大小 |
get_database_locks | 当前锁 |
format_sql_query | 格式化 SQL(sqlparse) |
get_database_info | 版本、数据库大小、扩展、运行时间 |
manage_encryption_key | 管理 Fernet 证书 |
list_tools | 服务的所有工具列表 |
📌 与其他 MCP 服务的区别
| Postgres MCP Pro | 其他 MCP 服务 |
|---|---|
| ✅ 有保障的健康检查 | ❌ LLM 生成 |
| ✅ 通过算法优化索引 | ❌ 假设性建议 |
| ✅ EXPLAIN 模拟 | ❌“自己试试” |
| ✅ 详细的工作负载分析 | ❌ 不分析查询 |
🧠 为什么需要 MCP 工具?
LLM 擅长生成 SQL,但速度慢、成本高且结果不可预测。 数据库优化早已可以通过算法解决。 MCP Pro 结合了 LLM 和经典算法的优势。
🛠️ 技术说明(要点)
- 索引:使用
pg_stat_statements、生成候选项,并通过hypopg分析 - LLM 优化:实验性功能,使用 OpenAI API(
OPENAI_API_KEY) - 数据库健康状况:改编自 PgHero 的检查
- 连接库:使用
psycopg3和libpq - SQL 安全性:只读,防止执行
ROLLBACK; DROP ... - 架构集成:通过工具而非资源将架构传递给 Agent
- 连接配置:通过环境变量配置
- 开发构建:使用
uv、pip,并连接本地数据库运行
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。