An MCP server for the Edax Othello/Reversi game engine, providing tools to play moves, get board state, retrieve hints, and access game statistics.
Server has 10 tools with explicit registrations, descriptions, and input schemas. Naming follows verb_noun convention (get_*, play_*, edax_*). Descriptions are present but brief (avg ~60 chars, below the 194-char baseline). All tools have input schemas with proper types and enums. However, output schemas are undocumented, responses return TextContent + structuredContent but no formal schema declaration. Parameter descriptions are minimal. Error handling is absent, no recovery guidance, no validation errors, no retryability hints. Missing tool annotations (readOnlyHint, destructiveHint). The play_move tool modifies state but lacks confirmation or dry-run support.
Get the current player (black or white).
Get the last move in coordinate format (e.g., f5).
Get the opponent player (black or white).
Get suggested moves from Edax engine.
Get the current board state.
Get the number of discs for a given color.
Get the number of legal moves for a given color.
Output schemas undocumented. Tools return TextContent + structuredContent (e.g., get_board returns player_bitboard, opponent_bitboard, current_player) but no formal schema declaration. LLMs cannot plan downstream calls or validate field presence.
Descriptions are too brief (avg ~60 chars vs 194-char baseline). Missing WHEN to use, prerequisites, and dependencies. E.g., 'Get suggested moves from Edax engine' lacks context on what 'n' parameter controls or when to call it vs get_moves.
No error handling or recovery guidance. Tools do not validate input (e.g., play_move accepts any string; no check for valid coordinate format). No error messages guide LLM on what to do if a move is illegal or game is over.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2025-06-18+ | v2 |
Get the current game moves in coordinate format (e.g., f5d6c5).
Play a move in the current game.
Get a summary of the current game state (board, disc counts, mobility).
Destructive tool (play_move) lacks confirmation or dry-run. Agents can modify game state without a confirmation step. No idempotent hint or destructiveHint annotation.
Naming inconsistency: edax_* prefix on some tools (edax_hint, edax_get_current_player) vs get_* on others. Inconsistent prefixes reduce clarity and force LLMs to reason about which variant to call.