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-option o -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 es 1000.
  • --debug: Habilita el registro de depuración.

Comandos MCP disponibles

El puente proporciona los siguientes comandos MCP:

  1. analyze - Analizar una posición de ajedrez especificada por la cadena FEN
  2. get_best_move - Obtener el mejor movimiento para una posición de ajedrez
  3. set_position - Establecer la posición de ajedrez actual
  4. engine_info - Obtener información sobre el motor de ajedrez
  5. get_engine_options - Obtener todas las opciones UCI disponibles del motor con sus metadatos y valores actuales
  6. set_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.

Sitios relacionados

Certificado por MCP Review