A chess engine MCP server powered by Stockfish
A chess engine MCP server powered by Stockfish. That is what the chesspal chess engine mcp server brings to an AI assistant: the same capability, reachable through the Model Context Protocol rather than a separate app or dashboard.
A Stockfish-powered chess engine exposed as an MCP server using FastMCP. Calculates best moves via MCP tools accessible over SSE (default) or stdio transports using an MCP client library. Part of the ChessPal project.
Installation goes through your MCP client rather than a global install: point it at chesspal-mcp-engine on PyPI and it is fetched when the client starts. The copy-paste blocks for Claude Desktop, Claude Code and Cursor are further down this page.
The server publishes 6 tools. What each one is for:
get_best_move_tool — Get the best move for a given chess positionvalidate_move_tool — Validate if a move is legal in a given positionget_legal_moves_tool — Get all legal moves in a given positionget_game_status_tool — Get the current game status (in progress, checkmate, etc.)Timeouts — The engine is configured with the following timeouts: - Engine calculation time: 1000ms by default (configurable via CHESSPAL_ENGINE_TIMEOUT_MS) -Contributing — 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Run tests and linters: bash poetry run black . poetry run isort . poetryConfiguration is passed through the environment: CHESSPAL_ENGINE_NAME, CHESSPAL_ENGINE_VERSION, CHESSPAL_ENGINE_OS, CHESSPAL_ENGINE_BINARY, CHESSPAL_ENGINE_PATH, PYPI_TOKEN. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
Plenty of developer tooling servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. ChessPal Chess Engine's toolset — get_best_move_tool, validate_move_tool, get_legal_moves_tool and 3 more — is a fair guide to whether it matches your workflow. It is maintained by wilson-urdaneta; worth a glance at recent repository activity before you build anything load-bearing on it.
SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.
| Tool | What it does |
|---|---|
| get_best_move_tool | Get the best move for a given chess position |
| validate_move_tool | Validate if a move is legal in a given position |
| get_legal_moves_tool | Get all legal moves in a given position |
| get_game_status_tool | Get the current game status (in progress, checkmate, etc.) |
| Timeouts | The engine is configured with the following timeouts: - Engine calculation time: 1000ms by default (configurable via CHESSPAL_ENGINE_TIMEOUT_MS) - Response wait timeout: 30s (allows time for engine initialization and cal |
| Contributing | 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Run tests and linters: bash poetry run black . poetry run isort . poetry run flake8 poetry run pytest 5. Submit a pull request |
{
"mcpServers": {
"dylangames-mcp-chess-engine": {
"command": "uvx",
"args": ["chesspal-mcp-engine"],
"env": {
"CHESSPAL_ENGINE_NAME": "your-value",
"CHESSPAL_ENGINE_VERSION": "your-value",
"CHESSPAL_ENGINE_OS": "your-value",
"CHESSPAL_ENGINE_BINARY": "your-value",
"CHESSPAL_ENGINE_PATH": "your-value",
"PYPI_TOKEN": "your-value"
}
}
}
}Add to claude_desktop_config.json, then restart Claude Desktop.
| Variable | Description | Required |
|---|---|---|
| CHESSPAL_ENGINE_NAME | Configuration value read at startup. | Optional |
| CHESSPAL_ENGINE_VERSION | Configuration value read at startup. | Optional |
| CHESSPAL_ENGINE_OS | Configuration value read at startup. | Optional |
| CHESSPAL_ENGINE_BINARY | Configuration value read at startup. | Optional |
| CHESSPAL_ENGINE_PATH | Filesystem location the server is allowed to use. | Optional |
| PYPI_TOKEN | Credential the server authenticates with. | Yes |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.