Skip to main content
Glama
seayniclabs

Berth

by seayniclabs

Berth -- Servidor MCP de base de datos

License: MIT

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

SELECT, EXPLAIN

Todas las escrituras

escritura

No

INSERT, UPDATE, DELETE, CREATE

DROP, TRUNCATE, ALTER DROP, DELETE sin WHERE

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

health

Comprobación del estado del servidor

--

db_connect

Conectarse a una base de datos

dsn (cadena de conexión)

db_query

Ejecutar una consulta SELECT (añade automáticamente LIMIT 1000)

connection_id, sql

db_execute

Ejecutar INSERT/UPDATE/DELETE (respeta el modo de seguridad)

connection_id, sql, confirmation_token

db_schema

Listar tablas, vistas e índices

connection_id

db_describe

Detalles de columna para una tabla

connection_id, table

db_relationships

Relaciones de clave foránea

connection_id, table (opcional)

db_size

Tamaños de base de datos y tablas

connection_id

db_active_queries

Consultas en ejecución actualmente (solo PostgreSQL)

connection_id

db_explain

Ejecutar EXPLAIN ANALYZE en una consulta

connection_id, sql

generate_migration

Generar SQL de migración comparando esquemas

connection_id + target_sql, o from_connection + to_connection

db_backup

Crear una copia de seguridad de la base de datos

connection_id, output_path

db_restore

Restaurar desde copia de seguridad (modo administrador + token de confirmación)

connection_id, input_path, confirmation_token


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 TABLE para tablas nuevas

  • ALTER TABLE ADD COLUMN para columnas nuevas

  • ALTER TABLE ALTER COLUMN / MODIFY COLUMN para cambios de tipo, nulabilidad y valor predeterminado

  • CREATE INDEX / DROP INDEX para cambios de índice

  • ADD CONSTRAINT / DROP CONSTRAINT para cambios de clave foránea

  • DROP TABLE y DROP COLUMN se comentan con advertencias (la seguridad es lo primero)

Manejo de dialectos:

  • PostgreSQL -- utiliza ALTER COLUMN ... TYPE, SET/DROP NOT NULL, SET/DROP DEFAULT

  • MySQL -- utiliza MODIFY COLUMN para todos los cambios de columna, DROP INDEX ... ON table

  • SQLite -- 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ón pg_dump/psql

  • SQLite -- soporte completo, incluyendo introspección PRAGMA, .backup/.restore a través de la CLI sqlite3

  • MySQL -- soporte completo, incluyendo introspección information_schema, copia de seguridad/restauración mysqldump/mysql


Instalación

Desde PyPI:

pip install berth-mcp

O en un entorno aislado:

pipx install berth-mcp

El 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:

berth

Berth 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 -- berth

Claude 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

BERTH_BACKUP_DIR

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_master antes de su uso en sentencias PRAGMA; se utilizan consultas parametrizadas en todo momento

  • Protecció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 nulos

  • Enmascaramiento 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/ -q

Las 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 down

Licencia

MIT

-
security - not tested
A
license - permissive license
-
quality - not tested

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