Multi-Database MCP Server
Multi-Datenbank MCP-Server
Ein MCP-Server (Model Context Protocol), der Tools für den gleichzeitigen Zugriff auf mehrere Datenbanken bereitstellt. Der Server läuft in Docker und unterstützt das parallele Abfragen mehrerer Datenbanken unterschiedlicher Typen. Dieser Server wurde durch den Bedarf inspiriert, Datenbanken zu vergleichen oder Migrationen zu unterstützen.
Funktionen
Mehrere Datenbanktypen: Unterstützung für PostgreSQL, MySQL/MariaDB, SQL Server und SQLite
Unterstützung mehrerer Datenbanken: Gleichzeitiges Verbinden und Abfragen mehrerer Datenbanken (auch unterschiedlicher Typen)
Parallele Abfragen: Ausführen derselben Abfrage über mehrere Datenbanken hinweg gleichzeitig
Schema-Erkundung: Auflisten von Datenbanken, Schemata, Tabellen und Beschreiben von Tabellenstrukturen
Dockerisiert: Läuft in einem Docker-Container für einfache Bereitstellung
Verbindungspooling: Effizientes Verbindungsmanagement für alle Datenbanktypen
Flexible Konfiguration: Organisieren von Datenbanken nach Typ
Related MCP server: Universal SQL MCP Server
Verfügbare Tools
list_databases - Listet alle konfigurierten Datenbankverbindungen auf
query_database - Führt eine SQL-Abfrage auf einer bestimmten Datenbank aus
list_tables - Listet alle Tabellen in einem Datenbankschema auf
describe_table - Ruft detaillierte Schemainformationen für eine Tabelle ab
list_schemas - Listet alle Schemata in einer Datenbank auf
query_multiple_databases - Führt dieselbe Abfrage gleichzeitig auf mehreren Datenbanken aus
Einrichtung
1. Datenbankkonfiguration erstellen
Kopieren Sie die Beispielkonfigurationsdatei und bearbeiten Sie sie mit Ihren Datenbank-Anmeldedaten:
cp databases.json.example databases.jsonBearbeiten Sie databases.json mit Ihren Datenbankverbindungsdetails. Organisieren Sie Datenbanken nach Typ auf der Stammebene:
{
"postgresql": {
"postgres_db": {
"host": "localhost",
"port": 5432,
"user": "postgres",
"password": "your_password",
"database": "database1"
},
"another_postgres": {
"host": "remote.example.com",
"port": 5432,
"user": "admin",
"password": "secret",
"database": "production"
}
},
"mysql": {
"mysql_db": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "your_password",
"database": "mydatabase"
}
},
"sqlserver": {
"sqlserver_db": {
"host": "localhost",
"port": 1433,
"user": "sa",
"password": "your_password",
"database": "MyDatabase"
}
},
"sqlite": {
"sqlite_db": {
"database": "/path/to/database.db"
}
},
"clickhouse": {
"clickhouse_db": {
"host": "localhost",
"port": 8123,
"user": "default",
"password": "",
"database": "default"
}
}
}Unterstützte Datenbanktypen
PostgreSQL (
"postgresql","postgres"oder"pg")MySQL/MariaDB (
"mysql"oder"mariadb")SQL Server (
"sqlserver","mssql"oder"sql server")SQLite (
"sqlite"oder"sqlite3")ClickHouse (
"clickhouse"oder"ch")
2. Erstellen und Ausführen mit Docker Compose
docker-compose up --build3. Erstellen und Ausführen mit Docker
# Build the image
docker build -t multidb-mcp-server .
# Run the container
docker run -it \
-v $(pwd)/databases.json:/app/databases.json:ro \
multidb-mcp-server4. Tipps für Docker-Verbindungen
Beachten Sie beim Konfigurieren von Datenbankverbindungen innerhalb von Docker diese Tipps:
Netzwerkverbindungen (PostgreSQL, MySQL, SQL Server)
Zugriff auf Datenbanken auf dem Host-Rechner: Verwenden Sie
host.docker.internalals Hostname (Windows/Mac) oder172.17.0.1(Linux)Zugriff auf andere Container: Verwenden Sie den Containernamen oder Dienstnamen aus der
docker-compose.ymlZugriff auf Remote-Datenbanken: Verwenden Sie den tatsächlichen Hostnamen oder die IP-Adresse
Beispiel für den Zugriff auf PostgreSQL auf dem Host-Rechner:
{
"postgresql": {
"local_db": {
"host": "host.docker.internal",
"port": 5432,
"user": "postgres",
"password": "password",
"database": "mydb"
}
}
}Beispiel für den Zugriff auf eine Datenbank in einem anderen Docker-Container:
{
"postgresql": {
"container_db": {
"host": "postgres-container",
"port": 5432,
"user": "postgres",
"password": "password",
"database": "mydb"
}
}
}Beispiel für den Zugriff auf SQL Server auf dem Host-Rechner:
{
"sqlserver": {
"sqlserver_db": {
"host": "host.docker.internal",
"port": 1433,
"user": "sa",
"password": "password",
"database": "MyDatabase"
}
}
}Hinweis für SQL Server: Stellen Sie sicher, dass SQL Server für TCP/IP-Verbindungen konfiguriert ist und der SQL Server Browser-Dienst bei Verwendung benannter Instanzen ausgeführt wird. Der Standardport ist 1433.
Dateipfade (SQLite)
SQLite-Datenbanken auf dem Host: Binden Sie das Verzeichnis, das die Datenbankdatei enthält, als Volume ein und verwenden Sie den Container-Pfad
SQLite-Datenbanken im Container: Verwenden Sie absolute Pfade innerhalb des Containers
Beispiel für einen Docker-Run-Befehl mit SQLite-Volume:
docker run -it \
-v $(pwd)/databases.json:/app/databases.json:ro \
-v $(pwd)/data:/app/data:ro \
multidb-mcp-serverBeispiel für eine SQLite-Konfiguration:
{
"sqlite": {
"local_db": {
"database": "/app/data/mydatabase.db"
}
}
}Hinweis: Der Pfad /app/data/mydatabase.db ist der Pfad innerhalb des Containers, der über das Volume-Mount auf ./data/mydatabase.db auf Ihrem Host-Rechner gemappt wird.
Verwendung
Der Server kommuniziert über stdio unter Verwendung des MCP-Protokolls. Verbinden Sie Ihren MCP-Client mit den stdio-Streams des Docker-Containers.
Beispiel für eine MCP-Client-Konfiguration
Wenn Sie einen MCP-Client verwenden, konfigurieren Sie ihn so, dass er eine Verbindung zum Docker-Container herstellt:
{
"mcpServers": {
"multidb": {
"command": "docker",
"args": [
"run",
"-i",
"-v",
"[YOUR/PATH]/databases.json:/app/databases.json:ro",
"multidb-mcp-server"
]
}
}
}Tool-Beispiele
Alle Datenbanken auflisten
{
"tool": "list_databases",
"arguments": {}
}Eine einzelne Datenbank abfragen
{
"tool": "query_database",
"arguments": {
"database_name": "db1",
"query": "SELECT * FROM users LIMIT 10"
}
}Tabellen auflisten
{
"tool": "list_tables",
"arguments": {
"database_name": "db1",
"schema": "public"
}
}Eine Tabelle beschreiben
{
"tool": "describe_table",
"arguments": {
"database_name": "db1",
"table_name": "users",
"schema": "public"
}
}Mehrere Datenbanken gleichzeitig abfragen
Sie können mehrere Datenbanken unterschiedlicher Typen gleichzeitig abfragen:
{
"tool": "query_multiple_databases",
"arguments": {
"database_names": ["db1", "db2", "sqlserver_db"],
"query": "SELECT COUNT(*) as total FROM users"
}
}Hinweis: Stellen Sie beim Abfragen mehrerer Datenbanken unterschiedlicher Typen sicher, dass die SQL-Syntax über alle Datenbanktypen hinweg kompatibel ist, oder verwenden Sie datenbankspezifische Abfragen für jede Datenbank separat.
Entwicklung
Lokale Entwicklung (ohne Docker)
Abhängigkeiten installieren:
pip install -r requirements.txtUmgebungsvariable setzen:
export DB_CONFIG_PATH=./databases.jsonServer ausführen:
python server.pyDatenbankspezifische Hinweise
PostgreSQL
Standardport: 5432
Standardschema:
publicVerwendet
asyncpgfür asynchrone Operationen
MySQL/MariaDB
Standardport: 3306
Schema-Parameter ist optional (verwendet die aktuelle Datenbank)
Verwendet
aiomysqlfür asynchrone Operationen
SQL Server
Standardport: 1433
Standardschema:
dboErfordert Microsoft ODBC Driver for SQL Server (v18 bevorzugt, v17 ebenfalls unterstützt; im Docker-Image installiert)
Verwendet
pyodbcmit asyncio-WrapperWichtig: SQL Server muss für TCP/IP-Verbindungen konfiguriert sein
Stellen Sie bei benannten Instanzen sicher, dass der SQL Server Browser-Dienst ausgeführt wird
Verwenden Sie
host.docker.internal, um von Docker aus eine Verbindung zum SQL Server auf dem Host-Rechner herzustellen
SQLite
Keine Netzwerkverbindung erforderlich
Verwenden Sie das Feld
database, um den Dateipfad anzugeben (oder:memory:für In-Memory)Standardschema:
mainVerwendet
aiosqlitefür asynchrone Operationen
Sicherheitshinweise
databases.jsonniemals committen - Sie enthält sensible AnmeldedatenVerwenden Sie in der Produktion Umgebungsvariablen oder Secrets-Management
Erwägen Sie die Verwendung von SSL/TLS-Verbindungen für Remote-Datenbanken
Begrenzen Sie den Netzwerkzugriff auf den Docker-Container
Stellen Sie bei SQLite sicher, dass Dateipfade sicher und zugänglich sind
Fehlerbehebung
Verbindungsprobleme
Überprüfen Sie die Datenbank-Anmeldedaten in
databases.jsonStellen Sie sicher, dass die Datenbanken vom Docker-Container aus zugänglich sind
Überprüfen Sie die Netzwerkkonnektivität (verwenden Sie
docker networkfür die Kommunikation zwischen Containern)
Berechtigungsprobleme
Stellen Sie sicher, dass die Datei
databases.jsonüber die richtigen Leseberechtigungen verfügtÜberprüfen Sie, ob das Docker-Volume-Mount korrekt ist
Lizenz
MIT
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate, fix, explain and run read-only SQL on PostgreSQL, MySQL and SQL Server
Explore, query, and inspect SQLite databases with ease. List tables, preview results, and view det…
PostgreSQL, MySQL, OpenAPI/Swagger, and shared Agent Memory with scoped access.
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables connecting to and querying multiple database types (PostgreSQL, MySQL, SQLite) through a unified interface. Supports managing multiple concurrent database connections with connection pooling and SQL query execution through MCP tools.519MIT
- AlicenseNot gradedqualityDmaintenanceEnables secure interaction with multiple SQL database engines (MySQL, PostgreSQL, SQLite, SQL Server) through a standardized interface. Supports schema inspection, safe query execution, and controlled write operations with built-in security restrictions.5MIT
- AlicenseNot gradedqualityDmaintenanceEnables safe exploration and querying of multiple databases (PostgreSQL, MySQL, SQLite, DB2) with read-only defaults, connection pooling, and parameterized queries for SQL injection prevention.1MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables interaction with 20+ databases (PostgreSQL, MongoDB, Neo4j, Elasticsearch, Redis, and more) through a single unified interface, allowing cross-database queries and operations via natural language.1-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/roshanponnappa/multidb-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server