MCP Server

Chessigma

com.chessigma/chessigma
Education Gaming Public & reachable MCP 2025-11-25

What this MCP does

Provides chess opening guides, position and PGN checks, daily puzzles, Elo estimates and links to browser-based game analysis.

analyze_game
Analyze Game
Summarize a chess game given as a PGN or as plain SAN movetext: players, result, number of plies, the opening and how long it followed theory, how the game ended (checkmate, stalemate, draw by rule, or unfinished or resigned) and the final position. Returns a link that opens the whole game on the chessigma.com analysis board, where the Stockfish engine runs in the user's browser, and, when the PGN's Link or Site tag is a Chess.com live game or a Lichess game, a link to that game's move-by-move review. It never evaluates moves itself and stores nothing.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['pgn'], 'properties': {'pgn': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'The game as PGN, or SAN movetext such as "1. e4 e5 2. Nf3".'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['white', 'black', 'result', 'plies', 'opening', 'ending', 'finalFen', 'analysisUrl', 'reviewUrl', 'note'], 'properties': {'note': {'type': 'string'}, 'black': {'type': ['string', 'null']}, 'plies': {'type': 'integer'}, 'white': {'type': ['string', 'null']}, 'ending': {'enum': ['checkmate', 'stalemate', 'draw_by_rule', 'unfinished_or_resigned'], 'type': 'string'}, 'result': {'type': 'string'}, 'opening': {'anyOf': [{'type': 'object', 'required': ['eco', 'name', 'bookPlies'], 'properties': {'eco': {'type': 'string'}, 'name': {'type': 'string'}, 'bookPlies': {'type': 'integer'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'finalFen': {'type': 'string'}, 'reviewUrl': {'type': ['string', 'null']}, 'analysisUrl': {'type': ['string', 'null']}}, 'additionalProperties': False}
analyze_position
Analyze Position
Read a chess position from a FEN and return facts computed by the rules alone: side to move, status (normal, check, checkmate, stalemate or insufficient material), every legal move in SAN, the material count (pawn 1, knight 3, bishop 3, rook 5, queen 9) and the opening name when the position is a catalogued opening. This tool does not evaluate the position and does not choose a best move: the Stockfish engine runs in the user's browser at the returned analysisUrl (full analysis board) and bestMoveUrl (best move finder) on chessigma.com.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['fen'], 'properties': {'fen': {'type': 'string', 'maxLength': 100, 'minLength': 10, 'description': 'The position in FEN. The two move counters may be omitted.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['fen', 'sideToMove', 'status', 'legalMoves', 'material', 'opening', 'analysisUrl', 'bestMoveUrl'], 'properties': {'fen': {'type': 'string'}, 'status': {'enum': ['normal', 'check', 'checkmate', 'stalemate', 'insufficient_material'], 'type': 'string'}, 'opening': {'anyOf': [{'type': 'object', 'required': ['eco', 'name'], 'properties': {'eco': {'type': 'string'}, 'name': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'material': {'type': 'object', 'required': ['white', 'black', 'balance'], 'properties': {'black': {'type': 'number'}, 'white': {'type': 'number'}, 'balance': {'type': 'number'}}, 'additionalProperties': False}, 'legalMoves': {'type': 'array', 'items': {'type': 'string'}}, 'sideToMove': {'enum': ['white', 'black'], 'type': 'string'}, 'analysisUrl': {'type': 'string'}, 'bestMoveUrl': {'type': 'string'}}, 'additionalProperties': False}
calculate_elo
Calculate Elo
Estimate a player's new Elo rating after a single game with the Elo formula. Pure arithmetic, no chess engine. The system field picks a K-factor default for FIDE, Chess.com or Lichess, but the result is an Elo estimate: Chess.com and Lichess use Glicko ratings, so their real rating changes differ.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['yourRating', 'opponentRating', 'result'], 'properties': {'result': {'enum': ['win', 'draw', 'loss'], 'type': 'string'}, 'system': {'enum': ['fide', 'chesscom', 'lichess'], 'type': 'string', 'default': 'fide'}, 'kFactor': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'yourRating': {'type': 'integer', 'maximum': 4000, 'minimum': 100}, 'opponentRating': {'type': 'integer', 'maximum': 4000, 'minimum': 100}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['yourRating', 'opponentRating', 'result', 'system', 'kFactor', 'expectedScore', 'newRating', 'change', 'calculatorUrl'], 'properties': {'change': {'type': 'number'}, 'result': {'enum': ['win', 'draw', 'loss'], 'type': 'string'}, 'system': {'enum': ['fide', 'chesscom', 'lichess'], 'type': 'string'}, 'kFactor': {'type': 'number'}, 'newRating': {'type': 'number'}, 'yourRating': {'type': 'number'}, 'calculatorUrl': {'type': 'string'}, 'expectedScore': {'type': 'number'}, 'opponentRating': {'type': 'number'}}, 'additionalProperties': False}
get_daily_puzzle
Get Daily Puzzle
Get Chessigma's daily chess puzzle: today's by default, or a past day's via date (YYYY-MM-DD, from 2024-01-01 to today in UTC). The position (fen) is given with the solver to move, after the opponent's last move. The solution is in SAN, with the solver's moves at even indexes and the opponent's replies at odd ones. Do not reveal the solution unless the user asks for it. If today's puzzle is not out yet, the latest one is returned: check date. playUrl opens the puzzle on chessigma.com.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'A day from 2024-01-01 to today (UTC). Omit for today.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['date', 'puzzleId', 'fen', 'sideToMove', 'opponentLastMove', 'rating', 'themes', 'solution', 'playUrl'], 'properties': {'fen': {'type': 'string'}, 'date': {'type': 'string'}, 'rating': {'type': 'number'}, 'themes': {'type': 'array', 'items': {'type': 'string'}}, 'playUrl': {'type': 'string'}, 'puzzleId': {'type': 'string'}, 'solution': {'type': 'array', 'items': {'type': 'string'}}, 'sideToMove': {'enum': ['white', 'black'], 'type': 'string'}, 'opponentLastMove': {'type': 'string'}}, 'additionalProperties': False}
get_opening_guide
Opening Guide
Look up a chess opening by name or slug (for example "London System", "Caro-Kann" or "sicilian-defense") and return Chessigma's guide to it: the main line in SAN, a short summary, up to four key variations with the idea behind each, the strategy for each side, strengths and weaknesses. Full guides exist for 18 popular openings; any of about 3,700 catalogued opening names returns its name, ECO code and moves. When nothing matches, found is false and suggestions lists close names. Links open the opening's trainer and the analysis board on chessigma.com.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['opening'], 'properties': {'opening': {'type': 'string', 'maxLength': 80, 'minLength': 2, 'description': 'Opening name or slug, e.g. "London System", "caro-kann", "Sicilian Najdorf".'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['found', 'name', 'eco', 'mainLine', 'summary', 'variations', 'ideas', 'strengths', 'weaknesses', 'trainerUrl', 'analysisUrl', 'suggestions'], 'properties': {'eco': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'found': {'type': 'boolean'}, 'ideas': {'anyOf': [{'type': 'object', 'required': ['white', 'black'], 'properties': {'black': {'type': 'string'}, 'white': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'summary': {'type': ['string', 'null']}, 'mainLine': {'type': ['string', 'null']}, 'strengths': {'type': 'array', 'items': {'type': 'string'}}, 'trainerUrl': {'type': ['string', 'null']}, 'variations': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'moves', 'idea'], 'properties': {'idea': {'type': 'string'}, 'name': {'type': 'string'}, 'moves': {'type': 'string'}}, 'additionalProperties': False}}, 'weaknesses': {'type': 'array', 'items': {'type': 'string'}}, 'analysisUrl': {'type': ['string', 'null']}, 'suggestions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
identify_opening
Identify Opening
Identify the chess opening of a move sequence, given as SAN movetext ("1. e4 c5 2. Nf3 d6") or a full PGN. Returns the ECO code and name from a catalogue of about 3,700 named lines, how many half-moves (plies) followed known theory from move one, the first move that left it, a link to Chessigma's trainer when the opening has one, and a link that opens the moves on the chessigma.com analysis board.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['moves'], 'properties': {'moves': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'SAN movetext or a PGN; tags are optional.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['found', 'eco', 'name', 'bookPlies', 'leftBookAt', 'trainerUrl', 'analysisUrl'], 'properties': {'eco': {'type': ['string', 'null']}, 'name': {'type': ['string', 'null']}, 'found': {'type': 'boolean'}, 'bookPlies': {'type': 'integer'}, 'leftBookAt': {'type': ['string', 'null']}, 'trainerUrl': {'type': ['string', 'null']}, 'analysisUrl': {'type': ['string', 'null']}}, 'additionalProperties': False}
review_online_game
Review Online Game
Turn the link of a public Chess.com live game or a Lichess game into a chessigma.com link that imports the game and opens a move-by-move review, computed by Stockfish in the user's browser. Nothing is fetched when this tool runs: the game is read from Chess.com or Lichess only when the user opens the link. Chess.com daily (correspondence) games are not supported; ask for the PGN instead.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'maxLength': 300, 'minLength': 10, 'description': 'A Chess.com live game link or a Lichess game link.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['platform', 'reviewUrl', 'note'], 'properties': {'note': {'type': 'string'}, 'platform': {'enum': ['chesscom', 'lichess'], 'type': 'string'}, 'reviewUrl': {'type': 'string'}}, 'additionalProperties': False}
Added
calculate_elo
Oct. 4, 2026, 2:40 a.m.
Added
get_daily_puzzle
Oct. 4, 2026, 2:40 a.m.
Added
review_online_game
Oct. 4, 2026, 2:40 a.m.
Added
analyze_game
Oct. 4, 2026, 2:40 a.m.
Added
analyze_position
Oct. 4, 2026, 2:40 a.m.
Added
identify_opening
Oct. 4, 2026, 2:40 a.m.
Added
get_opening_guide
Oct. 4, 2026, 2:40 a.m.