Ein Projekt zum Lernen, wie man eine SQLite-Datenbank mit einem LLM über einen MCP-Server abfragt.
Das Model Context Protocol (MCP) ist ein offener Standard, der es Large Language Models (LLMs) ermöglicht, mit externen Datenquellen und Tools zu kommunizieren. In diesem Projekt nutzen wir MCP, um einem LLM Zugriff auf eine SQLite-Datenbank zu geben.
sqlite-mcp/
├── src/
│ └── index.ts # Der MCP-Server Code
├── package.json # Node.js Abhängigkeiten
├── tsconfig.json # TypeScript Konfiguration
├── init_database.sql # SQL-Script zum Erstellen der Datenbank
├── create_database.js # Script zum Initialisieren der Datenbank
└── schule.db # Die SQLite-Datenbank (wird erstellt)
Die Datenbank schule.db enthält vier Tabellen:
- Enthält Informationen über Schüler (Name, Klasse, Geburtsdatum, Email)
- 10 Beispiel-Schüler aus verschiedenen Klassen
- Informationen über Lehrer (Name, Fach, Raum)
- 5 Lehrer mit verschiedenen Fächern
- Kursinformationen (Name, Lehrer, Raum, Zeitplan)
- 5 verschiedene Kurse
- Noten von Schülern in verschiedenen Kursen
- Verschiedene Arten: Klausuren, mündliche Noten, Hausaufgaben
- Node.js (Version 18 oder höher)
- npm (wird mit Node.js installiert)
npm installnode create_database.jsDies erstellt die Datei schule.db mit allen Tabellen und Beispieldaten.
npm run buildDies kompiliert den TypeScript-Code in das build/ Verzeichnis.
-
Öffne die Claude Desktop Konfigurationsdatei:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Windows:
-
Füge den MCP-Server hinzu:
{
"mcpServers": {
"sqlite-schule": {
"command": "node",
"args": [
"C:\\Users\\TABLEERER\\OneDrive - Jakob-Preh-Schule\\Fortbildungen\\Fachgruppe KI\\2025-11-24 AÖ\\SQLite per MCP\\build\\index.js"
]
}
}
}Wichtig: Passe den Pfad in args an deinen tatsächlichen Projektpfad an!
- Starte Claude Desktop neu
Jetzt kannst du Claude in natürlicher Sprache Fragen zur Datenbank stellen, z.B.:
- "Zeige mir alle Schüler aus der Klasse 10a"
- "Welche Kurse gibt es und wer unterrichtet sie?"
- "Was ist der Notendurchschnitt von Max Mustermann?"
- "Liste alle Schüler auf, die eine Note besser als 2.0 haben"
- "Welcher Lehrer unterrichtet Informatik?"
Claude wird automatisch die verfügbaren Tools nutzen:
list_tables- Zeigt alle Tabellendescribe_table- Zeigt die Struktur einer Tabellequery_database- Führt SQL-Abfragen aus
Listet alle Tabellen in der Datenbank auf.
Beispiel:
Welche Tabellen gibt es in der Datenbank?
Zeigt die Struktur (Spalten und Datentypen) einer Tabelle.
Beispiel:
Wie ist die Tabelle 'schueler' aufgebaut?
Führt eine SQL SELECT-Abfrage aus.
Beispiel:
Zeige alle Schüler mit ihren Klassen
Claude wird automatisch die SQL-Abfrage generieren:
SELECT vorname, nachname, klasse FROM schueler-
Einfache Abfragen:
- "Zeige alle Schüler"
- "Liste alle Lehrer auf"
- "Welche Kurse gibt es?"
-
Abfragen mit Bedingungen:
- "Zeige alle Schüler aus Klasse 10a"
- "Welcher Lehrer unterrichtet im Raum B205?"
- "Zeige alle Noten vom 15. Oktober 2025"
-
Komplexe Abfragen (mit JOINs):
- "Zeige alle Noten mit Schülernamen und Kursnamen"
- "Welche Schüler sind in welchen Kursen?"
- "Liste alle Klausurnoten mit Schüler- und Kursinformationen"
-
Aggregationen:
- "Was ist der Notendurchschnitt pro Schüler?"
- "Wie viele Schüler gibt es pro Klasse?"
- "Was ist die beste Note in Mathematik?"
Der MCP-Server erlaubt aus Sicherheitsgründen nur SELECT-Abfragen. Das bedeutet:
- ✅ Daten können gelesen werden
- ❌ Daten können NICHT verändert, gelöscht oder hinzugefügt werden
Dies schützt die Datenbank vor versehentlichen Änderungen.
Durch dieses Projekt lernst du:
- Wie MCP-Server funktionieren
- Wie LLMs mit Datenbanken interagieren können
- Grundlagen von SQL-Abfragen
- TypeScript und Node.js Entwicklung
- Wie man Tools für AI-Assistenten bereitstellt
→ Führe npm install aus
→ Führe node create_database.js aus
→ Überprüfe den Pfad in der claude_desktop_config.json
→ Stelle sicher, dass npm run build erfolgreich war
→ Stelle sicher, dass du Schreibrechte im Projektordner hast
- Erweitere die Datenbank um weitere Tabellen (z.B. Fächer, Stundenplan)
- Füge mehr Beispieldaten hinzu
- Erstelle komplexere SQL-Abfragen
- Implementiere zusätzliche Tools (z.B. für Statistiken)
- Experimentiere mit verschiedenen Fragestellungen an Claude