sqlite-readonly-mcp
sqlite-readonly-mcp
Ein auf einem Remote-Linux laufender schreibgeschützter SQLite Model Context Protocol-Dienst, der Streamable HTTP (/mcp) verwendet, durch Bearer Token authentifiziert wird und Abfrageergebnisse als JSON-Text zurückgibt. Konzipiert für den Betrieb hinter Nginx (HTTPS), wobei der Upstream nur auf dem lokalen Host lauscht.
Funktionen
Tool
sqlite_query: EinzelneSELECT/WITH/EXPLAIN-Abfragen, gibt JSON mit{ rows, rowCount }zurück.Tool
list_tables: Listet Nicht-System-Tabellennamen auf.SQLite:
better-sqlite3readonly + fileMustExist; Anwendungsebene beschränkt auf einzelne Anweisungen und Abfragepräfixe.GET /health: Nur für Loopback-Zugriffe, für Probes (siehesrc/server.ts).Transport: Streamable HTTP (
/mcp) + Legacy SSE (GET /sse,POST /messages), um Cursor bei Bedarf ein Fallback zu ermöglichen.
Related MCP server: PostgreSQL MCP Server
Umgebungsvariablen
Variable | Erforderlich | Beschreibung |
| Ja | Absoluter Pfad zur Datenbankdatei |
| Ja | Statischer Bearer (auch |
| Nein | Standard |
| Nein | Standard |
| Nein | Kommagetrennt, erlaubte |
| Nein | Maximale Zeilenanzahl pro Abfrage, Standard |
Lokales Bauen und Ausführen
npm install
npm run build
export SQLITE_PATH=/path/to/db.sqlite
export BEARER_TOKEN='your-secret-token'
export ALLOWED_HOSTS='127.0.0.1,localhost'
node dist/server.jsEntwicklung und Debugging: npm run dev
Nginx und systemd
Siehe deploy/nginx.example.conf, deploy/sqlite-readonly-mcp.service, deploy/sqlite-readonly-mcp.env.example.
Wichtige Punkte: Übermittlung von Authorization, Accept, Content-Type, mcp-session-id an den Upstream; proxy_buffering für SSE/Chunked-Antworten deaktivieren. Das Beispiel enthält bereits **/sse**, **/messages** (Legacy SSE-Fallback), die zusammen mit Streamable HTTP /mcp als Reverse Proxy fungieren.
Ausführung als Root-Benutzer (empfohlenes Beispiel)
Zur Vereinfachung der Konfiguration der Leseberechtigungen für die SQLite-Datei und das übergeordnete Verzeichnis startet das Beispiel den Dienst als root (in der systemd-Unit ist kein User= / Group= gesetzt, standardmäßig ist dies root).
Platzieren Sie den Code und die Build-Artefakte z. B. unter
/opt/sqlite-readonly-mcpund führen Sienpm ci --omit=devsowienpm run buildaus.Kopieren Sie die Umgebungsdatei und füllen Sie die Variablen aus:
sudo cp deploy/sqlite-readonly-mcp.env.example /etc/sqlite-readonly-mcp.env
sudo chmod 600 /etc/sqlite-readonly-mcp.envInstallieren und aktivieren Sie die Unit (passen Sie
WorkingDirectoryund den absoluten Pfad zunodeinExecStartbei Bedarf an):
sudo cp deploy/sqlite-readonly-mcp.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now sqlite-readonly-mcp
sudo systemctl status sqlite-readonly-mcpFalls Sie zuvor manuell User=mcp hinzugefügt haben, löschen Sie diese Zeile, bevor Sie daemon-reload und restart ausführen.
Sicherheitshinweis: Ein kompromittierter Root-Prozess hat größere Auswirkungen. Bitte verwenden Sie unbedingt HTTPS, Bearer, lokales Lauschen + Nginx, Firewall; falls minimale Berechtigungen erforderlich sind, können Sie zu einem dedizierten Benutzer zurückkehren und die Berechtigungen für Datendateien und Pfade separat konfigurieren.
Manuelle Überprüfung (curl)
MCP erfordert, dass der Client sowohl application/json als auch text/event-stream akzeptiert:
curl -sS -D - \
-H "Authorization: Bearer $BEARER_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}' \
"https://mcp.example.com/mcp"Ein falsches Token sollte 401 zurückgeben.
Cursor-Client
Konfigurieren Sie in den MCP-Einstellungen von Cursor die HTTPS-URL für diesen Remote-Dienst (z. B. https://mcp.example.com/mcp). Falls Bearer erforderlich ist, prüfen Sie, ob die aktuelle Cursor-Version das Konfigurieren von benutzerdefinierten Headern für Remote-MCPs unterstützt; falls nicht, muss lokal eine zusätzliche Gateway-Schicht mit festem Authorization-Header hinzugefügt werden (siehe Risikohinweise).
Betrieb
Siehe docs/RUNBOOK.md für Details.
Lizenz
MIT (identisch mit @modelcontextprotocol/sdk; es gelten die Lizenzen der jeweiligen Abhängigkeiten).
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Text-to-SQL MCP server: read-only queries on PostgreSQL, MySQL and SQL Server with your real schema
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA lightweight MCP server that provides read-only access to SQLite databases, allowing users to execute SELECT queries, list tables, and describe table schemas.1MIT
- AlicenseNot gradedqualityDmaintenanceA production-ready MCP server that enables safe, read-only SQL SELECT queries against PostgreSQL databases with built-in security validation. It features connection pooling, automatic row limits, and structured logging to ensure secure and reliable database interactions.13 npmISC
- AlicenseNot gradedqualityFmaintenanceRead-only MCP server for SQL databases (SQL Server, Postgres, SQLite) with multi-server support and three-layer safety using AST validation and linting.MIT
- FlicenseNot gradedqualityDmaintenanceCustom MCP server connected to a read-only SQLite database, exposing a schema resource and a query tool for safe data retrieval.-