# jiayao/mcp-chess [Health: Active]

**Category:** 🎮 Gaming  
**Repository:** https://github.com/jiayao/mcp-chess  
**GitHub Stars:** 23  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/jiayao-mcp-chess

## Description
A MCP server playing chess against LLMs.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "mcp-chess": {
    "command": "uvx",
    "args": ["mcp-chess"]
  }
}
```

## Documentation

## What jiayao/mcp-chess MCP server does

The jiayao/mcp-chess MCP server exposes a chessboard that an LLM can use to play a game, inspect the current position, and analyze selected positions from PGN text. A new game can assign the user either white or black, and the board visualization changes orientation based on that assignment.

The server maintains the current game state and reports whose turn it is. It also prevents move selection from being purely free-form by exposing the legal moves available to the current player. When the game ends, the legal-move result is empty.

## How it works

The tool set separates position inspection, move generation, game control, and PGN lookup:

- `get_board_visualization()` returns the current chessboard as an image.
- `get_turn()` reports `white` or `black`.
- `get_valid_moves()` lists legal moves in UCI notation, such as `e2e4` or `g1f3`.
- `make_move(move_san)` applies a move written in Standard Algebraic Notation, such as `e4`, `Nf3`, or `Bxe5`. Its response includes the move in SAN and UCI, the resulting FEN, and the game status.
- `new_game(user_plays_white)` resets the board and sets the user’s color. The default is white.
- `find_position_in_pgn(pgn_string, condition)` searches a PGN for the first position matching a piece-and-square condition, such as a bishop on `a3`, and returns an image of that position.

The PGN condition uses one of the supported piece types: pawn, knight, bishop, rook, queen, or king. This makes the position-search tool suitable for targeted inspection rather than general PGN querying.

## Setup and configuration

The jiayao/mcp-chess MCP server is configured as a command-based MCP server using `uvx` and the `mcp-chess` package. Add an entry like this to the MCP client configuration:

```json
{
  "mcpServers": {
    "chess": {
      "command": "uvx",
      "args": ["mcp-chess"]
    }
  }
}
```

After the server is available to the client, start a game with `new_game`, inspect the board and turn, and use SAN with `make_move`. The README does not specify client-specific setup beyond adding this server entry to an MCP configuration.

## Limitations and notes

The jiayao/mcp-chess MCP server documents chess gameplay and PGN position lookup, but it does not describe engine evaluation, best-move recommendations, clocks, multiplayer networking, or persistent game storage. PGN lookup returns the first position matching the supplied condition, so it is not presented as a tool for returning every matching position.

Move input must use SAN, while legal-move output uses UCI notation. Applications or prompts integrating the tools should account for that difference. The documented PGN condition format is limited to a piece type followed by `on` and a square name.

_Full upstream README: https://allmcps.com/mcp/jiayao-mcp-chess/readme_

