Skip to main content
Glama

PostgreSQL Full Access MCP Server

by syahiidkamil

PostgreSQL Полный доступ MCP-сервер

Мощный сервер Model Context Protocol, предоставляющий полный доступ на чтение и запись к базам данных PostgreSQL. В отличие от официального сервера MCP PostgreSQL, доступного только для чтения, эта улучшенная реализация позволяет моделям больших языков (LLM) как запрашивать, так и изменять содержимое базы данных с надлежащим управлением транзакциями и контролем безопасности.

Оглавление

🌟 Особенности

Полный доступ для чтения и записи

  • Безопасное выполнение операций DML (INSERT, UPDATE, DELETE)
  • Создание, изменение и управление объектами базы данных с помощью DDL
  • Управление транзакциями с явным подтверждением
  • Защитные тайм-ауты и автоматическая защита от отката

Богатая информация о схеме

  • Подробные метаданные столбцов (типы данных, описания, максимальная длина, допустимость значений NULL)
  • Первичная идентификация ключа
  • Отношения внешнего ключа
  • Индексная информация с флагами типа и уникальности
  • Оценки количества строк таблицы
  • Описания таблиц и столбцов (если доступны)

Расширенные средства контроля безопасности

  • Классификация SQL-запросов (DQL, DML, DDL, DCL, TCL)
  • Принудительное выполнение только для чтения для безопасных запросов
  • Все операции выполняются в виде изолированных транзакций.
  • Автоматический мониторинг тайм-аута транзакции
  • Настраиваемые пределы безопасности
  • Двухэтапный процесс подтверждения транзакции с явным подтверждением пользователя

🔧 Инструменты

  • выполнить_запрос
    • Выполнение SQL-запросов только для чтения (операторы SELECT)
    • Ввод: sql (строка): SQL-запрос для выполнения.
    • Все запросы выполняются в рамках транзакции ТОЛЬКО ДЛЯ ЧТЕНИЯ
    • Результаты включают показатели времени выполнения и информацию о полях.
  • выполнить_dml_ddl_dcl_tcl
    • Выполнение операций по изменению данных (INSERT, UPDATE, DELETE) или изменений схемы (CREATE, ALTER, DROP)
    • Ввод: sql (строка): SQL-оператор для выполнения.
    • Автоматически упаковано в транзакцию с настраиваемым тайм-аутом
    • Возвращает идентификатор транзакции для явного подтверждения
    • Важная функция безопасности : диалог будет завершен после выполнения, что позволит пользователю просмотреть результаты, прежде чем принять решение о фиксации или откате.
  • выполнить_обслуживание
    • Выполнение команд обслуживания, таких как VACUUM, ANALYZE или CREATE DATABASE, вне транзакций
    • Ввод: sql (строка): SQL-оператор для выполнения — должен быть VACUUM, ANALYZE или CREATE DATABASE.
    • Возвращает объект результата с метриками времени выполнения.
  • выполнить_коммит
    • Явно зафиксировать транзакцию по ее идентификатору
    • Ввод: transaction_id (строка): идентификатор транзакции для фиксации
    • Безопасно выполняет очистку после фиксации или отката
    • Постоянно применяет изменения к базе данных
  • выполнить_откат
    • Явный откат транзакции по ее идентификатору
    • Ввод: transaction_id (строка): идентификатор транзакции для отката
    • Безопасно отменяет все изменения и очищает ресурсы.
    • Полезно при рассмотрении изменений и принятии решения не применять их.
  • список_таблиц
    • Получите полный список всех таблиц в базе данных
    • Включает количество столбцов и описания таблиц.
    • Входные параметры не требуются
  • описать_таблицу
    • Получите подробную информацию о конкретной структуре таблицы
    • Ввод: table_name (строка): Имя таблицы для описания.
    • Возвращает полную информацию о схеме, включая первичные ключи, внешние ключи, индексы и сведения о столбцах.

📊 Ресурсы

Сервер предоставляет расширенную информацию о схеме для таблиц базы данных:

  • Схемы таблиц ( postgres://<host>/<table>/schema )
    • Подробная информация о схеме JSON для каждой таблицы
    • Включает полные метаданные столбцов, первичные ключи и ограничения.
    • Автоматически обнаруживается из метаданных базы данных

🚀 Использование с Claude Desktop

Интеграция рабочего стола Клода

Чтобы использовать этот сервер с Claude Desktop, выполните следующие действия:

  1. Сначала убедитесь, что в вашей системе установлен Node.js.
  2. Установите пакет с помощью npx или добавьте его в свой проект
  3. Настройте Claude Desktop, отредактировав claude_desktop_config.json (обычно находится в ~/Library/Application Support/Claude/ на macOS):
{ "mcpServers": { "postgres-full": { "command": "npx", "args": [ "-y", "mcp-postgres-full-access", "postgresql://username:password@localhost:5432/database" ], "env": { "TRANSACTION_TIMEOUT_MS": "60000", "MAX_CONCURRENT_TRANSACTIONS": "5", "PG_STATEMENT_TIMEOUT_MS": "30000" } } } }
  1. Замените строку подключения к базе данных фактическими данными подключения к PostgreSQL.
  2. Полностью перезагрузите Claude Desktop.

Важно: используйте «Разрешить один раз» в целях безопасности

Когда Клод попытается внести изменения в вашу базу данных, Claude Desktop запросит у вас одобрение:

Разрешить один раз диалог

Всегда внимательно проверяйте изменения SQL перед их одобрением!

Лучшие практики обеспечения безопасности:

  • Всегда нажимайте «Разрешить один раз» (а не «Всегда разрешать») для операций фиксации.
  • Внимательно проверьте транзакцию SQL перед одобрением.
  • Рассмотрите возможность использования пользователя базы данных с ограниченными правами доступа.
  • При первой попытке использования этого сервера используйте, по возможности, тестовую базу данных.

Такой подход «Разрешить один раз» дает вам полный контроль над предотвращением нежелательных изменений в вашей базе данных, при этом позволяя Клоду помогать с задачами управления данными, когда это необходимо.

⚙️ Переменные среды

Вы можете настроить поведение сервера с помощью переменных среды в конфигурации Claude Desktop:

"env": { "TRANSACTION_TIMEOUT_MS": "60000", "MAX_CONCURRENT_TRANSACTIONS": "5" }

Ключевые переменные среды:

  • TRANSACTION_TIMEOUT_MS : Время ожидания транзакции в миллисекундах (по умолчанию: 15000)
    • Увеличьте это значение, если вашим транзакциям требуется больше времени.
    • Транзакции, превышающие это время, будут автоматически откатываться в целях безопасности.
  • MAX_CONCURRENT_TRANSACTIONS : Максимальное количество одновременных транзакций (по умолчанию: 10)
    • Уменьшите это число для более консервативной эксплуатации.
    • Более высокие значения допускают больше одновременных операций записи.
  • ENABLE_TRANSACTION_MONITOR : включить/отключить монитор транзакций («true» или «false», по умолчанию: «true»)
    • Отслеживает и автоматически откатывает заброшенные транзакции
    • Редко требует отключения
  • PG_STATEMENT_TIMEOUT_MS : Время ожидания выполнения SQL-запроса в мс (по умолчанию: 30000)
    • Ограничивает продолжительность выполнения любого отдельного оператора SQL
    • Важная функция безопасности для предотвращения неконтролируемых запросов
  • PG_MAX_CONNECTIONS : Максимальное количество подключений PostgreSQL (по умолчанию: 20)
    • Важно соблюдать ограничения на количество подключений к вашей базе данных.
  • MONITOR_INTERVAL_MS : Как часто проверять наличие зависших транзакций (по умолчанию: 5000)
    • Обычно не требует регулировки.

🔄 Использование полного доступа к базе данных с Клодом

Этот сервер позволяет Клоду как читать, так и писать в вашу базу данных PostgreSQL с вашего одобрения. Вот несколько примеров потоков разговоров:

Пример: создание новой таблицы и добавление данных

Вы: «Мне нужна новая таблица продуктов со столбцами для идентификатора, названия, цены и инвентаря»

Клод: Анализирует вашу базу данных и создает запрос

CREATE TABLE products ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, price DECIMAL(10,2) NOT NULL, inventory INTEGER DEFAULT 0 );

Claude Desktop предложит вам одобрить эту операцию.

Вы: Просмотрите и нажмите «Разрешить один раз»

Клод: «Я создал таблицу продуктов. Хотите, чтобы я добавил примеры данных?»

Вы: «Да, пожалуйста, добавьте 5 образцов продукции»

Клод: Создает операторы INSERT и запрашивает одобрение. Вы просматриваете и одобряете, нажав «Разрешить один раз».

Пример: Анализ данных с помощью безопасных запросов

Вы: «Какие у меня три лучших товара по цене?»

Клод: Автоматически выполняет запрос только для чтения. Показывает результаты.

Безопасность рабочего процесса

Ключевой функцией безопасности является двухэтапный подход к любой операции, изменяющей вашу базу данных:

  1. Клод анализирует ваш запрос и готовит SQL
  2. Для операций только для чтения (SELECT) Клод выполняет автоматически
  3. Для операций записи (INSERT, UPDATE, DELETE, CREATE и т. д.):
    • Клод выполняет SQL в транзакции и завершает разговор.
    • Вы просматриваете результаты
    • В новом разговоре вы отвечаете «Да», чтобы подтвердить или «Нет», чтобы откатить.
    • Claude Desktop показывает вам, что именно будет изменено, и запрашивает разрешение
    • Вы нажимаете «Разрешить один раз», чтобы разрешить определенную операцию.
    • Клод выполняет операцию и возвращает результаты.

Это дает вам множество возможностей для проверки изменений, прежде чем они будут окончательно применены к базе данных.

⚠️ Вопросы безопасности

При подключении Клода к вашей базе данных с правом записи:

Разрешения пользователя базы данных

ВАЖНО: Создайте отдельного пользователя базы данных с соответствующими разрешениями:

-- Example of creating a restricted user (adjust as needed) CREATE USER claude_user WITH PASSWORD 'secure_password'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO claude_user; GRANT INSERT, UPDATE, DELETE ON TABLE table1, table2 TO claude_user; -- Only grant specific permissions as needed

Лучшие практики для безопасного использования

  1. Всегда используйте «Разрешить один раз» для проверки каждой операции записи.
    • Никогда не выбирайте «Всегда разрешать» для изменений базы данных
    • Уделите время внимательному изучению SQL.
  2. Подключитесь к тестовой базе данных при первом изучении этого инструмента
    • Рассмотрите возможность использования копии/резервной копии базы данных для первоначального тестирования.
  3. Ограничьте разрешения пользователей базы данных только необходимыми
    • Избегайте использования учетной записи суперпользователя или администратора.
    • По возможности предоставляйте разрешения для конкретных таблиц.
  4. Перед интенсивным использованием выполняйте резервное копирование баз данных.
  5. Никогда не передавайте конфиденциальные данные , которые не должны быть доступны LLM
  6. Проверьте все операции SQL перед их одобрением.
    • Проверьте имена таблиц
    • Проверьте имена столбцов и данные
    • Подтвердите, что условия WHERE являются уместными
    • Ищите надлежащую обработку транзакций

Докер

Сервер можно легко запустить в контейнере Docker:

# Build the Docker image docker build -t mcp-postgres-full-access . # Run the container docker run -i --rm mcp-postgres-full-access "postgresql://username:password@host:5432/database"

Для Docker на macOS используйте host.docker.internal для подключения к сети хоста:

docker run -i --rm mcp-postgres-full-access "postgresql://username:password@host.docker.internal:5432/database"

📄 Лицензия

Этот сервер MCP лицензирован в соответствии с лицензией MIT.

💡 Сравнение с официальным сервером PostgreSQL MCP

ОсобенностьЭтот серверОфициальный сервер MCP PostgreSQL
Доступ для чтения
Доступ для записи
Подробности схемыУлучшенныйБазовый
Поддержка транзакцийЯвный с тайм-аутамиТолько для чтения
Индекс информации
Подробности внешнего ключа
Оценки количества строк
Описания таблиц

Автор

Создано Сяхидом Нуром Камилом ( @syahiidkamil )


Авторские права © 2024 Syahiid Nur Kamil. Все права защищены.

-
security - not tested
F
license - not found
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Сервер Model Context Protocol, который предоставляет LLM полный доступ на чтение и запись к базам данных PostgreSQL, позволяя как запрашивать, так и изменять содержимое базы данных с управлением транзакциями и контролем безопасности.

  1. Оглавление
    1. 🌟 Особенности
      1. Полный доступ для чтения и записи
      2. Богатая информация о схеме
      3. Расширенные средства контроля безопасности
    2. 🔧 Инструменты
      1. 📊 Ресурсы
        1. 🚀 Использование с Claude Desktop
          1. Интеграция рабочего стола Клода
          2. Важно: используйте «Разрешить один раз» в целях безопасности
        2. ⚙️ Переменные среды
          1. 🔄 Использование полного доступа к базе данных с Клодом
            1. Пример: создание новой таблицы и добавление данных
            2. Пример: Анализ данных с помощью безопасных запросов
            3. Безопасность рабочего процесса
          2. ⚠️ Вопросы безопасности
            1. Разрешения пользователя базы данных
            2. Лучшие практики для безопасного использования
            3. Докер
          3. 📄 Лицензия
            1. 💡 Сравнение с официальным сервером PostgreSQL MCP
              1. Автор

                Related MCP Servers

                • -
                  security
                  A
                  license
                  -
                  quality
                  A Model Context Protocol server providing LLMs read-only access to PostgreSQL databases for inspecting schemas and executing queries.
                  Last updated -
                  16,948
                  17
                  JavaScript
                  MIT License
                  • Apple
                • -
                  security
                  A
                  license
                  -
                  quality
                  A Model Context Protocol server that provides read-only access to PostgreSQL databases with enhanced multi-schema support, allowing LLMs to inspect database schemas across multiple namespaces and execute read-only queries while maintaining schema isolation.
                  Last updated -
                  13
                  2
                  JavaScript
                  MIT License
                • -
                  security
                  F
                  license
                  -
                  quality
                  A Model Context Protocol server providing both read and write access to PostgreSQL databases, enabling LLMs to query data, modify records, and manage database schemas.
                  Last updated -
                  4
                  JavaScript
                • -
                  security
                  F
                  license
                  -
                  quality
                  A Model Context Protocol server that enables performing PostgreSQL database operations (create, read, update, delete) on User and Post entities through MCP tools.
                  Last updated -
                  TypeScript

                View all related MCP servers

                MCP directory API

                We provide all the information about MCP servers via our MCP API.

                curl -X GET 'https://glama.ai/api/mcp/v1/servers/syahiidkamil/mcp-postgres-full-access'

                If you have feedback or need assistance with the MCP directory API, please join our Discord server