Skip to main content
Glama
kobramantra-debug

mcp-database-universal

MCP Database Server

Eine Reasoning-Schnittstelle für Datenbanken für MCP-fähige KI-Agenten – kein dünner SQL-Wrapper.

mcp-database-universal bietet KI-Agenten eine Reihe von 7 Reasoning-Tools, um eine Datenbank sicher zu erkunden und abzufragen, ihr Schema und ihre Datenstruktur zu verstehen, Fragen in natürlicher Sprache zu stellen und Beziehungen zu visualisieren – ohne rohe Verbindungsinterna preiszugeben.

Funktionen

  • 7 Reasoning-Tools für KI-Agenten: Verbindung testen, Tabellen auflisten, eine Tabelle inspizieren, parametrisiertes SQL ausführen, Fragen in einfacher Sprache stellen, Daten profilieren und ein ER-Diagramm rendern.

  • Multi-Engine: SQLite (integriert) plus optional PostgreSQL, MySQL und MSSQL.

  • Sicherheit zuerst: standardmäßig schreibgeschützt, parametrisierte Abfragen, Anweisungsvalidierung, Zeilen-/Zeit-/Ausgabelimits.

  • LLM-freundliche Ausgabe: Typen übersetzt, NULLs behandelt, Ergebnisse in Markdown-Tabellen mit Kontext formatiert.

  • Schema-Introspection: automatisches Erkennen von Tabellen, Spalten, Indizes, Fremdschlüsseln und Beziehungen.

  • Natürliche Sprachabfragen: Übersetzen von Klartextfragen in SQL und Rückgabe der Ergebnisse.

Related MCP server: database-explorer-mcp

Unterstützte Engines

Engine

Anforderung

Zusätzliche Installation

SQLite

integriert

—

PostgreSQL

psycopg

pip install "mcp-database-universal[postgres]"

MySQL

PyMySQL

pip install "mcp-database-universal[mysql]"

MSSQL

pyodbc + ODBC-Treiber

pip install "mcp-database-universal[mssql]"

alle

—

pip install "mcp-database-universal[all]"

Installation

pip install mcp-database-universal

# With optional engines:
pip install "mcp-database-universal[postgres]"
pip install "mcp-database-universal[mysql]"
pip install "mcp-database-universal[mssql]"
# or everything:
pip install "mcp-database-universal[all]"

Schnellstart

Führen Sie den Server über STDIO aus (der Standardtransport für MCP-Clients):

DATABASE_URL=sqlite:///app.db python -m mcp_database_universal

Verbindungs-URLs:

sqlite:///path/to/db.db              SQLite (file)
sqlite:///:memory:                   SQLite (in-memory)
postgresql://user:pass@host:5432/db  PostgreSQL
mysql://user:pass@host:3306/db       MySQL
mssql://user:pass@host:1433/db       MSSQL (uses ODBC Driver 18)

Docker

docker build -t mcp-db .

# Mount a SQLite database read-only:
docker run --rm -i \
  -v /host/path/app.db:/data/app.db:ro \
  -e DATABASE_URL=sqlite:////data/app.db \
  mcp-db

# Or in-memory:
docker run --rm -i -e DATABASE_URL=sqlite:///:memory: mcp-db

Konfiguration

Die gesamte Konfiguration erfolgt über Umgebungsvariablen.

Variable

Standard

Beschreibung

DATABASE_URL

(erforderlich)

Datenbank-Verbindungs-URL.

DATABASE_READ_ONLY

true

Schreibgeschützten Modus erzwingen (blockiert Schreibvorgänge, selbst wenn DATABASE_WRITE_ENABLED gesetzt ist).

DATABASE_WRITE_ENABLED

false

Schreibanweisungen erlauben, wenn DATABASE_READ_ONLY=false ist.

DATABASE_MAX_ROWS

1000

Maximale Anzahl von Zeilen pro Abfrage.

DATABASE_MAX_QUERY_TIME

30

Abfrage-Timeout in Sekunden.

DATABASE_MAX_OUTPUT_BYTES

50000

Obergrenze für die Größe der Ergebnisnutzlast.

DATABASE_SAMPLE_SIZE

5

Anzahl der Beispielzeilen in Tabellen-/Spaltenstatistiken.

DATABASE_PROFILE_TOP_N

10

Top-N-Werteverteilungseinträge im Profiling.

OPENAI_API_KEY

—

API-Schlüssel für den LLM-gestützten natural_query-Modus.

ANTHROPIC_API_KEY

—

API-Schlüssel für den LLM-gestützten natural_query-Modus.

Tools

Tool

Beschreibung

test_connection

Datenbankverbindung testen; Engine, Version, Name, Größe, Tabellenanzahl melden.

list_tables

Übersicht aller Tabellen mit Zeilenzahlen, Spaltenzahlen, Fremdschlüsselbeziehungen.

inspect_table

Vollständige Struktur einer Tabelle: Spalten, Typen, Indizes, Fremdschlüssel, Beispieldaten.

query

Eine sichere, parametrisierte SQL-Abfrage ausführen und Markdown-Ergebnisse erhalten.

natural_query

Eine Frage in Klartext stellen; generiertes SQL + Ergebnisse erhalten.

profile_database

Datenprofil: Verteilungen, NULL-Raten, Beziehungen, Größen.

schema_graph

Mermaid-ER-Diagramm der Tabellenbeziehungen.

Beispiel: query mit Parametern

{
  "sql": "SELECT * FROM users WHERE id = :id AND active = :active",
  "params": "{\"id\": 42, \"active\": true}"
}

Parameter verwenden :name-Platzhalter; übergeben Sie die Werte als JSON-String in params.

Beispiel: natural_query

question: "How many users are there?"
-> SELECT COUNT(*) FROM users
question: "Show me all orders"
-> SELECT * FROM orders LIMIT 100

Ein funktionierendes Beispiel mit einer kleinen Beispieldatenbank finden Sie in examples/ zusammen mit gebrauchsfertigen Konfigurationsausschnitten für gängige MCP-Clients.

MCP-Client-Konfiguration

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "database": {
      "command": "python",
      "args": ["-m", "mcp_database_universal"],
      "env": {"DATABASE_URL": "sqlite:///C:/data/app.db"}
    }
  }
}

Cursor / andere CLI-basierte Clients

{
  "mcpServers": {
    "database": {
      "command": "uvx",
      "args": ["mcp-database-universal"],
      "env": {"DATABASE_URL": "sqlite:///C:/data/app.db"}
    }
  }
}

Windows-Hinweis: Der asynchrone Postgres-Treiber erfordert die Windows-Selector-Ereignisschleife. Das Paket setzt diese Richtlinie automatisch auf win32, daher ist keine zusätzliche Konfiguration erforderlich.

Entwicklung

pip install -e ".[dev]"
pytest

Integrationstests für PostgreSQL/MySQL verwenden Docker Compose und werden automatisch übersprungen, wenn die Server nicht erreichbar sind:

docker compose -f tests/integration/docker-compose.yml up -d
pytest

Sicherheitsmodell

  • Der Server ist standardmäßig schreibgeschützt; INSERT/UPDATE/DELETE/DROP/ALTER und andere Schreibanweisungen werden blockiert.

  • Schreibvorgänge sind nur möglich, wenn der Betreiber explizit DATABASE_READ_ONLY=false und DATABASE_WRITE_ENABLED=true setzt.

  • Abfrageergebnisse sind durch Zeilenanzahl, Timeout und Ausgabegröße begrenzt – außer Kontrolle geratene Abfragen werden verhindert.

Lizenz

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connect AI agents to SQL databases (SQLite, PostgreSQL, MySQL) with a unified interface for querying data, exploring schemas, inserting rows, and exporting results to CSV. Includes safety features like dangerous query blocking and write guards.
    5 npm
    40 PyPI
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to connect to and interact with PostgreSQL, MySQL, SQLite, and MongoDB databases through natural language, supporting schema exploration, query execution, data export, and more.
    13
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with PostgreSQL or MySQL databases using natural language. Supports SQL queries, schema discovery, and pre-built aggregations without writing SQL.
    139 npm
    MIT