pure-llm-chess-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pure-llm-chess-mcpStart a new standard chess game and play e2e4"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Pure LLM Chess MCP
A local MCP server that validates submitted chess moves. It does not expose legal-move lists, evaluation, recommendations, or search. Rules come from chessops, not a playing engine.
Requires Node.js 24 or newer.
npx -y pure-llm-chess-mcpOr install the CLI globally:
npm install -g pure-llm-chess-mcp
pure-llm-chess-mcpConnect
For a stdio MCP client, use npx:
{
"mcpServers": {
"chess": {
"command": "npx",
"args": ["-y", "pure-llm-chess-mcp"]
}
}
}For Streamable HTTP:
npx -y pure-llm-chess-mcp --transport http --port 3000Connect to http://127.0.0.1:3000/mcp. This is a local, single-user server. HTTP clients share games; game IDs are not authentication. Games live in memory until the process exits. Export JSON to save them.
Both transports support MCP 2026-07-28 and legacy 2025-era clients. HTTP uses stateless POST requests; standalone GET notification streams are not provided. Shutdown closes active connections instead of waiting for clients to disconnect.
Load a local rule plugin:
npx -y pure-llm-chess-mcp --plugin /absolute/path/to/variant.mjs--plugin may be repeated. Plugins are trusted local JavaScript modules loaded at startup, with the same privileges as the server. The server does not execute code supplied through MCP or imported archives. See the plugin guide to load the included three-player hex example or write your own rules.
Related MCP server: Chess MCP
Tools
Tool | Arguments | Result |
| none | Rule IDs, versions, descriptions, schemas, supported formats |
|
| New game and state |
|
| Current state; optional |
|
|
|
|
| Updated state |
|
| A new game |
|
|
|
Built-in variant IDs are standard, chess960, antichess, atomic, crazyhouse, horde, kingofthehill, racingkings, and threecheck. Chess960 accepts options.index from 0 to 959 (default 518).
Standard moves use UCI coordinates, such as e2e4 and e7e8q. Inspect list_variants for each variant's move schema. The hex example uses objects such as {"from":"-2,0","to":"-1,0"}.
An edit maps cells to a piece or null:
{
"game_id": "<game-id>",
"changes": {
"e1": null,
"e4": {"kind": "queen", "owner": "white"}
},
"turn": "black"
}State includes cell IDs, a pieces map, registered players, turn, variant-specific rule_state, valid, issues, check, outcome, claimable_draws, and a revision. Normal chess pieces use pawn, knight, bishop, rook, queen, and king; owners are white and black.
get_state with ascii=true adds a board like this without replacing structured state:
8 r n b q k b n r
7 p p p p p p p p
6 . . . . . . . .
5 . . . . . . . .
4 . . . . . . . .
3 . . . . . . . .
2 P P P P P P P P
1 R N B Q K B N R
a b c d e f g hSet unicode=true to use Unicode chess pieces (♔♕♖♗♘♙ and ♚♛♜♝♞♟). This also requests board output, so ascii=true is optional. The rendered text remains in the ascii response field; coordinates and empty cells are unchanged. Plugins that do not implement Unicode rendering keep their ASCII output.
{"game_id": "<game-id>", "unicode": true}Legality and editing
A rejected move leaves the game unchanged. legal is true or false for valid positions and null when rules cannot evaluate the position. applied independently reports whether the board changed.
With allow_illegal=true, legal moves still follow all normal rules. Otherwise the server relocates the source piece, overwrites the destination (including friendly pieces and kings), and advances the current turn. It does not infer illegal castling, en passant, or promotion effects. Empty sources, nonexistent cells, and identical source/destination remain errors. Use edit_board for creation, deletion, replacement, and compound edits.
Forced changes reset the repetition segment. Built-in chess variants also clear castling rights, en passant, and the halfmove counter. Edits preserve the turn unless explicitly changed and may explicitly replace rule_state. Historical events remain in JSON archives.
Rule-invalid boards, including boards with missing kings, remain editable and printable. Structurally invalid data, such as unknown cells or piece kinds, is rejected. Failed operations do not publish partial state changes.
The reserved object key and cell ID __proto__ are rejected explicitly, including inside nested JSON data. The same text is allowed as an ordinary string value.
Standard automatic outcomes include checkmate, stalemate, insufficient material, fivefold repetition, and the 75-move rule. Claimable threefold/50-move draws are reported; claim and resignation tools are not included.
Import and export
JSON is the full-fidelity format: format version, exact variant ID/version, options, metadata, initial state, applied events, and final state. Imports replay events and compare the resulting state. The same plugin version must already be installed. Code is never embedded or loaded from an archive.
FEN exchanges a current position, without history. A syntactically valid but rule-invalid position can be imported. Specify
variantwhen importing a nonstandard position.PGN exchanges a single game's headers, mainline, and result for supported variants. Comments, annotations/NAGs, variations, and multiple games are rejected. Games with edits or actual forced moves require JSON. A PGN
Variantheader selects the rule set.
PGN headers require string values without control characters and valid tag names. JSON metadata that cannot be represented is rejected on PGN export rather than discarded. Position and variant headers are derived from the actual game state. Standard aliases such as normal, classical, and wild/0 are accepted; an exact installed plugin ID takes precedence over an alias.
A new game ID is assigned on every import. Input/output is data, not server filesystem paths. No file is read or written through these tools. Unsupported formats fail explicitly instead of dropping information.
For FEN/PGN imports, pass any creation options required by the selected variant in options. They are validated, passed to the plugin's importer, and preserved in JSON exports. JSON imports restore their archived options and reject an options override.
Accepted FEN promoted-piece markers (~) survive unrelated moves and follow the marked piece when it moves; captures remove them. This changes replay semantics outside Crazyhouse, so those built-in adapters now use version 2. Their version 1 JSON archives are rejected with VERSION_MISMATCH rather than silently replayed with different state. Crazyhouse remains version 1.
PGN declarations such as resignation or an agreed draw are preserved as terminal results, even when the board itself is not terminal. Such declarations are recorded in JSON history. Forced moves and edits clear the declaration and resume from the changed position; a declared result contradicting a rules-based outcome is rejected.
Archive replay rejects another terminal result declaration unless an intervening edit or forced move has cleared the previous one.
Development
From a source checkout:
npm ci
npm run check
npm test
npm startnpm test builds the project before running the tests. Use npm run build to build without testing.
npm pack builds automatically before creating the package. The package includes the runtime, type declarations, example plugin, documentation, license, and TypeScript source; tests and local workspace files are excluded.
The implementation separates the game service, rule adapters, and MCP transports. See the plugin contract and the hex example for nonrectangular boards, new pieces, and multiplayer rules.
Dependency versions are pinned in package-lock.json.
License
Licensed under the GNU Affero General Public License v3.0 only (AGPL-3.0-only). See LICENSE.
chessops is licensed separately under GPL-3.0-or-later.
Available Tools
7 toolsedit_boardEdit boardC
Edit board cells, including adding, removing, or replacing pieces, plus optional turn or rule state.
| Name | Required | Description | Default |
|---|---|---|---|
| turn | No | ||
| changes | Yes | ||
| game_id | Yes | ||
| rule_state | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is the only source of behavioral disclosure. It mentions editing cells and changing turn/rule state, but does not reveal important behaviors such as whether edits are validated, whether existing pieces can be overwritten, whether rule_state changes affect the game logic, or whether the operation is reversible. For a mutation tool with no annotations, this is a notable gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose, but it is somewhat dense and not front-loaded with the most critical information. It mentions turn and rule state as optional, but the structure could be clearer by explicitly outlining the main action (editing board cells) first. It is still reasonably concise, but could be more effective with a clearer breakdown.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, nested object for changes, optional turn and rule_state), the description lacks sufficient detail about the changes format, the meaning of null in changes (removal), and the expected structure of turn and rule_state. Without an output schema, it also doesn't clarify what the response looks like. The description provides a high-level overview but is incomplete for an agent to fully understand how to structure requests correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for documenting parameters. The description mentions 'adding, removing, or replacing pieces' and 'turn or rule state', which indirectly maps to the 'changes' and 'turn'/'rule_state' parameters. However, it does not explain the structure of 'changes' (which is a mapping from cell identifiers to piece definitions or null), or how 'turn' should be formatted, or what rule_state expects. It adds some value but leaves many details to the schema, which is complex (due to nested objects).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool edits board cells (adding, removing, or replacing pieces) and can update turn or rule state, which is specific and action-oriented. However, it could be clearer about the scope of 'editing' versus 'playing a move' (which is a sibling tool). The description doesn't explicitly distinguish itself from play_move, making the purpose somewhat overlapping and less clear in the context of sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that the tool is for editing board cells and state, which suggests it might be used for administrative or setup purposes, but it does not explicitly state when to use it versus play_move, new_game, or other siblings. There is no guidance on when not to use it or what scenarios it is intended for, leaving the agent to infer usage from the verb 'edit'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_gameExport gameB
Export full JSON history/state, a FEN position snapshot, or a supported PGN mainline.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | ||
| game_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It adds useful output semantics: JSON is the full history/state, FEN is a position snapshot, and PGN is a mainline export. However, it does not disclose how output is returned, whether any side effects occur, or what constraints exist on the export.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the verb and efficiently packs the three format distinctions into clear, parallel clauses. There is no filler, repetition, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description covers the key format choices and gives some detail on each. However, with no annotations and no output schema, it leaves gaps around when to choose this tool over get_state, what exactly 'supported PGN mainline' means, and what the return payload looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add parameter meaning. It does for the format parameter by explaining what each enum value yields: full JSON, FEN snapshot, or PGN mainline. The game_id parameter is not explained, though its name and the schema make its role fairly inferable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Export' and the resource 'game', and it specifies three concrete output forms: full JSON history/state, FEN position snapshot, and PGN mainline. This is a specific verb-plus-resource description that makes the tool's function obvious, but it does not explicitly distinguish it from sibling tools like get_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use export_game versus get_state, import_game, or the other siblings. There are no prerequisites, exclusions, or alternative-selection hints; the only implied usage is that exporting is a way to retrieve serialized game data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stateGet game stateA
Return the current position, turn, and assessment. Set ascii to include a text board, or unicode to include a board with Unicode pieces where supported.
| Name | Required | Description | Default |
|---|---|---|---|
| ascii | No | ||
| game_id | Yes | ||
| unicode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior. It does state the main output content and the effect of the ascii and unicode flags. It does not describe the response shape, whether the call is side-effect free, or failure behavior, so transparency is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, both informative. The main return payload is front-loaded, and the optional rendering flags are described in a clear second sentence with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-state tool, this is close to sufficient: required parameter is in the schema and optional board flags are explained. However, because there is no output schema, terms like 'assessment' and the exact response structure are under-specified, and no usage example is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds meaning for ascii and unicode by explaining what including the optional board output entails. The required game_id parameter is left purely to the schema, with no format or provenance guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') with a clear resource and content: current position, turn, and assessment. It is easily distinguished from sibling tools like new_game, play_move, edit_board, export_game, import_game, and list_variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the nature of the tool: an agent can infer that it should be used to inspect the current state of a game. However, the description never explicitly states when to choose get_state over other read-like tools or gives any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_gameImport gameA
Import JSON full history/state, a FEN position snapshot, or a supported PGN mainline and return a new game ID. FEN/PGN imports accept variant options; JSON restores its saved options.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| format | Yes | ||
| options | No | ||
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It states that FEN/PGN imports accept variant options and JSON restores its saved options, which is useful behavioral context. However, it does not describe the return format (just 'new game ID'), whether existing games are affected, or potential side effects. The lack of annotations makes this a moderate gap, but the provided details are helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one sentence with key scoping information (formats, options). It is front-loaded with the main purpose. It could be slightly more structured, but it has no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters, 2 required, and no output schema. The description covers the main input formats and the variant behavior, but doesn't detail the structure of 'data' or 'options' beyond what schema offers. It's reasonably complete for the complexity level, but some details on return value or error handling are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the parameters. The description explains that 'format' can be json/fen/pgn and that 'variant' applies to FEN/PGN, but it does not describe 'data' or 'options' beyond general meaning. Since the schema has no descriptions, the description adds some clarity but not comprehensive coverage, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool imports game data (JSON, FEN, PGN) and returns a new game ID, distinguishing it from new_game which creates a new empty game. However, it doesn't explicitly differentiate from other siblings like export_game or edit_board, but the verb 'import' and the resource type are clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: when you have external game data to load. It doesn't provide explicit guidance on when not to use it or alternatives for creating a new game (new_game), but the context of siblings and the description's clarity give some implied direction. It lacks explicit exclusions or comparison with new_game.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_variantsList variantsA
List installed variants, their options and move schemas, and supported import/export formats.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It conveys that this is a read-only listing operation and states the output categories, but it does not explicitly mention side-effect-free behavior, authentication needs, or behavior when no variants are installed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence front-loads the action and lists exactly what the tool returns. There is no redundancy, filler, or restatement of the title beyond what is useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple, zero-parameter tool, and the description lists the full scope of returned information. The absence of an output schema means the exact response structure is not specified, but the description is sufficient for an agent to decide whether to call it and to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema is trivially complete and there is nothing for the description to add. The description's mention of variants, options, and formats is about output content, not parameter meaning. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and names the exact resources: installed variants, their options, move schemas, and supported import/export formats. This clearly distinguishes it from the game-action siblings like new_game, play_move, and export_game.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by the content: an agent would call this to discover available variants or formats before creating a game or importing. However, it does not explicitly state when to use it versus alternatives, nor does it provide any when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_gameNew gameC
Create a game with the selected chess variant and options.
| Name | Required | Description | Default |
|---|---|---|---|
| options | No | ||
| variant | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It only states that a game is created; it does not disclose whether an existing game is replaced, what initial state is set, whether it is destructive, or any side effects of starting a new game.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no filler and the core action front-loaded. However, its brevity borders on under-specification, which slightly reduces how well structured it is for practical use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has unconstrained parameters including an arbitrary nested options object, no output schema, and no annotations, so the description must do more than give a one-line summary. It leaves variant values, option structure, and post-creation behavior undocumented, so an agent cannot call it reliably without external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only labels the parameters as 'variant' and 'options' without explaining allowed variants, option keys, defaults, or value formats, which is insufficient for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('game'), and mentions the key inputs (chess variant and options). It is distinguishable from the sibling read/move/edit/export/import tools because it is the only creation action, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool to use when starting a new game, which gives some routing signal. However, it provides no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as list_variants or play_move.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
play_movePlay moveA
Validate and apply one submitted move. Set allow_illegal to force a from/to move when it is illegal; the result reports legal and applied separately.
| Name | Required | Description | Default |
|---|---|---|---|
| move | Yes | ||
| game_id | Yes | ||
| allow_illegal | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it states the tool validates, can force illegal moves with allow_illegal, and reports legal and applied status separately. This is non-obvious behavioral detail beyond the bare 'play a move' title.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core action is front-loaded, and the important conditional behavior and result distinction are packed efficiently into the second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is reasonably complete for a simple tool: it explains purpose, illegal-move handling, and result semantics. However, without an output schema or annotations, it should say more about the expected move representation and what exactly the returned 'legal' and 'applied' fields look like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains allow_illegal semantics and hints that a move is a 'from/to move,' but it does not clarify the exact string or object format for move or mention game_id, leaving some parameter meaning to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Validate and apply one submitted move.' This distinguishes play_move from siblings like edit_board or get_state by focusing on move submission and validation, not general board editing or state reading.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a move is submitted and needs validation/application. It also gives a conditional usage rule for allow_illegal, but it does not explicitly contrast this tool with alternatives like edit_board or state when play_move should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.2.0- First observed
edit_board - First observed
export_game - First observed
get_state - First observed
import_game - First observed
list_variants - First observed
new_game - First observed
play_move
TDQS
Scored across 7 tools
Each tool targets a distinct action: creating, inspecting, moving, editing, exporting, importing, and listing variants. There is no meaningful overlap between them.
All tool names follow a consistent verb_noun pattern (new_game, get_state, play_move, edit_board, export_game, import_game, list_variants). The naming is uniform and predictable.
Seven tools is well-scoped for a chess MCP server: it covers game lifecycle, state inspection, move execution, board editing, import/export, and variant discovery without unnecessary bloat.
The tool surface covers the full chess workflow: create, inspect, move, edit, import/export, and discover variants. No obvious dead ends or missing core operations for the stated purpose.
Maintenance
Related MCP Connectors
Official remote MCP server for Archivist AI TTRPG campaign memory: characters, sessions, and more.
Read and update your SekkeiFlow life boards, counters and AI coach from any MCP client.
Collaborative whiteboard MCP server — create objects, connectors, C4 diagrams, and manage boards
Hosted MCP server for AI-driven data ops. Create apps, manage schemas, and CRUD structured data.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables chess gameplay and interaction through MCP protocol. Allows users to play chess games, make moves, and manage chess sessions through natural language commands.2-
- AlicenseNot gradedqualityDmaintenanceA powerful chess engine and game server built with the Model Context Protocol (MCP). Play chess against AI, analyze positions, and integrate chess functionality into your AI applications.12 npm1ISC
- FlicenseAqualityDmaintenanceEnables chess analysis and move generation using the Stockfish engine via MCP tools, allowing clients to evaluate positions, get best moves, apply moves, and visualize boards.7-
- AlicenseNot gradedqualityBmaintenanceEnables MCP agents to play chess locally, supporting join, state, legal moves, and move execution with per-session color ownership.MIT