Berth
Berth -- Datenbank-MCP-Server
Ein sicherer Liegeplatz für Ihre Daten -- Datenbankzugriff für KI-Tools.
Berth ist ein Model Context Protocol-Server, der KI-Assistenten einen sicheren, strukturierten Zugriff auf PostgreSQL-, SQLite- und MySQL-Datenbanken ermöglicht. Er stellt 13 Tools zur Verfügung, um Schemata zu untersuchen, Abfragen auszuführen, Daten zu verwalten, Migrationen zu generieren und Backups durchzuführen – alles gesteuert durch ein 3-stufiges Sicherheitsmodell, das versehentliche Schäden verhindert.
Sicherheitsmodell
Berth erzwingt drei Betriebsmodi, die steuern, welches SQL zulässig ist:
Modus | Standard | Erlaubt | Blockiert |
read-only | Ja |
| Alle Schreibvorgänge |
write | Nein |
|
|
admin | Nein | Alles | Destruktive Operationen erfordern ein Bestätigungs-Token (60s Gültigkeit) |
Der Server startet im read-only-Modus. Schreib- und Admin-Modi müssen explizit aktiviert werden. Destruktive Operationen im Admin-Modus generieren ein einmaliges Bestätigungs-Token, das nach 60 Sekunden abläuft – die KI muss das Token zurückgeben, um die Absicht zu bestätigen.
Tools
Tool | Beschreibung | Wichtige Parameter |
| Server-Gesundheitsprüfung | -- |
| Verbindung zu einer Datenbank herstellen |
|
| Führt eine SELECT-Abfrage aus (fügt automatisch LIMIT 1000 hinzu) |
|
| Führt INSERT/UPDATE/DELETE aus (beachtet Sicherheitsmodus) |
|
| Listet Tabellen, Views und Indizes auf |
|
| Spaltendetails für eine Tabelle |
|
| Fremdschlüsselbeziehungen |
|
| Datenbank- und Tabellengrößen |
|
| Derzeit laufende Abfragen (nur PostgreSQL) |
|
| Führt EXPLAIN ANALYZE für eine Abfrage aus |
|
| Generiert Migrations-SQL durch Vergleich von Schemata |
|
| Erstellt ein Datenbank-Backup |
|
| Wiederherstellung aus Backup (Admin-Modus + Bestätigungs-Token) |
|
Schema-Migrationen
Das Tool generate_migration vergleicht zwei Schemata und erstellt dialektspezifisches SQL, um von einem zum anderen zu migrieren. Es gibt zwei Betriebsmodi:
Modus 1 — Live-Datenbank vs. Ziel-DDL:
Geben Sie connection_id (eine aktive Verbindung) und target_sql (CREATE TABLE-Anweisungen, die das gewünschte Schema beschreiben) an. Berth untersucht die Live-Datenbank und vergleicht sie mit dem geparsten Ziel.
Modus 2 — Zwei Live-Datenbanken:
Geben Sie from_connection und to_connection (zwei aktive Verbindungs-IDs) an. Berth untersucht beide und generiert die Migration, um die Quelle in das Ziel umzuwandeln.
Was generiert wird:
CREATE TABLEfür neue TabellenALTER TABLE ADD COLUMNfür neue SpaltenALTER TABLE ALTER COLUMN/MODIFY COLUMNfür Änderungen an Typ, Nullability und StandardwertenCREATE INDEX/DROP INDEXfür IndexänderungenADD CONSTRAINT/DROP CONSTRAINTfür FremdschlüsseländerungenDROP TABLEundDROP COLUMNwerden mit Warnungen auskommentiert (Sicherheit geht vor)
Dialekt-Handhabung:
PostgreSQL -- verwendet
ALTER COLUMN ... TYPE,SET/DROP NOT NULL,SET/DROP DEFAULTMySQL -- verwendet
MODIFY COLUMNfür alle Spaltenänderungen,DROP INDEX ... ON tableSQLite -- warnt vor nicht unterstützten Operationen und enthält das Tabellen-Neuerstellungsmuster für Änderungen, die dies erfordern (ALTER COLUMN, DROP COLUMN in älteren Versionen, Constraint-Änderungen)
Unterstützte Datenbanken
PostgreSQL -- volle Unterstützung einschließlich
pg_stat_activity,EXPLAIN ANALYZE,pg_dump/psqlBackup/WiederherstellungSQLite -- volle Unterstützung einschließlich PRAGMA-Introspektion,
.backup/.restoreviasqlite3CLIMySQL -- volle Unterstützung einschließlich
information_schema-Introspektion,mysqldump/mysqlBackup/Wiederherstellung
Installation
Von PyPI:
pip install berth-mcpOder in einer isolierten Umgebung:
pipx install berth-mcpMySQL-Unterstützung erfordert eine optionale Abhängigkeit:
pip install berth-mcp[mysql]PostgreSQL (asyncpg) und SQLite (aiosqlite) Treiber sind standardmäßig enthalten.
Verwendung
Starten Sie den Server:
berthBerth kommuniziert über stdio unter Verwendung des MCP-Protokolls. Es ist dafür konzipiert, von einem MCP-Client gestartet zu werden, nicht eigenständig zu laufen.
Claude Code
claude mcp add berth -- berthClaude Desktop
Fügen Sie dies zu Ihrer claude_desktop_config.json hinzu:
{
"mcpServers": {
"berth": {
"command": "berth",
"args": []
}
}
}Wenn es in einer virtuellen Umgebung installiert ist, verwenden Sie den vollständigen Pfad:
{
"mcpServers": {
"berth": {
"command": "/path/to/venv/bin/berth",
"args": []
}
}
}Umgebungsvariablen
Variable | Standard | Beschreibung |
| Aktuelles Arbeitsverzeichnis | Sandbox-Verzeichnis für Backup- und Wiederherstellungspfade. Alle Pfade werden validiert, um innerhalb dieses Verzeichnisses zu bleiben. |
Sicherheit
3-stufiges Sicherheitsmodell -- standardmäßig schreibgeschützt, Schreibvorgänge erfordern explizite Zustimmung, destruktive Operationen erfordern Bestätigungs-Token
Bestätigungs-Token -- einmalige UUIDs mit 60-sekündiger Gültigkeit für DROP, TRUNCATE, ALTER DROP und vollständige Tabellen-DELETEs
SQL-Injection-Schutz -- Tabellennamen werden vor der Verwendung in PRAGMA-Anweisungen gegen
sqlite_mastervalidiert; durchgehend parametrisierte Abfragen verwendetPfad-Traversal-Schutz -- Backup-/Wiederherstellungspfade werden aufgelöst und validiert, um innerhalb von
BERTH_BACKUP_DIRzu bleiben; Null-Bytes werden abgelehntPasswort-Maskierung -- DSN-Passwörter werden in allen Anzeigeausgaben und Fehlermeldungen maskiert
Entwicklung
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/ -qIntegrationstests für PostgreSQL und MySQL erfordern Docker:
docker compose -f tests/docker-compose.test.yml up -d
python -m pytest tests/ -q
docker compose -f tests/docker-compose.test.yml downLizenz
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