Skip to main content
Glama

DBHub ist ein universelles Datenbank-Gateway, das die Serverschnittstelle des Model Context Protocol (MCP) implementiert. Dieses Gateway ermöglicht MCP-kompatiblen Clients die Verbindung zu verschiedenen Datenbanken und deren Nutzung.

+------------------+ +--------------+ +------------------+ | | | | | | | | | | | | | Claude Desktop +--->+ +--->+ PostgreSQL | | | | | | | | Cursor +--->+ DBHub +--->+ SQL Server | | | | | | | | Other MCP +--->+ +--->+ SQLite | | Clients | | | | | | | | +--->+ MySQL | | | | | | | | | | +--->+ MariaDB | | | | | | | | | | +--->+ Oracle | | | | | | | +------------------+ +--------------+ +------------------+ MCP Clients MCP Server Databases

Demo-SSE-Endpunkt

https://demo.dbhub.ai/sse verbindet eine Beispiel-Mitarbeiterdatenbank . Sie können mit Cursor oder MCP Inspector darauf zeigen, um sie in Aktion zu sehen.

MCP-Inspektor

Related MCP server: Supabase MCP Server

Unterstützte Matrix

Datenbankressourcen

Ressourcenname

URI-Format

PostgreSQL

MySQL

MariaDB

SQL Server

SQLite

Orakel

Schemata

db://schemas

Tabellen_im_Schema

db://schemas/{schemaName}/tables

Tabellenstruktur im Schema

db://schemas/{schemaName}/tables/{tableName}

Indizes_in_Tabelle

db://schemas/{schemaName}/tables/{tableName}/indexes

Prozeduren_im_Schema

db://schemas/{schemaName}/procedures

Prozedurdetails im Schema

db://schemas/{schemaName}/procedures/{procedureName}

Datenbanktools

Werkzeug

Befehlsname

PostgreSQL

MySQL

MariaDB

SQL Server

SQLite

Orakel

SQL ausführen

execute_sql

Listenkonnektoren

list_connectors

Eingabeaufforderungsfunktionen

Prompt

Befehlsname

PostgreSQL

MySQL

MariaDB

SQL Server

SQLite

Orakel

SQL generieren

generate_sql

DB-Elemente erklären

explain_db

Installation

Docker

# PostgreSQL example docker run --rm --init \ --name dbhub \ --publish 8080:8080 \ bytebase/dbhub \ --transport sse \ --port 8080 \ --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"
# Demo mode with sample employee database docker run --rm --init \ --name dbhub \ --publish 8080:8080 \ bytebase/dbhub \ --transport sse \ --port 8080 \ --demo
# Oracle example docker run --rm --init \ --name dbhub \ --publish 8080:8080 \ bytebase/dbhub \ --transport sse \ --port 8080 \ --dsn "oracle://username:password@localhost:1521/service_name"
# Oracle example with thick mode for connecting to 11g or older docker run --rm --init \ --name dbhub \ --publish 8080:8080 \ bytebase/dbhub-oracle-thick \ --transport sse \ --port 8080 \ --dsn "oracle://username:password@localhost:1521/service_name"

NPM

# PostgreSQL example npx @bytebase/dbhub --transport sse --port 8080 --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"
# Demo mode with sample employee database npx @bytebase/dbhub --transport sse --port 8080 --demo

Hinweis: Der Demomodus enthält eine gebündelte SQLite-Beispieldatenbank „Mitarbeiter“ mit Tabellen für Mitarbeiter, Abteilungen, Gehälter und mehr.

Claude Desktop

Claude-Desktop

// claude_desktop_config.json { "mcpServers": { "dbhub-postgres-docker": { "command": "docker", "args": [ "run", "-i", "--rm", "bytebase/dbhub", "--transport", "stdio", "--dsn", // Use host.docker.internal as the host if connecting to the local db "postgres://user:password@host.docker.internal:5432/dbname?sslmode=disable" ] }, "dbhub-postgres-npx": { "command": "npx", "args": [ "-y", "@bytebase/dbhub", "--transport", "stdio", "--dsn", "postgres://user:password@localhost:5432/dbname?sslmode=disable" ] }, "dbhub-demo": { "command": "npx", "args": ["-y", "@bytebase/dbhub", "--transport", "stdio", "--demo"] } } }

Cursor

Cursor

Verwendung

SSL-Verbindungen

Sie können den SSL-Modus mit dem Parameter sslmode in Ihrer DSN-Zeichenfolge angeben:

Datenbank

sslmode=disable

sslmode=require

Standardmäßiges SSL-Verhalten

PostgreSQL

Zertifikatsüberprüfung

MySQL

Zertifikatsüberprüfung

MariaDB

Zertifikatsüberprüfung

SQL Server

Zertifikatsüberprüfung

Orakel

N/A (Oracle-Clientkonfiguration verwenden)

SQLite

N/A (dateibasiert)

SSL-Modusoptionen:

  • sslmode=disable : Die gesamte SSL/TLS-Verschlüsselung ist deaktiviert. Die Daten werden im Klartext übertragen.

  • sslmode=require : Die Verbindung ist verschlüsselt, das Serverzertifikat wird jedoch nicht überprüft. Dies bietet Schutz vor Paket-Sniffing, jedoch nicht vor Man-in-the-Middle-Angriffen. Sie können dies für vertrauenswürdige, selbstsignierte Zertifizierungsstellen verwenden.

Ohne Angabe von sslmode verwenden die meisten Datenbanken standardmäßig die Zertifikatsüberprüfung, die das höchste Maß an Sicherheit bietet.

Anwendungsbeispiel:

# Disable SSL postgres://user:password@localhost:5432/dbname?sslmode=disable # Require SSL without certificate verification postgres://user:password@localhost:5432/dbname?sslmode=require # Standard SSL with certificate verification (default) postgres://user:password@localhost:5432/dbname

Schreibgeschützter Modus

Sie können DBHub im schreibgeschützten Modus ausführen, wodurch die Ausführung von SQL-Abfragen auf schreibgeschützte Vorgänge beschränkt wird:

# Enable read-only mode npx @bytebase/dbhub --readonly --dsn "postgres://user:password@localhost:5432/dbname"

Im schreibgeschützten Modus sind nur schreibgeschützte SQL-Operationen zulässig.

Dies bietet eine zusätzliche Sicherheitsebene beim Herstellen einer Verbindung mit Produktionsdatenbanken.

Konfigurieren der Datenbankverbindung

Sie können DBHub im Demomodus mit einer Beispiel-Mitarbeiterdatenbank zum Testen verwenden:

npx @bytebase/dbhub --demo

Für echte Datenbanken ist ein Datenbankquellenname (DSN) erforderlich. Sie können diesen auf verschiedene Arten angeben:

  • Befehlszeilenargument (höchste Priorität):

    npx @bytebase/dbhub --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"
  • Umgebungsvariable (zweite Priorität):

    export DSN="postgres://user:password@localhost:5432/dbname?sslmode=disable" npx @bytebase/dbhub
  • Umgebungsdatei (dritte Priorität):

    • Für die Entwicklung: Erstellen Sie .env.local mit Ihrem DSN

    • Für die Produktion: Erstellen Sie .env mit Ihrem DSN GXP14

WARNING

Verwenden Sie bei der Ausführung in Dockerhost.docker.internal anstelle von localhost , um eine Verbindung mit Datenbanken herzustellen, die auf Ihrem Hostcomputer ausgeführt werden. Beispiel: mysql://user:password@host.docker.internal:3306/dbname

DBHub unterstützt die folgenden Datenbankverbindungszeichenfolgenformate:

Datenbank

DSN-Format

Beispiel

MySQL

mysql://[user]:[password]@[host]:[port]/[database]

mysql://user:password@localhost:3306/dbname?sslmode=disable

MariaDB

mariadb://[user]:[password]@[host]:[port]/[database]

mariadb://user:password@localhost:3306/dbname?sslmode=disable

PostgreSQL

postgres://[user]:[password]@[host]:[port]/[database]

postgres://user:password@localhost:5432/dbname?sslmode=disable

SQL Server

sqlserver://[user]:[password]@[host]:[port]/[database]

sqlserver://user:password@localhost:1433/dbname?sslmode=disable

SQLite

sqlite:///[path/to/file]

oder

sqlite::memory:

sqlite:///path/to/database.db

,

sqlite:C:/Users/YourName/data/database.db (windows)

oder

sqlite::memory:

Orakel

oracle://[user]:[password]@[host]:[port]/[service_name]

oracle://username:password@localhost:1521/service_name?sslmode=disable

Orakel

Wenn der Fehler „NJS-138: Verbindungen zu dieser Datenbankserverversion werden von Node-OracleDB im Thin-Modus nicht unterstützt“ angezeigt wird, müssen Sie den Thick-Modus wie unten beschrieben verwenden.

Docker

Verwenden Sie bytebase/dbhub-oracle-thick anstelle des Docker-Images bytebase/dbhub .

npx
  1. Laden Sie Oracle Instant Client für Ihre Plattform herunter und installieren Sie ihn

  2. Legen Sie die Umgebungsvariable ORACLE_LIB_DIR auf den Pfad Ihres Oracle Instant Client fest:

# Set environment variable to Oracle Instant Client directory export ORACLE_LIB_DIR=/path/to/instantclient_19_8 # Then run DBHub npx @bytebase/dbhub --dsn "oracle://username:password@localhost:1521/service_name"

SQL Server

Zusätzliche Abfrageparameter:

Authentifizierung

  • authentication=azure-active-directory-access-token . Gilt nur bei Ausführung über Azure. Siehe DefaultAzureCredential .

Transport

  • stdio (Standard) – für die direkte Integration mit Tools wie Claude Desktop:

    npx @bytebase/dbhub --transport stdio --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"
  • sse – für Browser- und Netzwerkclients:

    npx @bytebase/dbhub --transport sse --port 5678 --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"

Befehlszeilenoptionen

Option

Beschreibung

Standard

Demo

Im Demomodus mit einer Beispiel-Mitarbeiterdatenbank ausführen

false

dsn

Datenbankverbindungszeichenfolge

Erforderlich, wenn nicht im Demomodus

Transport

Transportmodus:

stdio

oder

sse

stdio

Hafen

HTTP-Server-Port (nur anwendbar bei Verwendung

--transport=sse

)

8080

schreibgeschützt

Beschränken Sie die SQL-Ausführung auf schreibgeschützte Vorgänge

false

Der Demomodus verwendet eine In-Memory-SQLite-Datenbank mit der Beispiel-Mitarbeiterdatenbank . Diese enthält Tabellen für Mitarbeiter, Abteilungen, Titel, Gehälter, Abteilungsmitarbeiter und Abteilungsleiter. Die Beispieldatenbank enthält SQL-Skripte zum Erstellen, Laden und Testen von Tabellen.

Entwicklung

  1. Installieren Sie Abhängigkeiten:

    pnpm install
  2. Im Entwicklungsmodus ausführen:

    pnpm dev
  3. Für die Produktion erstellen:

    pnpm build pnpm start --transport stdio --dsn "postgres://user:password@localhost:5432/dbname?sslmode=disable"

Testen

Das Projekt verwendet Vitest zum Testen:

  • Tests ausführen: pnpm test

  • Führen Sie Tests im Überwachungsmodus aus: pnpm test:watch

Pre-Commit-Hooks (für Entwickler)

Das Projekt enthält Pre-Commit-Hooks, um vor jedem Commit automatisch Tests auszuführen:

  1. Richten Sie nach dem Klonen des Repository die Pre-Commit-Hooks ein:

    ./scripts/setup-husky.sh
  2. Dadurch wird sichergestellt, dass die Testsuite automatisch ausgeführt wird, wenn Sie einen Commit erstellen, und Commits werden verhindert, die Tests unterbrechen würden.

Debuggen mit MCP Inspector

stdio

# PostgreSQL example TRANSPORT=stdio DSN="postgres://user:password@localhost:5432/dbname?sslmode=disable" npx @modelcontextprotocol/inspector node /path/to/dbhub/dist/index.js

SSE

# Start DBHub with SSE transport pnpm dev --transport=sse --port=8080 # Start the MCP Inspector in another terminal npx @modelcontextprotocol/inspector

Stellen Sie eine Verbindung zum DBHub-Server-Endpunkt /sse her

Mitwirkende

Sternengeschichte

Sternenverlaufsdiagramm

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

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/bytebase/dbhub'

If you have feedback or need assistance with the MCP directory API, please join our Discord server