chess-arbiter
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLIENT | No | The player identity connecting to the arbiter (e.g. hermes or claude). Passed as `--client` alongside the command. | |
| LLM_CHESS_HOME | No | Custom store path for game data (chess.db, PGN logs, transcripts). Must be re-declared on the MCP entry because Hermes spawns MCP subprocesses with a filtered environment. | ~/.llm-chess |
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
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| join_gameC | Join the current game: your colour, the opponent, and the position. |
| get_boardB | Read the current position: FEN, board diagram, side to move, check state, clocks, material, and move history. |
| get_legal_movesB | List every legal move in the current position, as SAN and UCI. |
| make_moveA | Play a move. Accepts SAN ('Nf3') or UCI ('g1f3'). Rejected moves leave the position untouched. |
| get_statusB | Game status: whose turn it is, clocks, result, and whether the game is over. |
| get_move_historyC | SAN move list so far, in order. |
| resign_gameC | Resign the game. Not a failure — the honest end to a lost position. |
| offer_drawB | Offer a draw to your opponent. They must call accept_draw. |
| accept_drawB | Accept your opponent's outstanding draw offer. |
| claim_drawB | Claim a draw you are entitled to by rule (threefold repetition or the fifty-move rule). |
| get_evaluationB | Objective position facts only — no engine, no advice: material balance, legal move count, check state. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Several tools report overlapping state: get_board already includes clocks, material, check, and move history, which are also provided by get_status, get_evaluation, and get_move_history. While descriptions clarify primary intent, an agent could reasonably choose between them for similar information, causing mild ambiguity.
All tools follow a consistent snake_case verb_noun pattern (get_board, make_move, offer_draw, etc.), with no deviations. The convention is predictable and easy to parse.
11 tools is well within the 3–15 sweet spot and each covers a distinct lifecycle action (join, move, query, draw, resign). No obvious bloat, though some query tools overlap.
Core chess game actions are covered (join, move, legal moves, status, history, resign, draw offer/accept/claim, evaluation). Missing an explicit draw decline and game creation/listing, but these are minor for an arbiter.