chess-coach-mcp
Chess Coach Agent — MCP-Integrationsaufgabe
Ein Agent, der einen Link zu einer beendeten Schachpartie (lichess.org) entgegennimmt, die Partie über Playwright MCP abruft, sie mit einem lokalen Stockfish über einen eigenen Chess Mistake Coach MCP-Server analysiert, das Trainingsjournal des Spielers über Obsidian MCP liest/schreibt und einen personalisierten Trainingsplan erstellt: klassifizierte Fehler, passende Taktikaufgaben und Empfehlungen für Lernressourcen.
Claude Agent SDK agent
├── playwright MCP (existing #1, stdio via npx) → fetch game PGN from the link
├── obsidian MCP (existing #2, http, plugin) → read/write training journal
├── coach MCP (custom, stdio, this repo) → analyze_game, find_training_puzzles,
│ recommend_study_resources,
│ generate_puzzle_from_position
└── smartsearch MCP (bonus #4, stdio, vendored) → semantic search over the vault's
150-resource library (optional —
see "Bonus" section below)Voraussetzungen
Python 3.11+
Node.js 18+ (für Playwright MCP:
npx @playwright/mcp)Claude Code CLI nativ installiert (das Claude Agent SDK startet sie; unter Windows muss es eine
claude.exesein, nicht der npm-.cmd-Shim)Stockfish-Binärdatei — herunterladen von https://stockfishchess.org/download/
Obsidian-Desktop-App mit dem Community-Plugin Local REST API (
coddingtonbear/obsidian-local-rest-api, getestet mit v5.1.0)Ein Anthropic-API-Schlüssel (oder die Anmeldung über ein Claude-Abonnement) für das Claude Agent SDK
Installation
python -m venv .venv
.venv/Scripts/pip install -e ".[dev]" # Windows
npx --yes playwright install chromium # browser for Playwright MCPAlle untenstehenden Befehle verwenden explizit .venv/Scripts/python.exe statt eines bloßen python/streamlit, damit sie funktionieren, egal ob die venv in deiner Shell aktiviert ist oder nicht — ein bloßes streamlit run ... würde das Streamlit verwenden, das zuerst in deinem PATH steht, was normalerweise nicht die venv dieses Projekts ist und dem claude-agent-sdk fehlt, was ModuleNotFoundError: No module named 'claude_agent_sdk' verursacht.
Konfiguration
Kopiere .env.example nach .env und fülle Folgendes aus:
Variable | Bedeutung |
| Anmeldedaten für das Claude Agent SDK (nicht nötig, wenn die |
| Endpunkt der Local REST API, Standard |
| Aus Obsidian → Einstellungen → Local REST API |
| Vollständiger Pfad zur ausführbaren Stockfish-Datei |
Obsidian-Einrichtung: Öffne (oder erstelle) einen dedizierten Demo-Vault, installiere und aktiviere das Community-Plugin Local REST API, aktiviere in den Plugin-Einstellungen dessen nicht verschlüsselten HTTP-Server (Port 27123) und kopiere den API-Schlüssel in .env. Ein fertiger Demo-Vault mit einer Player Profile.md und einem TrainingLog/-Ordner wird in docs/demo_script.md beschrieben.
Datensatz: data/puzzles_subset.csv (1.249 Taktikaufgaben, gefiltert aus der CC0-Lichess-Taktikdatenbank) ist im Repository enthalten, sodass der eigene Server zur Laufzeit keinen Netzwerkzugriff benötigt. Um ihn aus der vollständigen Datenbank mit 6 Millionen Zeilen neu zu erzeugen:
python scripts/prepare_puzzle_dataset.pyAusführen — zwei unabhängige Prozesse
Eigener MCP-Server im Standalone-Betrieb (wird während der Verteidigung verwendet, um die Prozesstrennung zu belegen; der Agent startet seine eigene Instanz zusätzlich über stdio):
.venv/Scripts/python.exe -m chess_coach_mcp.serverSkriptgestützter Standalone-Nachweis (Handshake, Tool-Erkennung, ein Aufruf pro Tool sowie ein Fehlerfall mit ungültiger Eingabe):
.venv/Scripts/python.exe scripts/smoke_test_server.pyAgent — CLI (für Verteidigung/Demo empfohlen, da MCP-Verbindungen und Tool-Aufrufe im Terminal sichtbar sind):
.venv/Scripts/python.exe -m chess_coach_agent.cli --game-url "https://lichess.org/787zsVup" --username aanreitaylorOptionen: --username <name> ermittelt deine Farbe aus den PGN-Headern; --color white|black erzwingt sie.
Agent — Web-UI (für den täglichen Gebrauch empfohlen):
.venv/Scripts/python.exe -m streamlit run chess_coach_agent/webapp.pyÖffnet eine Seite unter http://localhost:8501 — füge einen Partielink ein, setze optional deinen Benutzernamen/deine Farbe, klicke auf Analysieren und beobachte den Live-Fortschritt (MCP-Verbindungsstatus, jeder Tool-Aufruf), bevor die Ergebnisse darunter gerendert werden:
den vollständigen Trainingsplan-Bericht als Fließtext;
ein großes Schritt-für-Schritt-Brett pro kritischem Moment (
chess_coach_agent/board_render.py, basierend aufchess.svg, navigiert mit ◀ ▶ statt einer Reihe winziger Vorschaubilder): zuerst den Zug, den du tatsächlich gespielt hast (🔴), dann den Plan der Engine, Zug für Zug fortgesetzt (🟢) — jeder Fehler enthält außerdem eine kurze menschliche Interpretation (💡), die der Agent selbst verfasst (einmove-notes-Block in seiner Antwort, der von der UI extrahiert wird — siehesystem_prompt.py) und die erklärt, was der Plan erreicht und was an dem gespielten Zug konkret schlechter war, nicht nur eine Centipawn-Zahl;falls
generate_puzzle_from_positioneine qualifizierende Taktikaufgabe erzeugt hat, dieselbe Schritt-für-Schritt-Behandlung für ihre forcierte Gewinnfortsetzung;falls die optionale
smartsearch-Verbindung aktiv ist, einen kurzen Bereich „Mehr zum Entdecken“ aus der semantischen Suche über die Ressourcenbibliothek (siehe unten).
Brett- und Taktikdaten stammen direkt aus den Tool-Ergebnissen von analyze_game / generate_puzzle_from_position, die aus dem Nachrichtenstrom erfasst werden — nichts wird aus dem Fließtextbericht neu abgeleitet. Beide Einstiegspunkte nutzen denselben Session-Treiber (chess_coach_agent/core.py); die Web-UI ist lediglich eine Anzeigeschicht darüber, keine separate Implementierung.
Bonus: semantische Suche über die Ressourcenbibliothek (4. MCP-Verbindung)
Über die für die Aufgabe geforderten vorhandenen + eigenen Server hinaus richtet dieses Projekt eine vierte, optionale MCP-Verbindung ein: lokale semantische Suche über die Ressourcenbibliothek mit 150 Einträgen (data/study_resources.json) und das Trainingsjournal, über einen vendored, lokal gepatchten Build des Community-Servers smart-connections-mcp. Er ist rein ergänzend — der Agent nutzt weiterhin das geforderte, deterministische Tool coach.recommend_study_resources als primären Empfehlungspfad; die semantische Suche fügt lediglich ein paar „Das könnte dir auch gefallen“-Ergebnisse hinzu, die über die Bedeutung statt über exakte Themen-Tags gefunden werden. Siehe third_party/smart-connections-mcp/PATCH_NOTES.md für das, was gefunden, gepatcht und verifiziert wurde (zwei echte Bugs im Upstream-Paket), sowie docs/design_rationale.md dafür, warum dies optional ist und nicht zu den bewerteten Pflicht-Tools gehört.
Einmalige Einrichtung (nachdem Obsidian + das Community-Plugin Smart Connections installiert wurden und der Vault mindestens einmal geöffnet wurde):
cd third_party/smart-connections-mcp
npm install
npx tsc
cd ../..
.venv/Scripts/python.exe scripts/build_smartsearch_index.pyWenn dieser Build-Schritt nicht ausgeführt wurde, wird smartsearch einfach aus den MCP-Verbindungen des Agenten ausgelassen (nicht als „fehlgeschlagen“ angezeigt) — alles andere funktioniert weiterhin.
Dokumentation
docs/tool_contracts.md— vollständige Part-C-Verträge für alle 4 eigenen Tools + die verwendeten Tools des vorhandenen Serversdocs/design_rationale.md— warum jeder Server/jedes Tool, Abwägungen, Einschränkungendocs/demo_script.md— Verteidigungs-Checkliste, abgebildet auf die geforderten Demo-Schritte der Aufgabe
Tests
.venv/Scripts/python.exe -m pytestDeckt die Schwellenwerte der Zugklassifizierung, die Filterung von Taktikaufgaben und das Ranking der Ressourcen ab (reine Logik; keine Engine und kein Netzwerk nötig).
Sicherheit / Betriebshinweise
Keine Geheimnisse im Repository: Der Obsidian-API-Schlüssel liegt nur in
.env(per .gitignore ignoriert).Der eigene Server verwendet zur Laufzeit ausschließlich lokale Daten (Stockfish + CSV + JSON).
Playwright wird nur lesend gegen öffentliche Seiten verwendet; keine Logins, keine Formulareingaben.
Ratenbegrenzung: Der Agent lädt pro Lauf ~1 Seite von lichess.org; das Datensatz-Skript lädt eine einzige statische Datei von database.lichess.org herunter.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Hosted MCP memory: save sessions/decisions once, search from Claude, Cursor, ChatGPT. EU-hosted FTS.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/andrii-kondratok/chess-coach-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server