infinitebacklog-mcp

Servidor MCP híbrido para Infinite Backlog (https://infinitebacklog.net/), un rastreador gratuito de colecciones de videojuegos multiplataforma. Temas

Documentación

Infinite Backlog MCP

Servidor MCP de Infinite Backlog

Este es un servidor de Model Context Protocol para Infinite Backlog, el rastreador de colecciones gratuito. Infinite Backlog no tiene una API pública de escritura, por lo que las herramientas controlan una ventana de Playwright Chromium. Después de iniciar sesión, los extras anidados aún se pueden consultar con un GET /api/user_collections de solo lectura.

Si eres un asistente que llama a las herramientas, lee AGENTS.md.

Python 3.11+ License: MIT MCP Listed on mcpservers.org

Iniciar sesión

Inicias sesión una sola vez. Después, la misma ventana te recuerda. No se usan tus cookies de Brave, Chrome o Edge.

  • En la ventana. Deja el nombre de usuario y la contraseña vacíos. Se abre una ventana del navegador. Inicia sesión allí tú mismo.
  • En un archivo. Copia .env.example a .env en esta carpeta. Pon tu nombre de usuario o correo en IB_USERNAME, y tu contraseña en IB_PASSWORD.

Lo que puedes hacer

  • Buscar en el catálogo de juegos
  • Actualizar tu colección
  • Establecer calificaciones y escribir reseñas
  • Mantener registros de juego
  • Añadir DLC, paquetes y otros extras a un juego que ya posees

Herramientas

Deterministas (siempre disponibles)

NombreDescripciónEntradas clave
open_siteAbre una ruta de Infinite Backlog en la ventana de Playwright de este servidor. headless=false muestra la ventana para que puedas iniciar sesión una vez.path, wait_ms, headless
search_gamesBusca en el catálogo de juegos.query, wait_ms
get_page_textExtrae el texto visible de la página.max_chars
get_page_htmlLee el HTML de un selector (por defecto body).selector, max_chars
get_linksLista los enlaces de la página actual.max_links
clickHaz clic por selector CSS o text=... en una página de Infinite Backlog. Bloqueado para DELETE GAME, DELETE DRAFT, YES/NO y UNLOCK CUSTOM TAGS.selector, wait_ms
fillRellena un campo de entrada. Rechaza selectores de contraseña y credenciales.selector, value
evaluate_jsJavaScript de página solo para depuración. Deshabilitado a menos que IB_ALLOW_EVAL_JS=true.expression
screenshotGuarda un PNG en el directorio infinitebacklog-mcp temporal del sistema operativo (la ruta está restringida).path, full_page
loginEscribe IB_USERNAME y IB_PASSWORD en el formulario de inicio de sesión. Si falta alguno, no se escribe nada.headless
current_urlDevuelve la URL y el título actuales.ninguna
close_browserCierra la ventana de Playwright. Brave, Chrome y Edge permanecen abiertos.ninguna
list_related_contentLista DLC, paquetes, ediciones y extras relacionados en una página de juego.game_slug, wait_ms
list_collection_content_menusLee Add DLC, DLC propiedad, cajas de complementos y texto de GAME EDITION en un formulario de edición (requiere inicio de sesión).edit_path, wait_ms
add_game_contentAdjunta extras anidados en el formulario de edición principal. Marca las entradas addon-*, no la etiqueta.parent_slug, names, collection_id
list_collection_game_optionsLee copias, control de plataformas adicionales, progreso, adquisición, calificaciones, reseñas y Play Records (sin guardar).slug, collection_id
set_game_ratingEstablece o borra la calificación general de 1-10 más Visual / Gameplay / Story / Audio / Playability.slug, score, sub-calificaciones, clear
add_game_reviewRedacta o publica en /games/{slug}/add-review. Publicar requiere 800+ caracteres.slug, body, publish, title
delete_game_reviewElimina una reseña borrador. Las reseñas publicadas están fuera de alcance a menos que se nombren.slug, confirm, published
add_game_platform_copyAñade otra copia de GAME INFORMATION mediante button.extra-platform.slug, platform, digital, submit
set_game_progressEstablece el estado por copia, finalización, barra de 0-100 y notas.slug, collection_id, status, completion, progress, notes, clear_fields
set_game_acquisitionEstablece o borra ACQUISITION INFO (tipo, fuente, fecha, monto, costos, notas, Digital Service).slug, collection_id, campos de adquisición, clear_fields
delete_game_copyElimina una copia guardada. Haz clic en el único botón DELETE GAME FOR {platform}, luego en YES.collection_id (obligatorio), confirm=true (obligatorio)
list_play_recordsLee las categorías de Play Records en /edit/stats.slug, collection_id
set_play_record_categoryAñade una categoría (keyValue / checkbox / progress / table).slug, name, type, layout
set_play_recordAñade o actualiza una fila dentro de una categoría.slug, category, action, name, value
remove_play_recordElimina una fila, o una categoría completa con confirm=true.slug, category, row_index, confirm

Autónomas (requieren browser-use y una clave de LLM)

NombreDescripciónEntradas clave
run_browser_use_taskObjetivo de alto nivel solo en infinitebacklog.net. El agente planifica y ejecuta con visión y DOM. Ideal para flujos de varios pasos o frágiles.task, max_steps, model, headless

Requisitos

  • Python 3.11 o más reciente
  • Playwright Chromium
  • Un cliente MCP (Cursor, Claude Desktop, VS Code y otros)
  • Una clave de API de LLM solo cuando se usa run_browser_use_task

Instalación

cd infinitebacklog-mcp
python -m venv .venv
# Windows: .venv\Scripts\activate
# Unix: source .venv/bin/activate
pip install -e .
python -m playwright install chromium

Agente autónomo opcional:

pip install -e ".[agent]"

Copia .env.example a .env y completa lo que necesites. No hagas commit de .env.

Inicio rápido

Después de instalar:

infinitebacklog-mcp

O como módulo:

python -m infinitebacklog_mcp.server

El desarrollo sin instalar el script de consola también funciona:

python server.py

El nombre del servidor MCP es infinitebacklog. El registro va solo a stderr, que es lo que requiere el transporte stdio.

Configuración del cliente MCP

Usa la ruta absoluta a este proyecto. Trata las claves de API y IB_PASSWORD como secretos. El proceso carga .env desde el directorio del proyecto y no sobrescribirá las variables que ya hayas establecido.

Comando instalado (estilo Cursor / Claude Desktop):

{
  "mcpServers": {
    "infinitebacklog": {
      "command": "infinitebacklog-mcp",
      "env": {
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Ruta de módulo (desarrollo):

{
  "mcpServers": {
    "infinitebacklog": {
      "command": "python",
      "args": ["-m", "infinitebacklog_mcp.server"],
      "cwd": "/absolute/path/to/infinitebacklog-mcp",
      "env": {
        "OPENAI_API_KEY": "sk-...",
        "IB_USERNAME": "",
        "IB_PASSWORD": ""
      }
    }
  }
}

Inicio de archivo heredado (aún compatible):

{
  "mcpServers": {
    "infinitebacklog": {
      "command": "python",
      "args": ["/absolute/path/to/infinitebacklog-mcp/server.py"],
      "env": {
        "OPENAI_API_KEY": "sk-...",
        "IB_USERNAME": "",
        "IB_PASSWORD": ""
      }
    }
  }
}

Las páginas públicas funcionan sin sesión. Las herramientas de colección necesitan una de las dos rutas de inicio de sesión anteriores.

Variables de entorno

VariableRequeridoDescripción
OPENAI_API_KEYPara la herramienta autónoma (una de las cuatro)Clave de OpenAI para run_browser_use_task
ANTHROPIC_API_KEYAlternativaClave de Anthropic
GOOGLE_API_KEYAlternativaClave de Google
BROWSER_USE_API_KEYAlternativaClave de browser-use Cloud
IB_USERNAMEPara el inicio de sesión de .envNombre de usuario o correo electrónico para el formulario de inicio de sesión de Infinite Backlog. Déjalo en blanco para iniciar sesión mediante Playwright.
IB_PASSWORDPara el inicio de sesión de .envContraseña para ese formulario. Déjala en blanco para iniciar sesión mediante Playwright. Trátala como un secreto.
IB_HEADLESSOpcionalModo headless predeterminado cuando una herramienta no pasa headless (true / false)
IB_VIEWPORT_WIDTHOpcionalAncho de viewport de Playwright (predeterminado 1280, limitado)
IB_VIEWPORT_HEIGHTOpcionalAlto de viewport de Playwright (predeterminado 800, limitado)
IB_ALLOW_EVAL_JSOpcionalHabilitar la herramienta de depuración evaluate_js (true / false, predeterminado false)
IB_CHROMIUM_NO_SANDBOXOpcionalPasar --no-sandbox a Chromium (predeterminado false; solo contenedores)

Seguridad

  • Proyecto no oficial. No afiliado con Infinite Backlog.
  • La navegación, las solicitudes de API dentro de la página y run_browser_use_task permanecen en https://infinitebacklog.net. Otros orígenes son rechazados.
  • evaluate_js está desactivado por defecto. Las capturas de pantalla solo se pueden escribir bajo el directorio temporal del sistema infinitebacklog-mcp. El --no-sandbox de Chromium es opcional mediante IB_CHROMIUM_NO_SANDBOX.
  • El fill genérico rechaza campos de contraseña. Solo login escribe IB_PASSWORD, y solo en el formulario de inicio de sesión de Infinite Backlog.
  • Trata las claves de API y IB_PASSWORD como secretos. No confirmes .env.
  • Los asistentes que usan estas herramientas deben seguir AGENTS.md.

Desarrollo

Estructura del proyecto:

infinitebacklog-mcp/
├── AGENTS.md              # operating brief for MCP client agents
├── src/infinitebacklog_mcp/
│   ├── server.py          # MCPServer, instructions, main()
│   ├── browser.py         # Playwright lifecycle
│   ├── login.py           # Keycloak username/password form
│   ├── config.py          # constants, .env loading
│   ├── security.py        # origin, cookie, path, and identifier allowlists
│   ├── matching.py        # name / kind matching
│   ├── tools/             # deterministic + agent tools
│   └── ...
├── tests/
├── docs/assets/           # README logos
└── server.py              # compatibility shim

Licencia

MIT. Ver LICENSE.