chess-support-mcp
Manages the state of a chess game for LLMs/agents without suggesting moves, providing tools to create/reset game, add moves, get status, and check legality.
README
Chess Support MCP Server
An MCP server that manages the state of a chess game for LLMs/agents. It intentionally does not suggest moves. Instead, it provides tools to:
- Create/reset game
- Add a move (UCI)
- List all moves
- Get last N moves
- Machine-friendly board JSON (square-to-piece map) in
get_status() - Check if a move is legal
- Get status (FEN, whose turn, check, game over, result)
Requirements
- Python 3.13+
- uv package manager
Run via uvx directly from GitHub (no local checkout)
You can run this MCP server without cloning by using uvx with a Git URL. Replace placeholders with your repo info and optional tag/commit.
Generic MCP config (Inspector-style):
{
"servers": {
"chess-support-mcp": {
"transport": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/danilop/chess-support-mcp.git",
"chess-support-mcp"
]
}
}
}
}
Claude Desktop mcpServers example:
{
"mcpServers": {
"chess-support-mcp": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/danilop/chess-support-mcp.git",
"chess-support-mcp"
]
}
}
}
The first run may take longer while uvx resolves and builds the package; subsequent runs use cache.
Configure as a local MCP server (JSON)
Use stdio with uv run (no hardcoded paths). Example generic JSON config:
{
"servers": {
"chess-support-mcp": {
"transport": {
"type": "stdio",
"command": "uv",
"args": ["run", "chess-support-mcp"]
}
}
}
}
Include a local path to your project without hardcoding a specific one by using a placeholder and setting the working directory via cwd (preferred), or by passing --project:
Option A (preferred: set working directory):
{
"servers": {
"chess-support-mcp": {
"transport": {
"type": "stdio",
"command": "uv",
"args": ["run", "chess-support-mcp"],
"cwd": "<ABSOLUTE_PATH_TO_PROJECT>"
}
}
}
}
Option B (use uv's project flag):
{
"servers": {
"chess-support-mcp": {
"transport": {
"type": "stdio",
"command": "uv",
"args": ["run", "--project", "<ABSOLUTE_PATH_TO_PROJECT>", "chess-support-mcp"]
}
}
}
}
Claude Desktop configuration (in its JSON settings), using mcpServers:
{
"mcpServers": {
"chess-support-mcp": {
"command": "uv",
"args": ["run", "chess-support-mcp"],
"cwd": "<ABSOLUTE_PATH_TO_PROJECT>"
}
}
}
Tools (Methods)
create_or_reset_game()→ Reset to initial position. Returnsstatus(withpiecesmap), andmoves.get_status()→ Returns FEN;side_to_move(white/black);fullmove_number;halfmove_clock;ply_count;last_move_uci;last_move_san;who_moved_last; check flags;is_game_over;resultwhen over; and apiecesmap for machine reasoning.add_move(uci: str)→ Apply a move if legal (e.g.,e2e4,g1f3, promotion likee7e8q). Returns{ accepted, status }and, on success, alsomovesandmoves_detailed. On failure returns{ accepted:false, reason:"illegal"|"parse_error", expected_turn? }withstatusreflecting the unchanged position.is_legal(uci: str)→ Check legality of a UCI move in the current position.list_moves()→ All moves in UCI made so far.list_moves_detailed()→ All moves withply,side,uci,san.last_moves(n: int=1)→ Last N moves in UCI.last_moves_detailed(n: int=1)→ Last N moves withply,side,uci,san.board_ascii()→ ASCII board (optional, human-oriented). The normal API returns machine-friendly JSON instatus.pieces.
API design notes
- Moves are always provided in UCI (e.g.,
e2e4,g1f3, promotionse7e8q). The server infers side-to-move from position; you never specify white/black when sending a move. get_status().side_to_movetells the model whose turn it is.who_moved_last,last_move_uci, andlast_move_sanhelp with context.- Detailed move lists are provided in separate
*_detailedtools to keep the basic list simple and backwards compatible.
Notes
- The server maintains one in-memory game.
- The server does not provide hints or best moves.
Development
- Run tests:
uv run pytest -q
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.