Berth
Berth -- MCP-сервер для баз данных
Безопасная гавань для ваших данных — доступ к базам данных для ИИ-инструментов.
Berth — это сервер Model Context Protocol, который предоставляет ИИ-ассистентам безопасный и структурированный доступ к базам данных PostgreSQL, SQLite и MySQL. Он предоставляет 13 инструментов для проверки схем, выполнения запросов, управления данными, генерации миграций и выполнения резервного копирования — всё это регулируется трехуровневой моделью безопасности, предотвращающей случайное повреждение данных.
Модель безопасности
Berth поддерживает три режима работы, которые контролируют допустимость SQL-команд:
Режим | По умолчанию | Разрешает | Блокирует |
read-only | Да |
| Все операции записи |
write | Нет |
|
|
admin | Нет | Всё | Деструктивные операции требуют токен подтверждения (срок действия 60 с) |
Сервер запускается в режиме read-only. Режимы записи и администратора должны быть явно включены. Деструктивные операции в режиме администратора генерируют одноразовый токен подтверждения, который истекает через 60 секунд — ИИ должен повторить токен, чтобы подтвердить намерение.
Инструменты
Инструмент | Описание | Ключевые параметры |
| Проверка работоспособности сервера | -- |
| Подключение к базе данных |
|
| Выполнение SELECT-запроса (автоматически добавляет LIMIT 1000) |
|
| Выполнение INSERT/UPDATE/DELETE (соблюдает режим безопасности) |
|
| Список таблиц, представлений и индексов |
|
| Детали столбцов таблицы |
|
| Связи внешних ключей |
|
| Размеры базы данных и таблиц |
|
| Текущие выполняемые запросы (только PostgreSQL) |
|
| Запуск EXPLAIN ANALYZE для запроса |
|
| Генерация SQL-миграции путем сравнения схем |
|
| Создание резервной копии базы данных |
|
| Восстановление из резервной копии (режим admin + токен подтверждения) |
|
Миграции схем
Инструмент generate_migration сравнивает две схемы и создает SQL-код, учитывающий диалект, для миграции от одной к другой. Доступны два режима работы:
Режим 1 — Живая база данных против целевого DDL:
Укажите connection_id (активное подключение) и target_sql (инструкции CREATE TABLE, описывающие желаемую схему). Berth анализирует живую базу данных и сравнивает её с разобранным целевым кодом.
Режим 2 — Две живые базы данных:
Укажите from_connection и to_connection (два активных ID подключения). Berth анализирует обе базы и генерирует миграцию для преобразования источника в целевую схему.
Что генерируется:
CREATE TABLEдля новых таблицALTER TABLE ADD COLUMNдля новых столбцовALTER TABLE ALTER COLUMN/MODIFY COLUMNдля изменений типа, возможности хранения NULL и значений по умолчаниюCREATE INDEX/DROP INDEXдля изменений индексовADD CONSTRAINT/DROP CONSTRAINTдля изменений внешних ключейDROP TABLEиDROP COLUMNкомментируются с предупреждениями (безопасность прежде всего)
Обработка диалектов:
PostgreSQL -- использует
ALTER COLUMN ... TYPE,SET/DROP NOT NULL,SET/DROP DEFAULTMySQL -- использует
MODIFY COLUMNдля всех изменений столбцов,DROP INDEX ... ON tableSQLite -- предупреждает о неподдерживаемых операциях и включает шаблон перестройки таблицы для изменений, требующих этого (ALTER COLUMN, DROP COLUMN в старых версиях, изменения ограничений)
Поддерживаемые базы данных
PostgreSQL -- полная поддержка, включая
pg_stat_activity,EXPLAIN ANALYZE, резервное копирование/восстановление черезpg_dump/psqlSQLite -- полная поддержка, включая интроспекцию PRAGMA,
.backup/.restoreчерез CLIsqlite3MySQL -- полная поддержка, включая интроспекцию
information_schema, резервное копирование/восстановление черезmysqldump/mysql
Установка
Из PyPI:
pip install berth-mcpИли в изолированной среде:
pipx install berth-mcpПоддержка MySQL требует дополнительной зависимости:
pip install berth-mcp[mysql]Драйверы PostgreSQL (asyncpg) и SQLite (aiosqlite) включены по умолчанию.
Использование
Запуск сервера:
berthBerth общается через stdio с использованием протокола MCP. Он предназначен для запуска клиентом MCP, а не для автономной работы.
Claude Code
claude mcp add berth -- berthClaude Desktop
Добавьте в ваш claude_desktop_config.json:
{
"mcpServers": {
"berth": {
"command": "berth",
"args": []
}
}
}Если установлено в виртуальной среде, используйте полный путь:
{
"mcpServers": {
"berth": {
"command": "/path/to/venv/bin/berth",
"args": []
}
}
}Переменные окружения
Переменная | По умолчанию | Описание |
| Текущая рабочая директория | Директория-песочница для путей резервного копирования и восстановления. Все пути проверяются на нахождение внутри этой директории. |
Безопасность
Трехуровневая модель безопасности -- по умолчанию только чтение, запись требует явного подтверждения, деструктивные операции требуют токенов подтверждения
Токены подтверждения -- одноразовые UUID со сроком действия 60 секунд для DROP, TRUNCATE, ALTER DROP и удаления всей таблицы (DELETE)
Защита от SQL-инъекций -- имена таблиц проверяются по
sqlite_masterперед использованием в операторах PRAGMA; везде используются параметризованные запросыЗащита от обхода путей (path traversal) -- пути резервного копирования/восстановления разрешаются и проверяются на нахождение внутри
BERTH_BACKUP_DIR; нулевые байты отклоняютсяМаскирование паролей -- пароли DSN маскируются во всех выходных данных и сообщениях об ошибках
Разработка
git clone https://github.com/seayniclabs/berth.git
cd berth
python -m venv .venv && source .venv/bin/activate
pip install -e ".[test]"
python -m pytest tests/ -qИнтеграционные тесты для PostgreSQL и MySQL требуют Docker:
docker compose -f tests/docker-compose.test.yml up -d
python -m pytest tests/ -q
docker compose -f tests/docker-compose.test.yml downЛицензия
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/seayniclabs/berth'
If you have feedback or need assistance with the MCP directory API, please join our Discord server