Skip to main content
Glama
oliverhubtech-source

MCP Database Server

MCP Database Server

Säule: Protokolle, Interoperabilität & APIs
Status: Monat 1 - essenziell

MCP-Server in Python, um Schemas, sichere Abfragen und gespeicherte Prozeduren für LLM-Clients bereitzustellen.

Problem

LLMs müssen auf Unternehmensdatenbanken zugreifen, ohne umfassende Anmeldeinformationen zu erhalten oder die Freiheit zu haben, destruktives SQL auszuführen.

Related MCP server: DB Insights MCP Server

MVP

  • MCP-Server mit FastMCP

  • Auflistung erlaubter Schemas

  • Nur-Lese-Abfragen

  • Allowlist für gespeicherte Prozeduren

  • Auditierung von Aufrufen

Architektur

  • MCP-Server (mcp.server.MCPServer, Tools registriert über @mcp.tool())

  • Schema-Registry (Allowlist für Tabellen/Spalten, db.py)

  • Read-only-Authorizer (sqlite3.Connection.set_authorizer, security.py)

  • Audit-Logger (In-Memory-Spur jedes Tool-Aufrufs, audit.py)

Diagramm

flowchart LR
    A0[MCP client] --> A1[MCP server: list_tables / describe_table / run_readonly_query]
    A1 --> A2[SQLite authorizer: allowlist + read-only]
    A2 --> A3[SQLite: invoices]
    A1 --> A4[Audit log]

Stack

  • Python

  • mcp (offizielles SDK des Model Context Protocol)

  • SQLite (sqlite3 aus der Standardbibliothek, mit set_authorizer für die Zugriffskontrolle)

  • unittest

  • Docker Compose

Ausführen

Echte Implementierung mit dem offiziellen MCP-SDK. Die Zugriffskontrolle verwendet kein Regex über das SQL (leicht zu umgehen) – sie verwendet den set_authorizer von SQLite selbst, der jede gelesene Tabelle/Spalte und jede Art von Anweisung genehmigt oder ablehnt, bevor eine Zeile ausgeführt wird. Um den MCP-Server auszuführen:

python3.12 -m venv .venv && source .venv/bin/activate
pip install -e .
python -m mcp_database_server   # sobe o servidor MCP via stdio
python -m unittest discover -s tests

Tests

  • test_security.py: Authorizer blockiert INSERT/UPDATE/DELETE/DROP/ALTER, ATTACH, Tabellen außerhalb der Allowlist (z. B. sqlite_master) und gestapelte Anweisungen (SELECT 1; DROP TABLE ...).

  • test_server.py: Logik jedes direkt aufgerufenen Tools (ohne Protokoll), einschließlich der Tatsache, dass jeder Aufruf ein Audit-Ereignis erzeugt.

  • test_integration.py: startet python -m mcp_database_server als echten Subprozess und kommuniziert über mcp.client.stdio + ClientSession mit ihm – beweist, dass der Server MCP spricht, nicht nur, dass die Python-Funktionen funktionieren.

Risiken und Entscheidungen

  • SQL-Injection und übermäßige Berechtigungen: gelöst über set_authorizer auf Treiberebene, nicht per Regex.

  • Eine einzelne SQLite-Verbindung ist nicht threadsicher; der MCP-Server verteilt jeden Tool-Aufruf in einem Worker-Thread, daher serialisiert ServerState.lock den Zugriff (echter Fehler, der während der Implementierung gefunden und behoben wurde, abgedeckt durch test_integration.py).

  • MCP-Tools geben ValueError mit einer klaren Nachricht an den LLM-Client zurück, anstatt einen Stack-Trace preiszugeben.

Nächste Schritte

  • SQLite durch PostgreSQL über SQLAlchemy ersetzen, wenn die Daten real sind.

  • Authentifizierung/Allowlist pro Client hinzufügen (derzeit hat jeder verbundene MCP-Client Zugriff auf die Tools).

  • Das Audit-Log außerhalb des Prozesses persistieren (derzeit nur im Speicher).

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides secure, read-only access to Microsoft SQL Server with multi-layer protection, enabling safe query execution, schema discovery, and SQL script analysis through natural language.
    2
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to query SQL databases safely with read-only access, allowing schema discovery and SELECT queries while blocking writes and DDL operations.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables LLM clients to query SQL databases via natural language with read-only, AST-validated, and capped queries, ensuring safety guarantees.
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.
    60 npm
    3
    MIT