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 (
sqlite3aus der Standardbibliothek, mitset_authorizerfü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 testsTests
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: startetpython -m mcp_database_serverals echten Subprozess und kommuniziert übermcp.client.stdio+ClientSessionmit 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_authorizerauf 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.lockden Zugriff (echter Fehler, der während der Implementierung gefunden und behoben wurde, abgedeckt durchtest_integration.py).MCP-Tools geben
ValueErrormit 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).
This server cannot be deployed
Maintenance
Related MCP Connectors
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Read-only finance and operations controls for AI agents with evidence and safe next actions.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides 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-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to query SQL databases safely with read-only access, allowing schema discovery and SELECT queries while blocking writes and DDL operations.-
- AlicenseNot gradedqualityDmaintenanceEnables LLM clients to query SQL databases via natural language with read-only, AST-validated, and capped queries, ensuring safety guarantees.2MIT
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to databases for MCP-compatible AI tools, allowing schema exploration and SELECT queries without exposing credentials or risking data changes.60 npm3MIT