Chess Coach MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LICHESS_TOKEN | No | Personal API token for higher Lichess rate limits | |
| STOCKFISH_PATH | No | Path to a Stockfish binary | auto-detect |
| CHESS_COACH_CACHE_DIR | No | Where games, reports and the engine are stored | ~/.cache/chess-coach-mcp (%LOCALAPPDATA% on Windows) |
| CHESS_COACH_ENGINE_HASH | No | Stockfish hash table in MB | 128 |
| CHESS_COACH_REFINE_DEPTH | No | Depth used to double-check suspicious moves | 18 |
| CHESS_COACH_AUTO_DOWNLOAD | No | Download Stockfish automatically if none is found | 1 |
| CHESS_COACH_DEFAULT_DEPTH | No | Search depth for the first pass over every move | 14 |
| CHESS_COACH_ENGINE_THREADS | No | Stockfish threads | half your cores (1-4) |
| CHESS_COACH_TIME_PER_POSITION | No | Max seconds per position in the first pass | 0.5 |
| CHESS_COACH_REFINE_TIME_PER_POSITION | No | Max seconds per position when double-checking | 2.0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_recent_gamesA | List a player's most recent games from Lichess or Chess.com. Returns one entry per game with the game_id (use it with analyze_game / find_blunders), the opponent, the result from the player's point of view, the opening and the date. Games are cached locally so later tools can find them by id. Args: username: The player's username on the chosen platform. platform: "lichess" (default) or "chesscom". count: How many games to return (1-100). |
| analyze_gameA | Run a full engine analysis of one game and classify every move. Returns evaluation before/after each move, centipawn loss, a label (best/good/inaccuracy/mistake/blunder), the engine's best move and line, per-player accuracy and error counts, and the five most critical moments with their FEN so you can explain why a move was bad. Results are cached, so repeat calls are instant. Args: game_id: Game id or URL from Lichess or Chess.com (as returned by get_recent_games). platform: "lichess" or "chesscom". Guessed from the id when omitted. username: The player to coach. Required for Chess.com games that were not fetched via get_recent_games; otherwise optional (adds user_color/user_result). depth: Engine search depth (default 14; 18+ is slower but more precise). |
| find_blundersA | Return only the moves that lost at least Cheaper to read than analyze_game when you only need the mistakes. Args:
game_id: Game id or URL from Lichess or Chess.com.
platform: "lichess" or "chesscom". Guessed from the id when omitted.
username: The player to coach; required for uncached Chess.com games.
threshold: Minimum centipawn loss to include (100 = mistakes and blunders).
only_user: If true, return only the mistakes made by |
| engine_statusA | Report which chess engine the server is using (local Stockfish or Lichess cloud fallback), where it lives, and cache statistics. Useful for troubleshooting. |
| get_opening_statsA | Win/draw/loss record per opening over a player's recent games. Helps spot openings the player struggles with. Each row carries the game ids so you can dig into a specific loss with find_blunders. Args: username: The player's username. platform: "lichess" (default) or "chesscom". color: "white", "black" or "both" (default). count: How many recent games to look at (1-300). group_by_family: Group variations under their opening family (default true). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| coach_my_last_game | Fetch and analyze your most recent game and explain the 3 biggest mistakes. |
| weekly_review | Analyze the last 7 days of games and find recurring patterns in your losses. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool has a clearly distinct role: fetching games, full game analysis, blunder-only extraction, engine diagnostics, and opening statistics. The overlap between analyze_game and find_blunders is explicitly framed as a cheaper subset, so selection is unambiguous.
Most tools follow a predictable verb_noun pattern (get_recent_games, analyze_game, find_blunders, get_opening_stats), but engine_status is a noun phrase without a verb. The deviation is minor and still readable.
Five tools is well-scoped for a chess coaching server, and each tool covers a distinct part of the workflow: game discovery, analysis, mistake extraction, opening review, and engine diagnostics.
The surface covers the core coaching workflow from fetching games through analysis and opening review. Minor gaps exist, such as no player profile/rating lookup or explicit opening recommendation tool, but agents can work around these.