Skip to main content
Glama
aidanouckama

Chess MCP Server

by aidanouckama

Chess MCP Server

A Model Context Protocol (MCP) server that enables AI assistants to play chess against users. The server provides tools for managing chess games, making moves, evaluating positions, and visualizing the board.

Features

  • Game Management: Create new games, get board state, visualize positions

  • Move Validation: Validate moves before making them

  • AI Opponent: Play against Stockfish chess engine

  • Position Evaluation: Get engine evaluation of positions

  • Move History: Track moves with undo functionality

  • Board Visualization: ASCII art board representation

Related MCP server: Chess MCP

Requirements

  • Python 3.11 or higher

  • uv package manager

  • Stockfish chess engine (included in server/bin/stockfish/)

Installation

  1. Clone the repository:

git clone <repository-url>
cd chess-mcp
  1. Install dependencies and the package:

uv sync

This will:

  • Create a virtual environment

  • Install all dependencies (including mcp and chess)

  • Install the package in editable mode

Running the Server

Using the Entry Point

After installation, you can run the server using:

uv run chess-mcp

Running as a Module

Alternatively, you can run it as a Python module:

uv run -m server.main

The server runs on stdio transport, which means it communicates via standard input/output. This is the standard way MCP servers interact with clients.

Configuration for MCP Clients

Claude Desktop

To use this server with Claude Desktop, add the following to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "chess-game": {
      "command": "uv",
      "args": [
        "run",
        "chess-mcp"
      ],
      "cwd": "/path/to/chess-mcp"
    }
  }
}

Replace /path/to/chess-mcp with the absolute path to this project directory.

Other MCP Clients

For other MCP clients, configure them to run:

uv run chess-mcp

Make sure the working directory is set to the project root.

Available Tools

The server provides the following MCP tools:

Game State

  • new_game_tool: Creates a new chess game

  • get_state_tool: Returns the current board state in FEN format

  • visualize_board_tool: Returns an ASCII art visualization of the board

Moves

  • make_move_tool(move: str): Makes a move in UCI format (e.g., "e2e4")

  • ai_make_move_tool: Makes a move using the AI opponent

  • undo_move_tool: Undoes the last move

Validation

  • validate_move_tool(move: str): Validates if a move is legal

Analysis

  • evaluate_board_tool: Returns the engine's evaluation of the position in centipawns

Project Structure

appli/
├── server/
│   ├── main.py              # MCP server entry point
│   ├── config.py            # Configuration (paths, etc.)
│   ├── engine/              # Stockfish engine wrapper
│   ├── storage/             # File I/O and serialization
│   └── tools/               # MCP tool implementations
├── storage/                 # Game state storage
│   ├── current_game.fen     # Current board position
│   └── move_history.json    # Move history for undo
├── tests/                   # Test files for tools
├── pyproject.toml           # Project configuration
└── README.md                # This file

Storage

The server stores game state in the storage/ directory:

  • current_game.fen: Current board position in FEN notation

  • move_history.json: List of moves made (for undo functionality)

Development

Running Tests

Install test dependencies:

uv sync --extra dev

Run tests:

uv run pytest

Run tests with coverage:

uv run pytest --cov=server --cov-report=html

Adding New Tools

  1. Create a function in the appropriate server/tools/ module

  2. Register it in server/tools/registry.py

  3. Add it to the register_tools() function

Troubleshooting

Stockfish Not Found

If you get an error about Stockfish not being found:

  • Check that server/bin/stockfish/ contains the appropriate binary for your platform

  • The server automatically detects your platform and selects the correct binary

  • Supported: macOS (Intel/Apple Silicon), Linux, Windows

Import Errors

If you encounter import errors:

  • Make sure you've run uv sync to install the package

  • Verify you're in the project root directory

  • Check that the virtual environment is activated

Acknowledgments

Available Tools

8 tools
ai_make_move_toolA
Makes a move for the board using the AI. Always use this after the user has made a move.
Shouldn't be used if you have a move in mind already, you should use the make_move_tool instead.

Args:
    None
Returns:
    The move made by the AI in UCI format
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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 states 'Makes a move' implying mutation of game state, and specifies the return format. However, it does not explicitly disclose side effects (e.g., board updates, irreversibility) or error conditions. This is adequate but leaves some behavioral traits implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences plus an Args/Returns block. It front-loads the primary purpose, includes essential usage guidance, and has no redundant words. The structure is clean and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and a clear function, the description covers what it does, when to use it, and what it returns. It lacks explicit mention of side effects beyond the move and does not address error cases, but given its simplicity, it is nearly complete. A bit more detail on state changes would make it fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and the description simply says 'Args: None,' matching the empty schema. With zero params, the schema covers everything, so the description does not need to add parameter semantics. Baseline for 0 params is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Makes a move for the board using the AI.' It identifies the specific verb (make), resource (board), and unique mechanism (AI). It also distinguishes from the sibling tool make_move_tool by noting 'Shouldn't be used if you have a move in mind already, you should use the make_move_tool instead.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: 'Always use this after the user has made a move' gives a clear condition for use, while 'Shouldn't be used if you have a move in mind already, you should use the make_move_tool instead' states when not to use it and names the alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

evaluate_board_toolA
Evaluates the board and returns a score in centipawns.
Positive values favor white, negative values favor black.
Returns a string with the score, or an error message if evaluation fails.

Args:
    None
Returns:
    A string with the score, or an error message if evaluation fails.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses output sign convention (positive favors white, negative favors black), return type (string), and error behavior. It does not explicitly state side effects, but the evaluation nature implies a read-only operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the main purpose. However, the return statement 'Returns a string with the score, or an error message if evaluation fails' is repeated in both the intro and the Returns section, causing slight redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, output schema exists), the description covers the essential information: what it does, output semantics, and error handling. It does not mention how evaluation is performed or any prerequisites, but these are not critical for a straightforward evaluation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and the description explicitly states 'Args: None'. This aligns with the empty input schema, and there is no additional parameter meaning needed beyond the schema coverage of 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool evaluates the board and returns a score in centipawns, with specific verb ('evaluates'), resource ('board'), and output meaning. This distinguishes it from sibling tools like make_move_tool or get_state_tool, which serve different functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description ('Evaluates the board') but there is no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description simply states what it does without providing decision context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_state_toolA
Gets the state of the board

Args:
    None
Returns:
    The state of the board in FEN format
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the verb 'Gets' indicates a read-only operation, but the description does not explicitly state that it has no side effects. It does disclose the return format (FEN), which is additional behavioral context. While minimal, it is sufficient for this straightforward getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, front-loading the purpose in the first sentence. It also includes an Args/Returns structure, which is clean and easy to parse with no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (no parameters, no annotations, straightforward output), the description adequately covers the return format (FEN) and the purpose. The presence of an output schema further reduces the need for additional detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema reflects this. The description confirms 'Args: None'. According to the baseline for 0 params, a score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Gets' and identifies the resource as 'the board state', further specifying the FEN return format. This clearly distinguishes it from sibling tools like visualize_board_tool or evaluate_board_tool, which provide different views of the board.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool relative to alternatives. It implies that one should call it when the current board state is needed, but lacks explicit guidance on when not to use other tools. Given the simplicity of the getter, the usage is fairly obvious but not formally articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

make_move_toolB
Makes a move for the board. Could be used by the user or the AI.

Args:
    move: The move to make in UCI format
Returns:
    The new board state
ParametersJSON Schema
NameRequiredDescriptionDefault
moveYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose side effects. It only says 'Makes a move' and returns the new board state, but it doesn't specify whether moves are validated, how errors are handled, or whether the game state is permanently mutated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the main purpose, with args and returns clearly labeled. The phrase 'Could be used by the user or the AI' adds some fluff but is not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a simple signature and an output schema, so the description doesn't need to detail return values. However, it lacks information about validation and interaction with sibling tools, making it somewhat incomplete for a mutation tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds crucial context by stating the move must be in UCI format, which is absent from the schema. However, it doesn't provide an example or elaborate on the format, so it could be more detailed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Makes') and resource ('a move for the board'). It also notes it can be used by the user or AI, which helps differentiate it from ai_make_move_tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus siblings like validate_move_tool or ai_make_move_tool. The only hint is 'Could be used by the user or the AI,' which is vague and doesn't offer exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

new_game_toolA
Creates a new game

Args:
    None
Returns:
    The new board state in FEN format
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action and the return format (FEN), but does not disclose that starting a new game likely discards the current game state or any other side effects. This is a significant gap for a mutation-like operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, leading with the core purpose, then cleanly structured Args and Returns sections. Every word is purposeful, and there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter tool, the description provides the essential action and return format. However, it omits important context about side effects (e.g., whether the existing game is reset) and does not mention that this is a state-changing operation. An output schema is present, but the description still needs to cover the reset semantics for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The description explicitly confirms 'Args: None', which adds clarity. No parameter semantics are needed beyond what the empty schema already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Creates a new game' with a specific verb and resource. It is distinct from all sibling tools (get_state, make_move, etc.) because it is the only one that initializes a new game. The scope is immediately obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The tool name and description imply use when starting a fresh game, but there is no explicit when/when-not guidance or discussion of alternatives. Given the sibling tools, it is clear when to use this tool, but the description does not state prerequisites or that it replaces the current game state.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

undo_move_toolA
Undoes the last move made on the board.
Can undo both player moves and AI moves.

Args:
    None
Returns:
    The new board state in FEN format, or an error message if no moves to undo
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It accurately states the return behavior (new board state in FEN format or an error if no moves to undo) and that both player and AI moves are reversible. It does not mention deeper side effects, such as whether undo is limited to the current session or whether it resets AI internal state, but the core behavior is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: three short sentences that front-load the purpose, add scope, and then specify arguments and return format. There is no redundant information or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with an output schema indicating FEN return, the description is sufficient. It covers the operation scope (player and AI moves) and the error case. It could be slightly more explicit about the irreversible nature of the undo or what happens in an initial board position, but the error message is implied. Overall, it is well-composed for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description explicitly lists 'Args: None,' which adds clarity beyond the empty input schema and confirms no arguments are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Undoes the last move made on the board.' It also specifies it can undo both player and AI moves, distinguishing this from related tools like make_move_tool and ai_make_move_tool. The verb-resource pairing is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you want to revert a move) but does not explicitly state when to use this tool over alternatives or provide exclusion criteria. No comparison to sibling tools is given, leaving the agent to infer from the tool name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_move_toolA
Validates a move for the board

Args:
    move: The move to validate in UCI format
Returns:
    True if the move is valid, False otherwise
ParametersJSON Schema
NameRequiredDescriptionDefault
moveYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It clearly states the return value (True/False) and the verb 'validates' implies a non-mutating operation. However, it does not explicitly state that the board state is unchanged, which could be ambiguous given sibling tools that perform moves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, focused sentences. It uses a clear Args/Returns structure with no filler or redundancy, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple validation tool, the description covers the input format and return value. It does not explicitly mention that validity is relative to the current board state, but 'for the board' implies this. With a clear output schema presumably present, the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds essential meaning to the 'move' parameter by specifying UCI format, which is not present in the schema. It also clarifies the return semantics. This fully compensates for the 0% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('validates') and resource ('a move for the board'). It is distinct from sibling tools like make_move_tool because it explicitly focuses on validation rather than execution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking move validity, but does not explicitly state when to use this tool versus alternatives (e.g., 'use this before make_move_tool'). No exclusions or alternative references are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

visualize_board_toolA
Returns a visual ASCII representation of the current board position.
Shows the board with pieces, ranks, and files for easy reading.
Always use this after moves to display to the user, and don't just leave the response, in your
response to the user, it should include this ascii art within it.

Args:
    None
Returns:
    A string containing an ASCII art visualization of the board
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals the output format (ASCII string) and that it displays the board, but it does not explicitly state the tool has no side effects or does not modify the game state. Since annotations are absent, this would have been useful, but the read-only nature is strongly implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with the core function, but includes a slightly redundant second sentence ('Shows the board...') and a lengthy usage instruction. It's still concise overall, though it could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (no params, no annotations, no complex output schema), the description covers purpose, usage, and return value adequately. Minor gaps include missing prerequisites (like an active game), but these are not critical for a board visualization tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the description notes 'Args: None.' With no schema to elaborate, the baseline for 0-param tools is 4; the description adds no parameter-level detail because none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns an ASCII representation of the current board, with specific details about pieces, ranks, and files. This distinguishes it from siblings like make_move_tool or evaluate_board_tool, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to use this tool after moves and to include the ASCII art in the response to the user. It also clarifies not to leave the response without the visualization, providing strong when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4/5.0
Disambiguation5/5

Each tool clearly targets a distinct operation: game creation, state retrieval, visualization, move validation, move execution, AI move generation, undo, and evaluation. The only potential overlap between make_move and ai_make_move is explicitly differentiated by their descriptions and usage guidance.

Naming Consistency4/5

Tool names generally follow a verb_noun pattern with a common _tool suffix, making them predictable. Minor deviations include 'new_game' (which is adjective_noun rather than verb_noun) and 'ai_make_move' (which includes a prefix), but these do not significantly harm overall consistency.

Tool Count5/5

With 8 tools, the server is well-scoped for a chess MCP, covering creation, state inspection, moves, AI play, undo, and evaluation. Each tool has a clear purpose, and the count feels appropriate without being bloated or insufficient.

Completeness4/5

The toolset covers the core chess lifecycle: start a game, view state, validate/make moves (both manual and AI), undo, and evaluate. Minor gaps such as setting AI difficulty or importing arbitrary FEN positions exist, but they are not essential for basic usage and do not cause dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables chess gameplay and interaction through MCP protocol. Allows users to play chess games, make moves, and manage chess sessions through natural language commands.
    2
  • A
    license
    Not graded
    quality
    D
    maintenance
    Play interactive chess games through conversation with move validation, Stockfish engine analysis, tactical puzzles, and a visual chess board widget in ChatGPT.
    20
    2
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables playing chess games with legal move validation and AI opponent moves powered by the Stockfish engine. Supports multiple concurrent games and provides moves in UCI format.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to play, analyze, and track chess games with full rule validation and support for standard algebraic notation. It provides tools for position evaluation and game state persistence during user sessions.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aidanouckama/chess-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server