DBHub

by bytebase
MIT License
12
403
  • Linux
  • Apple

Integrations

  • Provides Docker container deployment options for running the DBHub server with configurable database connections and transport options.

  • Supports connecting to DuckDB databases to explore tables, access schema information, and perform read-only SQL queries with safety measures.

  • Provides access to MySQL databases for browsing tables, viewing schema information, and executing read-only SQL queries with safety protections.

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.

Unterstützte Matrix

Datenbankressourcen

RessourcennameURI-FormatPostgreSQLMySQLMariaDBSQL ServerSQLiteOrakel
Schematadb://schemas
Tabellen_im_Schemadb://schemas/{schemaName}/tables
Tabellenstruktur im Schemadb://schemas/{schemaName}/tables/{tableName}
Indizes_in_Tabelledb://schemas/{schemaName}/tables/{tableName}/indexes
Prozeduren_im_Schemadb://schemas/{schemaName}/procedures
Prozedurdetails im Schemadb://schemas/{schemaName}/procedures/{procedureName}

Datenbanktools

WerkzeugBefehlsnamePostgreSQLMySQLMariaDBSQL ServerSQLiteOrakel
SQL ausführenexecute_sql
Listenkonnektorenlist_connectors

Eingabeaufforderungsfunktionen

PromptBefehlsnamePostgreSQLMySQLMariaDBSQL ServerSQLiteOrakel
SQL generierengenerate_sql
DB-Elemente erklärenexplain_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_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

Verwendung

SSL-Verbindungen

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

Datenbanksslmode=disablesslmode=requireStandardmäßiges SSL-Verhalten
PostgreSQLZertifikatsüberprüfung
MySQLZertifikatsüberprüfung
MariaDBZertifikatsüberprüfung
SQL ServerZertifikatsüberprüfung
OrakelN/A (Oracle-Clientkonfiguration verwenden)
SQLiteN/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 Sie Ihre 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 Docker host.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:

DatenbankDSN-FormatBeispiel
MySQLmysql://[user]:[password]@[host]:[port]/[database]mysql://user:password@localhost:3306/dbname?sslmode=disable
MariaDBmariadb://[user]:[password]@[host]:[port]/[database]mariadb://user:password@localhost:3306/dbname?sslmode=disable
PostgreSQLpostgres://[user]:[password]@[host]:[port]/[database]postgres://user:password@localhost:5432/dbname?sslmode=disable
SQL Serversqlserver://[user]:[password]@[host]:[port]/[database]sqlserver://user:password@localhost:1433/dbname?sslmode=disable
SQLitesqlite:///[path/to/file] oder sqlite::memory:sqlite:///path/to/database.db , sqlite:C:/Users/YourName/data/database.db (windows) oder sqlite::memory:
Orakeloracle://[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

OptionBeschreibungStandard
DemoIm Demomodus mit einer Beispiel-Mitarbeiterdatenbank ausführenfalse
dsnDatenbankverbindungszeichenfolgeErforderlich, wenn nicht im Demomodus
TransportTransportmodus: stdio oder ssestdio
HafenHTTP-Server-Port (nur anwendbar bei Verwendung --transport=sse )8080
schreibgeschütztBeschränken Sie die SQL-Ausführung auf schreibgeschützte Vorgängefalse

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"

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

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

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Universeller Datenbank-MCP-Server mit Verbindung zu MySQL, PostgreSQL, SQLite, DuckDB usw.

  1. Unterstützte Matrix
    1. Datenbankressourcen
    2. Datenbanktools
    3. Eingabeaufforderungsfunktionen
  2. Installation
    1. Docker
    2. NPM
    3. Claude Desktop
    4. Cursor
  3. Verwendung
    1. SSL-Verbindungen
    2. Schreibgeschützter Modus
    3. Konfigurieren Sie Ihre Datenbankverbindung
    4. Transport
    5. Befehlszeilenoptionen
  4. Entwicklung
    1. Debuggen mit MCP Inspector
  5. Mitwirkende
    1. Sternengeschichte

      Related MCP Servers

      • -
        security
        F
        license
        -
        quality
        An MCP server that provides safe, read-only access to SQLite databases through MCP. This server is built with the FastMCP framework, which enables LLMs to explore and query SQLite databases with built-in safety features and query validation.
        Last updated -
        21
        Python
      • -
        security
        A
        license
        -
        quality
        MCP to access any database accessible via JDBC such as Postgres, Oracle, mysql, mariadb, sqlite etc.
        Last updated -
        103
        Apache 2.0
      • A
        security
        A
        license
        A
        quality
        An MCP server that provides read-only access to MySQL databases.
        Last updated -
        4
        695
        17
        JavaScript
        MIT License
        • Linux
        • Apple

      View all related MCP servers

      ID: a01xnguu8x