Warum deine KI plötzlich rechnen kann – und wie du die Kontrolle behältst
Du arbeitest mit einem KI-Assistenten wie Claude, Gemini oder ChatGPT und möchtest, dass er echte Berechnungen durchführt – etwa Zahlen aus deiner Datenbank addieren oder Benutzerdaten abrufen. Das ist mit dem Model Context Protocol (MCP) schon heute möglich. MCP ist ein offener Standard, der KI-Anwendungen den Zugriff auf externe Werkzeuge erlaubt – ähnlich wie ein Betriebssystem Treiber für Hardware bereitstellt. In diesem Beitrag bauen wir einen eigenen MCP-Server mit einem Taschenrechner-Tool, hosten ihn auf Cloudflare Workers und rüsten eine OAuth 2.1-Authentifizierung nach. Am Ende verstehst du die Zusammenhänge und hast einen einsatzbereiten Prototypen.
Das Fundament: Ein Cloudflare Worker als MCP-Server
Der Autor beginnt mit einem fast leeren Cloudflare Worker, den man über die Kommandozeile mit dem Hello World-Template für TypeScript anlegt. Nach der Einrichtung liegt der Code in src/index.ts. Um daraus einen MCP-Server zu machen, installiert er drei Abhängigkeiten: das offizielle @modelcontextprotocol/sdk, Cloudflares agents-Bibliothek (die einen Adaptor für MCP bereitstellt) und zod zur Validierung von Eingaben. Diese Pakete übernehmen den Großteil der Implementierung – du konzentrierst dich auf die eigentlichen Werkzeuge, sogenannte Tools.
Das erste Tool: Ein Calculator mit Persönlichkeit
Ein MCP-Tool ist wie ein kleiner API-Endpunkt. Es besteht aus Namen, Beschreibung, Eingabe-Schema (definiert mit Zod) und einer Handler-Funktion. Der Autor zeigt das an einem Taschenrechner-Tool, das Addition, Subtraktion, Multiplikation und Division zweier Zahlen beherrscht. Die Handler-Funktion ermittelt anhand eines übergebenen Operators die richtige Operation und gibt das Ergebnis als Text zurück. Fehler wie eine Division durch Null werden abgefangen. Wichtig: Für jede eingehende Anfrage wird eine neue Instanz des MCP-Servers erzeugt – das verhindert, dass Daten zwischen Sitzungen durchsickern.
Damit der Worker die MCP-Anfragen annimmt, wird der MCP-Server an die fetch-Funktion des Workers angebunden. Der Pfad lautet /mcp. Fertig ist der erste funktionsfähige MCP-Server. Der Autor testet ihn direkt mit Claude Desktop, indem er in den Einstellungen einen neuen Connector anlegt – Name: „Calculator“, URL: die Adresse des laufenden Workers plus /mcp. Der lokale Worker läuft meist unter http://localhost, und nicht jeder KI-Client akzeptiert unsichere Verbindungen. Abhilfe schaffen ein HTTPS-Tunnel via ngrok oder das Deployment des Workers über pnpm run deploy. Nach dem Einrichten fragt der Autor Claude: „Addiere 5 und 8“. Claude erkennt das Tool, ruft es mit den richtigen Argumenten auf, der Server antwortet mit 13, und Claude präsentiert das Ergebnis – ein Kreislauf, der auf klaren Protokollen beruht.
Hinter den Kulissen: JSON-RPC im Detail
Die Kommunikation zwischen KI-Client und MCP-Server läuft über JSON-RPC, ein schlankes Protokoll für entfernte Prozeduraufrufe. Der Autor zeigt die tatsächlichen Anfragen, die Claude sendet. Zuerst fragt der Client tools/list ab: Der Server antwortet mit Namen, Beschreibung und Eingabe-Schema des verfügbaren Tools. Anhand dieser Metadaten entscheidet die KI, wann und wie das Tool einzusetzen ist. Bei der eigentlichen Aktion schickt Claude einen tools/call-Request mit den konkreten Parametern – in unserem Fall die Zahlen und die gewünschte Operation. Der Server führt die Berechnung aus und sendet das Ergebnis zurück. Dieses Zusammenspiel ist erweiterbar: Neue Tools lassen sich durch Hinzufügen weiterer Definitionen integrieren.
Warum ein offener MCP-Server riskant sein kann
Bisher kann jeder, der die URL kennt, den Taschenrechner benutzen. Für öffentliche Daten wie Wetter- oder Dokumentations-APIs ist das in Ordnung. Sobald persönliche oder geschäftskritische Daten ins Spiel kommen, brauchst du eine Zugriffskontrolle. Der Autor zeigt, was passiert, wenn der Server einfach einen 401 Unauthorized zurückgibt: Claude reagiert mit mehreren Folgeanfragen – es versucht den Protected Resource Metadata Endpoint, dann den Authorization Server Metadata Endpoint und schließlich eine Dynamic Client Registration. All das sind erratische Versuche, die fehlschlagen, weil die entsprechenden Endpunkte nicht existieren. Ein schlichter 401 reicht nicht; der Server muss dem Client mitteilen, wo er gültige Zugangsdaten bekommt.
OAuth 2.1 als Türsteher für deine KI-Tools
Hier kommt OAuth 2.1 ins Spiel, der aktuelle Standard für sichere Autorisierung. Der MCP-Server muss dem Client über den HTTP-Header WWW-Authenticate mitteilen, wo sich die Protected Resource Metadata (PRM) befindet. Diese PRM wiederum enthält die URL des Authorization Servers. Der Autor nutzt für diesen Teil PropelAuth, einen Dienst, der mit wenigen Klicks einen vollständigen OAuth 2.1-konformen Autorisierungsserver bereitstellt. Nach der Aktivierung der MCP-Unterstützung in der PropelAuth-Oberfläche legt der Autor anwendungsspezifische Scopes an – etwa op:add, op:sub, op:mult und op:div. Scopes sind wie Berechtigungsstempel: Ein Client kann nur dann eine bestimmte Rechenoperation ausführen, wenn der Benutzer dem entsprechenden Scope zugestimmt hat.
Den MCP-Server mit dem Authorization Server verbinden
Jetzt wird der MCP-Server mit dem PropelAuth-Authorization Server verknüpft. Dazu implementiert der Autor den PRM-Endpunkt, der die Adresse des Authorization Servers sowie die unterstützten Scopes auflistet. Außerdem korrigiert er den 401-Header, sodass Claude den PRM-Endpunkt direkt findet – ohne Rätselraten. Nach dem Neustart des Connectors in Claude Desktop öffnet sich ein Browserfenster mit dem PropelAuth-Login. Nach erfolgreicher Anmeldung wird der Benutzer aufgefordert, den angeforderten Scopes zuzustimmen. Erst nach dieser Zustimmung erhält der Client ein Access Token, das er bei jeder weiteren Anfrage mitschickt.
Der letzte Schritt ist die Validierung des Tokens auf Serverseite. Der Autor implementiert eine Funktion, die das Access Token aus dem Authorization-Header extrahiert und an den Token Introspection Endpoint von PropelAuth sendet. Dieser Endpunkt prüft, ob das Token gültig ist, wem es gehört und welche Scopes der Benutzer freigegeben hat. Der MCP-Server extrahiert diese Informationen in ein benutzerdefiniertes User-Objekt und leitet es an die Tool-Handler weiter. Innerhalb des Calculator-Tools wird dann geprüft, ob der Benutzer den erforderlichen Scope für die gewünschte Operation besitzt – etwa op:add für Addition. Fehlt die Berechtigung, lehnt der Server die Anfrage ab.
Der vollständige authentifizierte Workflow
Mit allen Komponenten ergibt sich ein klarer Ablauf: Ein Benutzer verbindet Claude Desktop mit dem MCP-Server. Claude fragt /mcp ab und erhält einen 401 mit dem PRM-Link. Daraufhin lädt Claude die PRM, identifiziert den Authorization Server und startet den OAuth-Flow über den Browser des Benutzers. Nach Login und Zustimmung erhält Claude ein Token. Mit diesem Token ruft Claude tools/list auf – der Server validiert das Token und gibt die Liste erlaubter Tools zurück. Schließlich ruft Claude tools/call für die gewünschte Rechnung auf, das Token wird erneut geprüft, und nur wenn die Scopes passen, darf gerechnet werden. Der gesamte Vorgang ist für den Benutzer weitgehend unsichtbar, bis auf den Login-Schritt.
Was bedeutet das für dich?
Der Autor zeigt, dass die Kombination aus MCP, Cloudflare Workers und einem modernen Autorisierungsdienst wie PropelAuth eine schlanke, aber leistungsfähige Plattform für KI-gestützte Tools ergibt. Du musst kein OAuth-Experte sein, um geschützte MCP-Server zu betreiben – die Spezifikationen sind ausgereift, die Bausteine liegen bereit. Wichtig ist, dass du die Prinzipien verstehst: Jeder MCP-Client muss sich über OAuth 2.1 authentifizieren, und jeder Tool-Zugriff kann feingranular über Scopes gesteuert werden. Das ist eine solide Basis für Produktivumgebungen. In Zukunft werden immer mehr KI-Clients MCP unterstützen, und wer heute die Grundlagen beherrscht, ist für die nächste Welle der Mensch-Maschine-Interaktion gerüstet. Bau dir deinen eigenen MCP-Server, mach ihn sicher und lass die KI für dich rechnen – aber nur mit deiner Erlaubnis.
Quelle: propelauth.com
