mcpField
P
postgres-mcp

postgres-mcp

本地服务
github.com/sparta2025数据库010 周前更新

关于 postgres-mcp

postgres-mcp 是面向 PostgreSQL 开发与运维的 MCP 服务,提供数据库检查、SQL 执行、查询计划、健康检查和索引分析。它还包含带 LLM 聊天和工具调用的 Gradio 界面。

主要功能

  1. 01执行 SQL 并检查数据库对象
  2. 02解释查询并分析数据库健康状况
  3. 03查看慢查询和索引性能
  4. 04检查活动查询、锁和表大小
  5. 05带 LLM 聊天与工具调用的 Gradio 界面

适用场景

  1. 01调查慢查询和数据库工作负载
  2. 02检查数据库健康状况与活动锁
  3. 03评估索引使用情况和查询计划
  4. 04通过 MCP 客户端浏览架构并执行 SQL

MCP 相关

提供 15 个用于 PostgreSQL 架构、对象、SQL 执行、查询分析、健康检查和索引分析的工具,支持 stdio 与 SSE 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sparta2025-postgres": {
"command": "uvx",
"args": [
"postgres-mcp-pro"
],
"env": {
"DATABASE_URL": "<DATABASE_URL>"
}
}
}
}
启动命令uvx postgres-mcp-pro
需要配置的环境变量
DATABASE_URL密钥PostgreSQL connection URL, e.g. postgresql://user:pass@localhost:5432/dbname

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypipostgres-mcp-pro0.4.2

工具

15

收录的工具列表 · 更新于 2 周前

参数类型必填说明
database_urlany否

详细介绍

📘 Postgres MCP Pro — сервер MCP для PostgreSQL

Postgres MCP Pro Logo

Лицензия: MIT Версия PyPI Discord Twitter Follow Contributors


🔎 Обзор

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


⚡ Быстрый старт

Требования:
  1. Доступ к вашей базе данных PostgreSQL
  2. 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,并连接本地数据库运行

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。