Berth
Berth -- Servidor MCP de base de datos
Un amarre seguro para sus datos: acceso a bases de datos para herramientas de IA.
Berth es un servidor del Protocolo de Contexto de Modelo (MCP) que proporciona a los asistentes de IA un acceso seguro y estructurado a bases de datos PostgreSQL, SQLite y MySQL. Expone 13 herramientas para inspeccionar esquemas, ejecutar consultas, gestionar datos, generar migraciones y realizar copias de seguridad, todo ello regido por un modelo de seguridad de 3 niveles que evita daños accidentales.
Modelo de seguridad
Berth aplica tres modos de funcionamiento que controlan qué SQL está permitido:
Modo | Predeterminado | Permite | Bloquea |
solo lectura | Sí |
| Todas las escrituras |
escritura | No |
|
|
administrador | No | Todo | Las operaciones destructivas requieren un token de confirmación (caducidad de 60 s) |
El servidor se inicia en modo de solo lectura. Los modos de escritura y administrador deben habilitarse explícitamente. Las operaciones destructivas en modo administrador generan un token de confirmación de un solo uso que caduca después de 60 segundos; la IA debe repetir el token para confirmar la intención.
Herramientas
Herramienta | Descripción | Parámetros clave |
| Comprobación del estado del servidor | -- |
| Conectarse a una base de datos |
|
| Ejecutar una consulta SELECT (añade automáticamente LIMIT 1000) |
|
| Ejecutar INSERT/UPDATE/DELETE (respeta el modo de seguridad) |
|
| Listar tablas, vistas e índices |
|
| Detalles de columna para una tabla |
|
| Relaciones de clave foránea |
|
| Tamaños de base de datos y tablas |
|
| Consultas en ejecución actualmente (solo PostgreSQL) |
|
| Ejecutar EXPLAIN ANALYZE en una consulta |
|
| Generar SQL de migración comparando esquemas |
|
| Crear una copia de seguridad de la base de datos |
|
| Restaurar desde copia de seguridad (modo administrador + token de confirmación) |
|
Migraciones de esquema
La herramienta generate_migration compara dos esquemas y produce SQL compatible con el dialecto para migrar de uno a otro. Dos modos de funcionamiento:
Modo 1 — Base de datos activa frente a DDL de destino:
Proporcione connection_id (una conexión activa) y target_sql (sentencias CREATE TABLE que describen el esquema deseado). Berth realiza una introspección de la base de datos activa y la compara con el destino analizado.
Modo 2 — Dos bases de datos activas:
Proporcione from_connection y to_connection (dos ID de conexión activos). Berth realiza una introspección de ambos y genera la migración para transformar la fuente en el destino.
Lo que genera:
CREATE TABLEpara tablas nuevasALTER TABLE ADD COLUMNpara columnas nuevasALTER TABLE ALTER COLUMN/MODIFY COLUMNpara cambios de tipo, nulabilidad y valor predeterminadoCREATE INDEX/DROP INDEXpara cambios de índiceADD CONSTRAINT/DROP CONSTRAINTpara cambios de clave foráneaDROP TABLEyDROP COLUMNse comentan con advertencias (la seguridad es lo primero)
Manejo de dialectos:
PostgreSQL -- utiliza
ALTER COLUMN ... TYPE,SET/DROP NOT NULL,SET/DROP DEFAULTMySQL -- utiliza
MODIFY COLUMNpara todos los cambios de columna,DROP INDEX ... ON tableSQLite -- advierte sobre operaciones no admitidas e incluye el patrón de reconstrucción de tabla para los cambios que lo requieren (ALTER COLUMN, DROP COLUMN en versiones anteriores, cambios de restricción)
Bases de datos compatibles
PostgreSQL -- soporte completo, incluyendo
pg_stat_activity,EXPLAIN ANALYZE, copia de seguridad/restauraciónpg_dump/psqlSQLite -- soporte completo, incluyendo introspección PRAGMA,
.backup/.restorea través de la CLIsqlite3MySQL -- soporte completo, incluyendo introspección
information_schema, copia de seguridad/restauraciónmysqldump/mysql
Instalación
Desde PyPI:
pip install berth-mcpO en un entorno aislado:
pipx install berth-mcpEl soporte para MySQL requiere una dependencia opcional:
pip install berth-mcp[mysql]Los controladores de PostgreSQL (asyncpg) y SQLite (aiosqlite) se incluyen de forma predeterminada.
Uso
Ejecute el servidor:
berthBerth se comunica a través de stdio utilizando el protocolo MCP. Está diseñado para ser iniciado por un cliente MCP, no para ejecutarse de forma independiente.
Claude Code
claude mcp add berth -- berthClaude Desktop
Añada a su claude_desktop_config.json:
{
"mcpServers": {
"berth": {
"command": "berth",
"args": []
}
}
}Si está instalado en un entorno virtual, utilice la ruta completa:
{
"mcpServers": {
"berth": {
"command": "/path/to/venv/bin/berth",
"args": []
}
}
}Variables de entorno
Variable | Predeterminado | Descripción |
| Directorio de trabajo actual | Directorio sandbox para rutas de copia de seguridad y restauración. Todas las rutas se validan para permanecer dentro de este directorio. |
Seguridad
Modelo de seguridad de 3 niveles -- solo lectura de forma predeterminada, las escrituras requieren una aceptación explícita, las operaciones destructivas requieren tokens de confirmación
Tokens de confirmación -- UUID de un solo uso con caducidad de 60 segundos para DROP, TRUNCATE, ALTER DROP y DELETE de tabla completa
Protección contra inyección SQL -- nombres de tabla validados contra
sqlite_masterantes de su uso en sentencias PRAGMA; se utilizan consultas parametrizadas en todo momentoProtección contra recorrido de rutas -- las rutas de copia de seguridad/restauración se resuelven y validan para permanecer dentro de
BERTH_BACKUP_DIR; se rechazan los bytes nulosEnmascaramiento de contraseñas -- las contraseñas DSN se enmascaran en toda la salida de pantalla y los mensajes de error
Desarrollo
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/ -qLas pruebas de integración para PostgreSQL y MySQL requieren Docker:
docker compose -f tests/docker-compose.test.yml up -d
python -m pytest tests/ -q
docker compose -f tests/docker-compose.test.yml downLicencia
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