infinitebacklog-mcp
Servidor MCP híbrido para Infinite Backlog (https://infinitebacklog.net/), un rastreador gratuito de colecciones de videojuegos multiplataforma. Temas
Documentación
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.
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
.enven esta carpeta. Pon tu nombre de usuario o correo enIB_USERNAME, y tu contraseña enIB_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)
| Nombre | Descripción | Entradas clave |
|---|---|---|
open_site | Abre 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_games | Busca en el catálogo de juegos. | query, wait_ms |
get_page_text | Extrae el texto visible de la página. | max_chars |
get_page_html | Lee el HTML de un selector (por defecto body). | selector, max_chars |
get_links | Lista los enlaces de la página actual. | max_links |
click | Haz 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 |
fill | Rellena un campo de entrada. Rechaza selectores de contraseña y credenciales. | selector, value |
evaluate_js | JavaScript de página solo para depuración. Deshabilitado a menos que IB_ALLOW_EVAL_JS=true. | expression |
screenshot | Guarda un PNG en el directorio infinitebacklog-mcp temporal del sistema operativo (la ruta está restringida). | path, full_page |
login | Escribe IB_USERNAME y IB_PASSWORD en el formulario de inicio de sesión. Si falta alguno, no se escribe nada. | headless |
current_url | Devuelve la URL y el título actuales. | ninguna |
close_browser | Cierra la ventana de Playwright. Brave, Chrome y Edge permanecen abiertos. | ninguna |
list_related_content | Lista DLC, paquetes, ediciones y extras relacionados en una página de juego. | game_slug, wait_ms |
list_collection_content_menus | Lee 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_content | Adjunta extras anidados en el formulario de edición principal. Marca las entradas addon-*, no la etiqueta. | parent_slug, names, collection_id |
list_collection_game_options | Lee copias, control de plataformas adicionales, progreso, adquisición, calificaciones, reseñas y Play Records (sin guardar). | slug, collection_id |
set_game_rating | Establece o borra la calificación general de 1-10 más Visual / Gameplay / Story / Audio / Playability. | slug, score, sub-calificaciones, clear |
add_game_review | Redacta o publica en /games/{slug}/add-review. Publicar requiere 800+ caracteres. | slug, body, publish, title |
delete_game_review | Elimina una reseña borrador. Las reseñas publicadas están fuera de alcance a menos que se nombren. | slug, confirm, published |
add_game_platform_copy | Añade otra copia de GAME INFORMATION mediante button.extra-platform. | slug, platform, digital, submit |
set_game_progress | Establece el estado por copia, finalización, barra de 0-100 y notas. | slug, collection_id, status, completion, progress, notes, clear_fields |
set_game_acquisition | Establece o borra ACQUISITION INFO (tipo, fuente, fecha, monto, costos, notas, Digital Service). | slug, collection_id, campos de adquisición, clear_fields |
delete_game_copy | Elimina 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_records | Lee las categorías de Play Records en /edit/stats. | slug, collection_id |
set_play_record_category | Añade una categoría (keyValue / checkbox / progress / table). | slug, name, type, layout |
set_play_record | Añade o actualiza una fila dentro de una categoría. | slug, category, action, name, value |
remove_play_record | Elimina 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)
| Nombre | Descripción | Entradas clave |
|---|---|---|
run_browser_use_task | Objetivo 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
| Variable | Requerido | Descripción |
|---|---|---|
OPENAI_API_KEY | Para la herramienta autónoma (una de las cuatro) | Clave de OpenAI para run_browser_use_task |
ANTHROPIC_API_KEY | Alternativa | Clave de Anthropic |
GOOGLE_API_KEY | Alternativa | Clave de Google |
BROWSER_USE_API_KEY | Alternativa | Clave de browser-use Cloud |
IB_USERNAME | Para el inicio de sesión de .env | Nombre 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_PASSWORD | Para el inicio de sesión de .env | Contraseña para ese formulario. Déjala en blanco para iniciar sesión mediante Playwright. Trátala como un secreto. |
IB_HEADLESS | Opcional | Modo headless predeterminado cuando una herramienta no pasa headless (true / false) |
IB_VIEWPORT_WIDTH | Opcional | Ancho de viewport de Playwright (predeterminado 1280, limitado) |
IB_VIEWPORT_HEIGHT | Opcional | Alto de viewport de Playwright (predeterminado 800, limitado) |
IB_ALLOW_EVAL_JS | Opcional | Habilitar la herramienta de depuración evaluate_js (true / false, predeterminado false) |
IB_CHROMIUM_NO_SANDBOX | Opcional | Pasar --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_taskpermanecen enhttps://infinitebacklog.net. Otros orígenes son rechazados. evaluate_jsestá desactivado por defecto. Las capturas de pantalla solo se pueden escribir bajo el directorio temporal del sistemainfinitebacklog-mcp. El--no-sandboxde Chromium es opcional medianteIB_CHROMIUM_NO_SANDBOX.- El
fillgenérico rechaza campos de contraseña. SolologinescribeIB_PASSWORD, y solo en el formulario de inicio de sesión de Infinite Backlog. - Trata las claves de API y
IB_PASSWORDcomo 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.