MCP Apps: Wie ein Schachbrett im Chat die Zukunft vorwegnimmt
Ich habe gerade meine erste MCP App veröffentlicht. Ein interaktives Widget, das direkt im Chat lebt — kein Link, kein Tab-Wechsel, kein „öffne mal diese URL”. Du interagierst mit einer grafischen Oberfläche, mitten in der Konversation mit deinem KI-Modell. Und das Modell sieht, was du tust.
Klingt nach einer Spielerei? Ist es nicht. Es ist ein Blick in die Zukunft.
Was sind MCP Apps — und warum ist das ein Riesenschritt?
Viele haben inzwischen von MCP gehört — dem Model Context Protocol. Es ist der offene Standard, über den KI-Modelle mit externen Diensten kommunizieren: Dateien lesen, APIs aufrufen, Datenbanken abfragen. Wer MCP noch nicht auf dem Schirm hat, verschläft gerade etwas Entscheidendes. Aber selbst wer MCP kennt, hat möglicherweise die nächste Stufe verpasst.
Denn das „normale” MCP ist unsichtbar. Es passiert im Hintergrund. Das Modell ruft ein Tool auf, bekommt Daten zurück, verarbeitet sie, gibt dir Text aus. Du merkst davon nichts — außer dass die Antwort plötzlich auf deine echten Daten zugreift.
MCP Apps gehen einen gewaltigen Schritt weiter: Sie liefern eine grafische Benutzeroberfläche direkt in den Chat.
Nicht als Link. Nicht als Bild. Als interaktives Widget, das in einem sandboxed iframe lebt und mit dem du arbeiten kannst — klicken, ziehen, tippen. Die App kommuniziert bidirektional mit dem KI-Modell: Du machst etwas in der App, das Modell sieht es. Das Modell ruft ein Tool auf, die App reagiert.
Das klingt nach einem kleinen technischen Detail. Es ist keins. Es ist der Moment, in dem das Chat-Interface aufhört, nur ein Textfenster zu sein — und anfängt, ein universelles Werkzeug zu werden.
Der Connector-Moment: Eine URL, und dann nie wieder
Heute rufen wir für jeden Dienst eine eigene URL auf. Trello für Projektmanagement, Google Calendar für Termine, Lichess für Schach, Notion für Notizen. Jede App hat ihre eigene Oberfläche, ihre eigenen Konventionen, ihre eigene Lernkurve.
Mit MCP Apps ändert sich das fundamental. Du gibst eine URL einmal ein — als Connector. Danach lebt der Dienst in deinem Chat. Du fragst nicht mehr „Wo war nochmal dieses Board?”, du sagst einfach: „Zeig mir die Stellung mit Dame gegen Turm” — und ein interaktives Brett erscheint. Mit allen Figuren. Spielbar.
Anthropic macht es mit den hauseigenen Integrationen vor: Google Calendar, Gmail, Slack — alles direkt im Chat, über MCP Apps. Kein Tab-Wechsel, kein Kontextverlust.
Und jetzt kann das jeder bauen.
Wer unterstützt MCP Apps?
MCP Apps wurden am 26. Januar 2026 als offizielle Erweiterung zum MCP-Standard veröffentlicht. Anthropic und OpenAI haben den Standard gemeinsam entwickelt — ein bemerkenswerter Moment der Zusammenarbeit zwischen Wettbewerbern.
Unterstützung gibt es aktuell in:
- Claude.ai (Web, Desktop, Mobile)
- ChatGPT (OpenAI hat zeitgleich Support angekündigt)
- VS Code mit GitHub Copilot (Insiders)
- Goose, Postman und weitere
Das Ökosystem wächst rapide. Wer heute eine MCP App baut, baut nicht nur für eine Plattform.
Meine erste MCP App: Ein Schachbrett
Ich arbeite seit einiger Zeit an Schachmentor, einem Schach-Eröffnungstrainer mit Sprachcoaching. Als MCP Apps angekündigt wurden, war klar: Das interaktive Brett muss in den Chat.
Die Idee: Ein Widget, auf dem Claude Endspielstellungen aufbaut. Du spielst gegen Stockfish. Claude coacht dich, erklärt Motive, korrigiert Fehler. Alles in einem Gespräch.
Die Umsetzung: Ein Express-Server mit MCP SDK, zehn Tools (von show_board bis evaluate_position), ein React-Frontend das via Vite in eine einzige HTML-Datei gebündelt und als ui://-Resource ausgeliefert wird. Plus ein Skill — eine Prompting-Anleitung, die Claude beibringt, wie es den Endspieltrainer führt.
Klingt straightforward? War es nicht.
Abenteuer Bleeding Edge: Was ich beim Bauen gelernt habe
Abend 1: Es lebt! (Irgendwie.)
Am 20. März ging der erste Commit raus. Ein MCP-Server, ein Schachbrett im Chat, Drag&Drop. Die Euphorie hielt ungefähr zehn Minuten — dann sah ich, dass Claude enthusiastisch drei Bretter gleichzeitig in den Chat spamte, jedes Mal wenn es eine Stellung zeigen wollte.
Erste Lektion: Nur ein Tool darf UI rendern. Alle anderen müssen Non-UI-Tools sein, die im Hintergrund arbeiten. Das klingt offensichtlich, aber wenn dein System zehn Tools hat und das Modell kreativ wird, musst du das explizit durchsetzen.
Gleicher Abend, drei Stunden später: Der Computer schweigt
Das Brett stand, Figuren ließen sich ziehen, aber nach meinem Zug: Stille. Der Stockfish-Gegenzug kam nie. Der Grund war subtil — computer_move versuchte die Server-Session zu nutzen, aber die App sendete die FEN direkt mit. Die Lösung war ein stateless Design: Jeder computer_move-Aufruf erstellt eine frische chess.js-Instanz aus der übergebenen FEN. Kein Session-State, kein Sync-Problem.
Commit 5b2baab: Erste spielbare Version. Dieses Commit-Gefühl kennt jeder Entwickler — wenn nach Stunden Debugging zum ersten Mal alles zusammenspielt.
Nächster Abend: Claude halluziniert
Claude ist brillant in vielen Dingen. Legale Schachstellungen generieren gehört nicht dazu. Ein König im Schach, der gar nicht am Zug ist. Zwei Könige auf benachbarten Feldern. Eine Dame, die den gegnerischen König bereits angreift, bevor der Spieler überhaupt ziehen konnte.
Die Lösung war zweigleisig: Strenge Validierung auf dem Server (nicht nur Syntax, sondern auch Legalität) — und ein Skill, der Claude Schritt für Schritt durch die Datengenerierung führt. Eine Checkliste, die das Modell vor jedem Tool-Aufruf abarbeiten muss. Das ist ein Muster, das über Schach hinaus relevant ist: Wenn ein KI-Modell strukturierte Daten erzeugen soll, braucht es sowohl serverseitige Validierung als auch Prompting-Leitplanken.
Wochenende: CSS im Sandkasten
Das Widget erschien — mal riesig, mal winzig, mal als schmaler Streifen. CSS im iframe verhält sich anders als erwartet, besonders wenn der Host eigene Layout-Constraints hat. Die Lösung war brutal pragmatisch: 300x300 Pixel, fest. Keine responsive Magie, kein aspect-ratio, kein maxWidth. Einfach eine feste Größe, die zuverlässig in das iframe-Fenster passt.
Wer schon mal eine Embed-Komponente für fremde Hosts gebaut hat, kennt dieses Gefühl: Du kontrollierst deinen Code, aber nicht das Umfeld, in dem er läuft.
Irgendwann zwischendrin: Die Geister, die man nicht rief
Eines Abends funktionierte plötzlich gar nichts mehr. Der MCP-Endpoint war erreichbar, der Server lief, aber Claude.ai meldete: „MCP nicht verfügbar.” Stundenlange Fehlersuche — bis wir begriffen, dass das Problem nicht bei uns lag.
Claude.ai selbst entwickelt sich weiter. Die MCP-App-Anbindung ist neu, und manchmal ändert sich auf der Plattformseite etwas. Ein Health-Check, der gestern funktionierte, bekommt heute ein anderes Response-Format. Ein Session-Handshake, der morgens durchging, scheitert nachmittags.
Das ist das Wesen von Bleeding Edge: Du baust auf einem Fundament, das sich unter deinen Füßen bewegt. Frustrierend? Ja. Aber auch aufregend. Denn wenn du heute dabei bist, formst du mit, wie diese Technologie funktioniert.
Nach der Grippe: Die Feinarbeit
Dark Mode, Farbanpassungen, Style-Korrekturen — die kleinen Dinge, die aus einem Prototypen ein Produkt machen. Ein Widget, das auf einem dunklen UI-Hintergrund blendend weiß leuchtet, fühlt sich kaputt an, auch wenn es technisch funktioniert. prefers-color-scheme erkennt automatisch die Umgebung, ein zusätzlicher Parameter erlaubt dem Modell, den Modus zu überschreiben.
Donnerstagabend: Das Mobile-Drama
Das Widget funktionierte auf dem Desktop perfekt. Auf dem Handy? Unmöglich, irgendetwas zu bedienen. Jeder Touch auf das Widget wurde vom Chat-Container als Scroll-Geste interpretiert. Egal wo der Finger landete — der Chat scrollte, und die App ignorierte alles.
Erster Versuch: touch-action: none auf dem Container. Commit, Build, Restart. Keine Wirkung.
Zweiter Versuch: touch-action: none auf dem gesamten iframe-Dokument, plus aktives preventDefault() auf allen Touch-Events. Keine Wirkung.
Die Erkenntnis nach zwei Tagen: Nichts, was innerhalb eines sandboxed iframes passiert, kann das Scroll-Verhalten des übergeordneten Containers beeinflussen. Das ist eine Browser-Sicherheitsgrenze. Der Parent-Frame fängt den Touch ab, bevor er den iframe erreicht. CSS, JavaScript, Event-Handler — alles irrelevant.
Die Lösung war ein Paradigmenwechsel: Tap statt Drag. Tippe auf ein Element — es wird markiert. Tippe auf das Ziel — die Aktion wird ausgeführt. Kein Drag nötig, also kein Scroll-Konflikt. Auf Desktop funktioniert Drag&Drop weiterhin.
Manchmal ist die eleganteste Lösung nicht die, die das ursprüngliche Problem behebt — sondern die, die es umgeht. Und diese Erkenntnis gilt für jede MCP App, die Touch-Interaktion braucht: Vergesst Drag&Drop im iframe. Tap-to-Act ist der Weg.
Das Skill-System: Dem Modell beibringen, was es tun soll
Eine MCP App allein ist ein Werkzeug. Ein Werkzeug plus ein Skill ist ein Erlebnis.
Ein Skill im Kontext von Claude.ai ist eine Textdatei — im Wesentlichen eine strukturierte Anweisung, die Claude sagt, wie es die Tools nutzen soll. Mein Endspiel-Trainer-Skill enthält:
- Einen Katalog von Übungstypen mit steigender Schwierigkeit
- Regeln für die Datengenerierung (Validierung, Constraints, Randfälle)
- Einen Coaching-Flow (Aufgabe zeigen, machen lassen, Tipps geben, nächste Aufgabe)
Das Geniale daran: Jeder kann eigene Skills schreiben. Ohne eine Zeile Code zu ändern. Die App ist da, die Tools sind da — alles was fehlt, ist eine Anleitung an das Modell, was es damit tun soll. Allein für mein Schachbrett fallen mir spontan ein halbes Dutzend weitere Skills ein: Eröffnungstrainer, Taktiktrainer, Motiverkennung, Mittelspielstrategie, Turniervorbereitung.
Ein Widget. Unendliche Möglichkeiten. Und dafür braucht es keinen Entwickler — nur jemanden, der weiß, was er trainieren will, und es in Worte fassen kann.
Probier es selbst aus
Das Martuniboard ist öffentlich. Du kannst es jetzt in deinem Claude.ai einrichten:
MCP-Server verbinden
- Öffne claude.ai
- Klicke auf Anpassen (linke Seitenleiste) → Konnektoren
- Klicke auf + (oben rechts) → Eigene Integration
- Gib als Name
MartuniBoardein und als URL:
https://mcp.martuni.de/martuniboard/mcp- Fertig. In jedem neuen Chat stehen dir jetzt die Schach-Tools zur Verfügung.
Endspiel-Trainer-Skill installieren
- Lade die Skill-Datei herunter: SKILL.md
- Lade die
SKILL.mdin Claude.ai hoch (als Anhang im Chat oder in einem Projekt) - Sage: „Lass uns Endspiele trainieren”
Claude kennt dann den Katalog, weiß wie es legale Stellungen generiert, und führt dich durch das Training — mit interaktivem Brett. Du brauchst kein Projekt dafür: Sobald der Connector eingerichtet und der Skill bekannt ist, reicht ein normaler Chat.
Der Endspiel-Trainer in claude.ai: Coaching-Text, Stellungsbeschreibung und interaktives Board in einer Konversation. Turm und König gegen König — „etwas anspruchsvoller als mit der Dame”, findet Claude.
Der Blick nach vorn
Was mich an MCP Apps so begeistert, ist nicht das Schachbrett. Es ist das, was dahinter steckt: Die Idee, dass das Chat-Interface — dieses eine Fenster, vor dem wir ohnehin den ganzen Tag sitzen — zum universellen Werkzeug wird.
Heute muss ich als Privatperson noch eine URL manuell als Connector eintragen und einen Skill als Datei hochladen. Das funktioniert, ist aber nicht elegant. Ich hoffe auf den Tag, an dem ich ein MCP-App-Bundle schnüren kann — Server-URL, Skills und Tool-Definitionen in einem Paket — und es mit einem Klick teilbar ist. So wie Anthropic es mit den hauseigenen Integrationen vormacht.
Aber selbst jetzt, mit diesem manuellen Setup, funktioniert es. Und es funktioniert gut genug, um zu zeigen: Jetzt ist die Zeit, einzusteigen. Nicht nächsten Monat. Nicht wenn es bequemer wird. Jetzt. Denn wer heute auf diesem Fundament baut, versteht morgen, wohin die Reise geht.
Eine persönliche Anmerkung
Ich programmiere seit 26 Jahren. Ich habe vieles gesehen kommen und gehen — Frameworks, Paradigmen, Plattformen. Aber so viel Freude wie in den letzten Wochen hatte ich beim Programmieren noch nie.
Das liegt an Claude Code. Nicht weil es mir die Arbeit abnimmt — sondern weil es meine Kreativität auf ein Level hebt, das ich allein nicht erreichen würde. Die Idee für das Schachbrett hatte ich. Aber die Umsetzung — zehn MCP-Tools, Stockfish-Integration, React im iframe, Session-Management, Validierung, Dark Mode, Tap-to-Move — das wäre ein Projekt für Wochen gewesen. Stattdessen war es ein Feierabend-Projekt über eine knappe Woche, davon zwei Tage flachgelegt mit Grippe. Die tatsächliche Arbeitszeit verteilt sich auf ein paar Abende und ein Wochenende. Mit einem Partner, der nie müde wird und der um Mitternacht genauso scharf denkt wie um acht Uhr morgens.
Die Git-Historie dieses Projekts hat 18 Commits. Jeder einzelne trägt die Zeile Co-Authored-By: Claude. Das ist keine Floskel. Es ist die Wahrheit. Dieses Projekt haben wir zusammen gebaut — Claude und ich.
Das Martuniboard ausprobieren: mcp.martuni.de/martuniboard/mcp
Endspiel-Trainer-Skill: SKILL.md herunterladen
Der Code: Das Projekt ist Teil von Schachmentor und wird aktiv weiterentwickelt.
| Impressum | Feedback | Mein GitHubRSS