mcp-postgres
mcp-postgres
MCP-сервер для PostgreSQL. Предоставляет ИИ-агентам возможности анализа схемы, выполнения запросов и инструменты администрирования (DBA) через Model Context Protocol.
В отличие от универсальных MCP-серверов для баз данных, mcp-postgres создан специально для Postgres. Он извлекает комментарии к таблицам/столбцам, понимает специфические для Postgres системные представления, предоставляет анализ индексов и поставляется с настраиваемыми уровнями доступа, чтобы вы не предоставляли LLM неограниченный доступ к базе данных.
Возможности
Анализ схемы
Список схем, таблиц и представлений с размерами и количеством строк
Полное описание таблиц: столбцы, типы, ограничения, индексы, внешние ключи
Извлечение метаданных
COMMENT ON— дает LLM семантический контекст о назначении столбцовПоиск объектов по имени или комментарию во всей базе данных
Выполнение запросов
Инструмент
queryтолько для чтения с автоматическим ограничением количества строкИнструмент
executeдля записи, ограниченный уровнем доступаEXPLAIN ANALYZEс удобным для чтения выводом
Инструменты DBA
Статистика таблиц: живые/мертвые кортежи, процент раздувания (bloat), история очистки (vacuum), шаблоны сканирования
Анализ индексов: статистика использования, обнаружение неиспользуемых индексов, рекомендации по отсутствующим индексам
Состояние базы данных: соединения, коэффициент попаданий в кэш, длительные запросы, пропускная способность
Безопасность
Четыре уровня доступа:
readonly,readwrite,admin,unrestrictedКлассификация SQL-операторов (SELECT, DML, DDL, admin) с принудительным контролем
Аудит-логирование в stderr (JSON, одна запись на запрос)
Быстрый старт
npx mcp-postgres --connection-string "postgres://user:pass@localhost:5432/mydb"Или с переменными окружения:
DATABASE_URL="postgres://user:pass@localhost:5432/mydb" npx mcp-postgresClaude Desktop
Добавьте в ваш claude_desktop_config.json:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"mcp-postgres",
"--connection-string",
"postgres://user:pass@localhost:5432/mydb"
]
}
}
}Claude Code
Добавьте в файл .mcp.json вашего проекта:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "mcp-postgres"],
"env": {
"DATABASE_URL": "postgres://user:pass@localhost:5432/mydb"
}
}
}
}Инструменты
Инструмент | Описание | Доступ |
| Список схем с количеством таблиц и их размерами | readonly |
| Список таблиц с комментариями, количеством строк и размерами | readonly |
| Полное описание таблицы со столбцами, индексами, FK и комментариями | readonly |
| Поиск объектов по имени или комментарию | readonly |
| Выполнение SELECT-запросов | readonly |
| Выполнение INSERT/UPDATE/DELETE/CREATE и т.д. | варьируется |
| EXPLAIN (ANALYZE) с читаемым выводом | readonly* |
| Статистика таблиц, раздувание, информация о vacuum | readonly |
| Использование индексов, неиспользуемые индексы, подсказки по отсутствующим индексам | readonly |
| Соединения, коэффициент кэша, длительные запросы, раздувание | readonly |
*explain_query с параметром analyze=true выполняет запрос, поэтому он учитывает уровень доступа для данного оператора.
Ресурсы
URI | Описание |
| Полный DDL для схемы (операторы CREATE TABLE с комментариями) |
| Установленные расширения PostgreSQL |
Промпты
Промпт | Описание |
| Управляемое исследование базы данных — схемы, таблицы, связи |
| Анализ медленного запроса с помощью EXPLAIN, индексов и рекомендаций |
| Комплексная оценка состояния базы данных |
Конфигурация
Опции CLI
--connection-string PostgreSQL connection URL
--access-level readonly|readwrite|admin|unrestricted (default: readonly)
--row-limit Max rows returned per query (default: 500)
--schema Default schema filter (default: public)
--audit Enable query audit logging to stderrПеременные окружения
Переменная | Описание |
| URL подключения к PostgreSQL |
| Альтернативный URL подключения |
| Переопределение уровня доступа |
| Переопределение лимита строк |
Уровни доступа
Уровень | SELECT | INSERT/UPDATE/DELETE | CREATE/ALTER/DROP | TRUNCATE/DROP DATABASE |
| да | нет | нет | нет |
| да | да | нет | нет |
| да | да | да | нет |
| да | да | да | да |
По умолчанию используется readonly. Используйте минимально необходимый уровень.
Аудит-логирование
Включите с помощью --audit. Логирует каждый вызов инструмента в stderr в формате JSON:
{"timestamp":"2026-04-03T12:00:00.000Z","tool":"query","sql":"SELECT * FROM users","statementType":"select","accessLevel":"readonly","allowed":true,"durationMs":12,"rowCount":42}Перенаправьте stderr в файл для сохранения: mcp-postgres --audit 2>audit.log
Архитектура
src/
├── index.ts Entry point and CLI
├── server.ts MCP server setup
├── config.ts Configuration parsing
├── db/
│ ├── pool.ts Connection pool management
│ └── query.ts Query execution with timing
├── tools/
│ ├── schema.ts Schema exploration tools
│ ├── query.ts Query execution tools
│ └── performance.ts DBA and health tools
├── resources/
│ └── schema.ts Schema DDL resources
├── prompts/
│ └── index.ts Prompt templates
└── safety/
├── classifier.ts SQL statement classification
├── access.ts Access level enforcement
└── audit.ts Audit loggingРазработка
npm install
npm test # run tests
npm run build # compile TypeScript
npm run dev -- --connection-string "postgres://..." # run in dev modeЛицензия
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/divinedev111/mcp-postgres'
If you have feedback or need assistance with the MCP directory API, please join our Discord server