Skip to main content
Glama

PostgreSQL Full Access MCP Server

by syahiidkamil

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

Модель контекстного протокола Лицензия Массачусетского технологического института

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

Оглавление

Related MCP server: PostgreSQL MCP Server

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

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

  • Безопасное выполнение операций 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

Latest Blog Posts

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