Chess UCI
Conéctate a motores de ajedrez compatibles con UCI como Stockfish para jugar y analizar partidas. Requiere un binario local del motor de ajedrez.
Documentación
chess-uci-mcp
Un puente MCP que proporciona una interfaz para motores de ajedrez compatibles con UCI (como Stockfish o Leela Chess Zero).
El lado UCI se ejecuta en esca: habla el protocolo con el motor y responde cada pregunta de ajedrez que el puente tenga en el camino.
Dependencias
Necesitas tener Python 3.12 o más reciente, y también uv/uvx instalados.
Uso
Para funcionar, requiere un motor de ajedrez compatible con UCI instalado, como Stockfish (ha sido probado con Stockfish 17).
En el caso de Stockfish, puedes descargarlo desde https://stockfishchess.org/download/.
En macOS, puedes usar brew install stockfish.
Necesitas averiguar la ruta al binario de tu motor compatible con UCI; para la configuración de ejemplo adicional, la ruta es, p. ej., /usr/local/bin/stockfish (que es el valor predeterminado para Stockfish instalado en macOS usando Brew).
La configuración adicional debe realizarse en tu configuración de MCP;
para Claude Desktop, este es el archivo claude_desktop_config.json (encuéntralo en el menú Configuración, Desarrollador, y luego Editar configuración).
La ruta completa en diferentes sistemas operativos
- macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Agrega la siguiente configuración a tu configuración de MCP (según la forma de ejecutarlo que prefieras):
Uvx (recomendado)
Uvx puede ejecutar directamente la aplicación de Python por su nombre, asegurando todas las dependencias, en un entorno virtual creado automáticamente.
Esta es la forma preferida de ejecutar el puente chess-uci-mcp.
Configura tu archivo de configuración del servidor MCP (p. ej., configuración de Claude Desktop) de la siguiente manera:
"mcpServers": {
"chess-uci-mcp": {
"command": "uvx",
"args": ["chess-uci-mcp@latest", "/usr/local/bin/stockfish"]
}
}
Para pasar opciones al motor, agrégalas al arreglo args. Por ejemplo, para establecer las opciones Threads y Hash para Stockfish:
"mcpServers": {
"chess-uci-mcp": {
"command": "uvx",
"args": [
"chess-uci-mcp@latest",
"/usr/local/bin/stockfish",
"-o", "Threads", "4",
"-o", "Hash", "128"
]
}
}
Uv
Úsalo si tienes el repositorio clonado localmente y lo ejecutas desde allí:
"mcpServers": {
"chess-uci-mcp": {
"command": "uv",
"args": ["run", "chess-uci-mcp", "/usr/local/bin/stockfish"]
}
}
De manera similar, para pasar opciones al ejecutar con uv:
"mcpServers": {
"chess-uci-mcp": {
"command": "uv",
"args": [
"run",
"chess-uci-mcp",
"/usr/local/bin/stockfish",
"-o", "Threads", "4",
"-o", "Hash", "128"
]
}
}
Opciones de línea de comandos
La aplicación acepta las siguientes opciones de línea de comandos:
ENGINE_PATH: (Obligatorio) La ruta al ejecutable del motor de ajedrez compatible con UCI.--uci-optiono-o: Establece una opción UCI. Esta opción se puede usar varias veces. Toma dos argumentos: el nombre de la opción y su valor (p. ej.,-o Threads 4).--think-time: El tiempo de pensamiento predeterminado para el motor en milisegundos. El valor predeterminado es1000.--debug: Habilita el registro de depuración.
Comandos MCP disponibles
El puente proporciona los siguientes comandos MCP:
analyze- Analizar una posición de ajedrez especificada por la cadena FENget_best_move- Obtener el mejor movimiento para una posición de ajedrezset_position- Establecer la posición de ajedrez actualengine_info- Obtener información sobre el motor de ajedrezget_engine_options- Obtener todas las opciones UCI disponibles del motor con sus metadatos y valores actualesset_engine_options- Establecer una o más opciones UCI del motor en tiempo de ejecución
Desarrollo
# Clone the repository
git clone https://github.com/AnglerfishChess/chess-uci-mcp.git
# ... or
# git clone git@github.com:AnglerfishChess/chess-uci-mcp.git
cd chess-uci-mcp
# Create a virtual environment
uv venv --python python3.13
# Activate the virtual environment
source .venv/bin/activate # On Unix/macOS
# or
.venv\Scripts\activate # On Windows
# Install the package in development mode
# uv pip install -e .
# or, with development dependencies
uv pip install -e ".[dev]"
# Resync the packages:
uv sync --extra=dev
# Run tests
pytest
# Check code style
ruff check
Proceso de publicación
La lista de verificación se encuentra en la habilidad releasing bajo .claude/skills/, por lo que una publicación se ejecuta de la misma manera cada
vez: condiciones previas, aumento de versión, etiqueta, publicación en GitHub. Publicar una versión en GitHub es el desencadenante: desde allí
.github/workflows/publish.yml compila el paquete y lo sube a PyPI a través de un
editor de confianza, y luego republica la entrada del registro MCP. Ambos
se autentican mediante OIDC, por lo que no se almacena ningún token en este repositorio ni en la máquina de ningún desarrollador.
Nada es automático: una publicación solo ocurre cuando una persona publica la versión en GitHub.
pyproject.toml contiene la versión, y cada otra copia se deriva de ella:
uv sync --extra=dev # updates uv.lock, keeping the dev tools installed
uv run python .claude/skills/releasing/scripts/sync_version.py
Eso escribe chess_uci_mcp/__init__.py y ambos campos de versión en server.json. Pasar --check en su lugar
informa la desviación sin tocar nada, que es lo que ejecuta CI.
El registro MCP
registry.modelcontextprotocol.io es el índice autoritativo de servidores MCP públicos, consumido por Smithery, PulseMCP, Docker Hub y otros. No tiene cuadro de búsqueda; es una API:
curl -s "https://registry.modelcontextprotocol.io/v0/servers?search=chess-uci-mcp&limit=3"
El listado se describe mediante server.json, bajo el nombre io.github.AnglerfishChess/chess-uci-mcp. La autenticación
de GitHub otorga el espacio de nombres io.github.<user>/*; un espacio de nombres de organización además requiere derechos de Propietario
en esa organización, y el nombre distingue entre mayúsculas y minúsculas.
La propiedad del paquete de PyPI se demuestra mediante el marcador mcp-name: cerca de la parte superior de este README, que se convierte en la
descripción del paquete en PyPI. El registro lo lee del artefacto publicado, por lo que agregarlo a git no es
suficiente: solo cuenta una vez que una publicación que lo lleva llega a PyPI. Ten en cuenta también que el registro limita description
a 100 caracteres donde PyPI no lo hace, por lo que server.json lleva su propia descripción de una línea en lugar
de reutilizar la del proyecto.
Proyectos relacionados
- esca — la biblioteca de ajedrez MIT en Rust/Python que habla UCI para este servidor.
- chessplaza — estafadores de ajedrez con IA con personalidades, jugando a través de este servidor.