3. Semester · Zusatz-Unterrichtsblock · 90 Minuten
Model Context Protocol (MCP)
Wie KI-Anwendungen über einen einheitlichen Standard auf Werkzeuge, Datenquellen und wiederverwendbare Prompts zugreifen – von der Architektur bis zum ersten eigenen Python-Tool.
Kursinhalte und Ablauf
Dieser Unterrichtsblock ist für zwei Schulstunden (90 Minuten) geplant. Am Ende könnt ihr MCP erklären, Host, Client und Server unterscheiden, Tools, Resources und Prompts zuordnen sowie ein einfaches MCP-Tool in Python entwerfen.
| Zeit | Phase | Inhalt |
|---|---|---|
| 0–10 Min. | Einstieg | Warum ein KI-Modell ohne Schnittstellen keine Dateien lesen oder Systeme bedienen kann |
| 10–25 Min. | Grundlagen | Definition, Nutzen und Abgrenzung zu API und LLM |
| 25–40 Min. | Architektur | Host, Client, Server sowie Tools, Resources und Prompts |
| 40–50 Min. | Übung 1 | MCP-Bausteine richtig zuordnen |
| 50–75 Min. | Praxis | Ein kleines MCP-Tool planen und in Python umsetzen |
| 75–85 Min. | Sicherheit | Berechtigungen, Freigaben und sichere Server |
| 85–90 Min. | Abschluss | Exit-Ticket und Ergebnissicherung |
Lernziele
- Ihr erklärt MCP in eigenen Worten.
- Ihr beschreibt den Weg von einer Nutzeranfrage bis zum Werkzeugergebnis.
- Ihr unterscheidet Tool, Resource und Prompt.
- Ihr erkennt typische Sicherheitsrisiken.
- Ihr erstellt ein minimales MCP-Tool mit Python.
Was ist MCP?
MCP steht für Model Context Protocol. Es ist ein offener Standard, mit dem KI-Anwendungen kontrolliert auf externe Systeme zugreifen können. Solche Systeme können Dateien, Datenbanken, Suchdienste, Kalender, Entwicklungswerkzeuge oder eigene Unternehmensanwendungen sein.
Merksatz: MCP ist wie ein einheitlicher Anschluss für KI-Anwendungen. Ein MCP-Server beschreibt, welche Daten und Aktionen er anbietet. Eine kompatible KI-Anwendung kann diese Angebote entdecken und verwenden.
Warum braucht man MCP?
Ein Sprachmodell erzeugt zunächst nur Text. Es kennt nicht automatisch den aktuellen Inhalt einer Datei und kann nicht selbstständig einen Kalendereintrag anlegen. Über MCP erhält die KI klar beschriebene und begrenzte Fähigkeiten.
- Ohne MCP: Für jedes System wird eine eigene, individuelle Integration programmiert.
- Mit MCP: Ein Server stellt seine Fähigkeiten standardisiert bereit und kann von unterschiedlichen MCP-Hosts genutzt werden.
- Wichtig: MCP ersetzt weder das Sprachmodell noch die eigentliche API. Es standardisiert die Kommunikation dazwischen.
Ein einfaches Beispiel
Die Anfrage „Welche Aufgaben sind heute noch offen?“ kann ein Sprachmodell allein nicht zuverlässig beantworten. Ein Aufgabenverwaltungs-MCP-Server könnte jedoch eine Resource mit Projektdaten und ein Tool zum Suchen offener Aufgaben anbieten. Die KI wählt die passende Fähigkeit, erhält das Ergebnis und formuliert daraus eine verständliche Antwort.
Erklärgrafik: Die MCP-Architektur
Der Host ist die KI-Anwendung. Er koordiniert das Sprachmodell und einen eigenen MCP-Client je verbundenem Server. Der MCP-Server kapselt den Zugriff auf externe Systeme und gibt nur klar definierte Fähigkeiten frei.
Erklärgrafik: Tools, Resources und Prompts
Die drei zentralen serverseitigen Bausteine haben verschiedene Aufgaben: Tools führen Aktionen aus, Resources liefern Kontext und Prompts stellen wiederverwendbare Anleitungen bereit.
Erklärgrafik 3
Vom Auftrag zum Ergebnis
MCP trennt Sprachverständnis, Verbindungsverwaltung und eigentliche Programmlogik.
-
1. Nutzerauftrag
Der Nutzer beschreibt sein Ziel in natürlicher Sprache.
Ergebnis: Ziel ist bekannt
-
2. Fähigkeiten entdecken
Der Client fragt ab, welche Tools, Resources und Prompts der Server anbietet.
Ergebnis: Angebote sind bekannt
-
3. Werkzeug auswählen
Die KI-Anwendung wählt eine passende Fähigkeit und bereitet die Argumente vor.
Ergebnis: Strukturierter Aufruf
-
4. Freigabe prüfen
Bei sensiblen Aktionen werden Berechtigung und gegebenenfalls Nutzerbestätigung geprüft.
Ergebnis: Aufruf ist erlaubt
-
5. Server ausführen
Der MCP-Server validiert die Eingaben und spricht das externe System an.
Ergebnis: Strukturiertes Ergebnis
-
6. Antwort formulieren
Das Ergebnis wird in den Gesprächskontext übernommen und verständlich erklärt.
Ergebnis: Antwort für den Nutzer
Transport, Protokoll und Sicherheit
Wie werden Nachrichten übertragen?
| Transport | Typischer Einsatz | Eigenschaft |
|---|---|---|
| stdio | Lokaler MCP-Server | Kommunikation über Standardeingabe und Standardausgabe zwischen zwei Prozessen |
| Streamable HTTP | Remote-MCP-Server | HTTP POST; optional Streaming über Server-Sent Events; Authentifizierung für entfernte Systeme |
Auf der Datenebene verwendet MCP strukturierte JSON-RPC-2.0-Nachrichten. Vor der Nutzung kann der Client die Fähigkeiten des Servers entdecken. Dadurch muss er nicht raten, welche Werkzeuge existieren oder welche Parameter sie benötigen.
Sicherheitsregeln
- Nur MCP-Server aus vertrauenswürdigen Quellen verbinden.
- Nach dem Prinzip der minimalen Rechte arbeiten: nur notwendige Ordner, Daten und Aktionen freigeben.
- Schreib-, Lösch- und Versandaktionen vor der Ausführung sichtbar bestätigen lassen.
- Zugangsdaten nie fest in den Quellcode schreiben; sichere Umgebungsvariablen oder einen Secret-Speicher verwenden.
- Eingaben serverseitig validieren und Ausgaben protokollieren, ohne Geheimnisse in Logs zu speichern.
- Bei einem stdio-Server keine normalen print()-Ausgaben verwenden, weil stdout für die Protokollnachrichten gebraucht wird. Logs gehören nach stderr.
Grundregel: Ein MCP-Server läuft mit echten Rechten. Je mächtiger ein Tool ist, desto strenger müssen Prüfung, Freigabe und Protokollierung sein.
Praxis: ein minimales MCP-Tool mit Python
Das folgende Beispiel stellt ein Tool namens addiere bereit. Python-Typangaben und der Docstring helfen dem SDK dabei, eine verständliche Werkzeugbeschreibung zu erzeugen.
Projekt vorbereiten
Terminal
uv init schul-mcp
cd schul-mcp
uv venv
uv add "mcp[cli]"
Datei server.py
from mcp.server import MCPServer
mcp = MCPServer("schul-mcp")
@mcp.tool()
async def addiere(a: float, b: float) -> float:
"""Addiert zwei Zahlen."""
return a + b
if __name__ == "__main__":
mcp.run(transport="stdio")
Start mit uv run server.py. Bei stdio bleibt das Programm anschließend scheinbar still, weil es auf Protokollnachrichten eines MCP-Clients wartet. Zum Prüfen kann der MCP Inspector oder ein bereits eingerichteter MCP-Host verwendet werden.
Was entsteht automatisch?
- Werkzeugname: addiere
- Parameter: a und b als Zahlen
- Beschreibung: aus dem Docstring
- Rückgabewert: eine Zahl
Übungsaufgaben – Grundlagen
Aufgabe 1: Tool, Resource oder Prompt? (10 Minuten)
Ordnet jede Fähigkeit einem der drei MCP-Bausteine zu und begründet eure Entscheidung mit einem Satz.
- Den Inhalt einer Schulordnung als PDF bereitstellen
- Einen Kalendereintrag anlegen
- Eine Vorlage für die strukturierte Zusammenfassung einer Unterrichtsstunde anbieten
- Den aktuellen Lagerbestand aus einer Datenbank abrufen
- Eine E-Mail versenden
- Eine wiederverwendbare Code-Review-Anweisung bereitstellen
Abgabe: Tabelle mit Beispiel, Zuordnung und Begründung.
Aufgabe 2: Entwerft ein MCP-Tool (10 Minuten)
Entwerft in Zweiergruppen ein Tool für den Schulalltag, zum Beispiel note_speichern, raum_finden oder termin_anlegen. Definiert:
- einen eindeutigen Werkzeugnamen,
- eine kurze Beschreibung,
- notwendige Eingabeparameter mit Datentypen,
- den Rückgabewert,
- mögliche Fehlerfälle,
- ob vor der Ausführung eine Bestätigung nötig ist.
Zusatzfrage: Welche Daten dürfte euer Tool ausdrücklich nicht erhalten?
Übungsaufgaben – Umsetzung und Sicherheit
Aufgabe 3: Erweitert den Python-Server (25 Minuten)
Übernehmt den Startercode und ergänzt mindestens zwei weitere Tools:
- multipliziere(a, b) gibt das Produkt zweier Zahlen zurück.
- begruesse(name) gibt eine freundliche Begrüßung zurück.
- Freiwillig: teile(a, b) verhindert eine Division durch null und liefert eine verständliche Fehlermeldung.
Anforderungen
- Jedes Tool besitzt passende Typangaben.
- Jedes Tool besitzt einen klaren Docstring.
- Werkzeugnamen beschreiben die Aktion eindeutig.
- Mindestens ein möglicher Fehler wird kontrolliert behandelt.
Ergebnissicherung: Notiert für jedes Tool Name, Eingaben, Ausgabe und einen Testfall.
Aufgabe 4: Sicherheitsprüfung (10 Minuten)
Bewertet die folgenden Situationen mit unbedenklich, prüfen oder gefährlich. Begründet jede Entscheidung.
- Ein unbekannter lokaler Server verlangt Zugriff auf den gesamten persönlichen Benutzerordner.
- Ein Lesetool darf ausschließlich einen freigegebenen Kursordner öffnen.
- Ein Tool löscht Dateien sofort, ohne den Zielpfad anzuzeigen.
- Ein API-Schlüssel steht direkt im öffentlich geteilten Python-Code.
- Vor dem E-Mail-Versand werden Empfänger und Inhalt angezeigt und bestätigt.
Abschluss: Formuliert drei Regeln für einen sicheren MCP-Server.
Abschluss und Quellen
Exit-Ticket (5 Minuten)
- Erkläre MCP in höchstens zwei Sätzen.
- Nenne den Unterschied zwischen einem Tool und einer Resource.
- Nenne eine Sicherheitsmaßnahme, die du bei einem MCP-Server immer prüfen würdest.
Das Wichtigste in Kürze
- MCP ist ein offener Standard zur Verbindung von KI-Anwendungen mit Daten und Aktionen.
- Ein Host verwaltet MCP-Clients; jeder Client verbindet sich mit einem MCP-Server.
- Server können Tools, Resources und Prompts bereitstellen.
- Lokale Verbindungen nutzen häufig stdio, entfernte Server häufig Streamable HTTP.
- Standardisierung ersetzt keine Sicherheitsprüfung.
Weiterführende offizielle Quellen
- Einführung in MCP
- MCP-Architektur
- Offizielles Tutorial: MCP-Server entwickeln
- MCP Inspector
- Security Best Practices
Fachstand: September 2026, Protokollfassung 2026-07-28.
