PostgreSQL Полный доступ MCP-сервер
Мощный сервер Model Context Protocol, предоставляющий полный доступ на чтение и запись к базам данных PostgreSQL. В отличие от официального сервера MCP PostgreSQL, доступного только для чтения, эта улучшенная реализация позволяет моделям больших языков (LLM) как запрашивать, так и изменять содержимое базы данных с надлежащим управлением транзакциями и контролем безопасности.
Оглавление
- Функции
- Инструменты
- Ресурсы
- Использование с Claude Desktop
- Переменные среды
- Использование полного доступа к базе данных с помощью Клода
- Соображения безопасности
- Докер
- Лицензия
- Сравнение с официальным сервером PostgreSQL MCP
🌟 Особенности
Полный доступ для чтения и записи
- Безопасное выполнение операций 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, выполните следующие действия:
- Сначала убедитесь, что в вашей системе установлен Node.js.
- Установите пакет с помощью npx или добавьте его в свой проект
- Настройте Claude Desktop, отредактировав
claude_desktop_config.json
(обычно находится в~/Library/Application Support/Claude/
на macOS):
- Замените строку подключения к базе данных фактическими данными подключения к PostgreSQL.
- Полностью перезагрузите Claude Desktop.
Важно: используйте «Разрешить один раз» в целях безопасности
Когда Клод попытается внести изменения в вашу базу данных, Claude Desktop запросит у вас одобрение:
Всегда внимательно проверяйте изменения SQL перед их одобрением!
Лучшие практики обеспечения безопасности:
- Всегда нажимайте «Разрешить один раз» (а не «Всегда разрешать») для операций фиксации.
- Внимательно проверьте транзакцию SQL перед одобрением.
- Рассмотрите возможность использования пользователя базы данных с ограниченными правами доступа.
- При первой попытке использования этого сервера используйте, по возможности, тестовую базу данных.
Такой подход «Разрешить один раз» дает вам полный контроль над предотвращением нежелательных изменений в вашей базе данных, при этом позволяя Клоду помогать с задачами управления данными, когда это необходимо.
⚙️ Переменные среды
Вы можете настроить поведение сервера с помощью переменных среды в конфигурации Claude Desktop:
Ключевые переменные среды:
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 с вашего одобрения. Вот несколько примеров потоков разговоров:
Пример: создание новой таблицы и добавление данных
Вы: «Мне нужна новая таблица продуктов со столбцами для идентификатора, названия, цены и инвентаря»
Клод: Анализирует вашу базу данных и создает запрос
Claude Desktop предложит вам одобрить эту операцию.
Вы: Просмотрите и нажмите «Разрешить один раз»
Клод: «Я создал таблицу продуктов. Хотите, чтобы я добавил примеры данных?»
Вы: «Да, пожалуйста, добавьте 5 образцов продукции»
Клод: Создает операторы INSERT и запрашивает одобрение. Вы просматриваете и одобряете, нажав «Разрешить один раз».
Пример: Анализ данных с помощью безопасных запросов
Вы: «Какие у меня три лучших товара по цене?»
Клод: Автоматически выполняет запрос только для чтения. Показывает результаты.
Безопасность рабочего процесса
Ключевой функцией безопасности является двухэтапный подход к любой операции, изменяющей вашу базу данных:
- Клод анализирует ваш запрос и готовит SQL
- Для операций только для чтения (SELECT) Клод выполняет автоматически
- Для операций записи (INSERT, UPDATE, DELETE, CREATE и т. д.):
- Клод выполняет SQL в транзакции и завершает разговор.
- Вы просматриваете результаты
- В новом разговоре вы отвечаете «Да», чтобы подтвердить или «Нет», чтобы откатить.
- Claude Desktop показывает вам, что именно будет изменено, и запрашивает разрешение
- Вы нажимаете «Разрешить один раз», чтобы разрешить определенную операцию.
- Клод выполняет операцию и возвращает результаты.
Это дает вам множество возможностей для проверки изменений, прежде чем они будут окончательно применены к базе данных.
⚠️ Вопросы безопасности
При подключении Клода к вашей базе данных с правом записи:
Разрешения пользователя базы данных
ВАЖНО: Создайте отдельного пользователя базы данных с соответствующими разрешениями:
Лучшие практики для безопасного использования
- Всегда используйте «Разрешить один раз» для проверки каждой операции записи.
- Никогда не выбирайте «Всегда разрешать» для изменений базы данных
- Уделите время внимательному изучению SQL.
- Подключитесь к тестовой базе данных при первом изучении этого инструмента
- Рассмотрите возможность использования копии/резервной копии базы данных для первоначального тестирования.
- Ограничьте разрешения пользователей базы данных только необходимыми
- Избегайте использования учетной записи суперпользователя или администратора.
- По возможности предоставляйте разрешения для конкретных таблиц.
- Перед интенсивным использованием выполняйте резервное копирование баз данных.
- Никогда не передавайте конфиденциальные данные , которые не должны быть доступны LLM
- Проверьте все операции SQL перед их одобрением.
- Проверьте имена таблиц
- Проверьте имена столбцов и данные
- Подтвердите, что условия WHERE являются уместными
- Ищите надлежащую обработку транзакций
Докер
Сервер можно легко запустить в контейнере Docker:
Для Docker на macOS используйте host.docker.internal для подключения к сети хоста:
📄 Лицензия
Этот сервер MCP лицензирован в соответствии с лицензией MIT.
💡 Сравнение с официальным сервером PostgreSQL MCP
Особенность | Этот сервер | Официальный сервер MCP PostgreSQL |
---|---|---|
Доступ для чтения | ✅ | ✅ |
Доступ для записи | ✅ | ❌ |
Подробности схемы | Улучшенный | Базовый |
Поддержка транзакций | Явный с тайм-аутами | Только для чтения |
Индекс информации | ✅ | ❌ |
Подробности внешнего ключа | ✅ | ❌ |
Оценки количества строк | ✅ | ❌ |
Описания таблиц | ✅ | ❌ |
Автор
Создано Сяхидом Нуром Камилом ( @syahiidkamil )
Авторские права © 2024 Syahiid Nur Kamil. Все права защищены.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Сервер Model Context Protocol, который предоставляет LLM полный доступ на чтение и запись к базам данных PostgreSQL, позволяя как запрашивать, так и изменять содержимое базы данных с управлением транзакциями и контролем безопасности.
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server providing LLMs read-only access to PostgreSQL databases for inspecting schemas and executing queries.Last updated -16,94817JavaScriptMIT License
- -securityAlicense-qualityA 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 -132JavaScriptMIT License
- -securityFlicense-qualityA 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 -4JavaScript
- -securityFlicense-qualityA 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