Volver a la wiki

Script bib_openapi.py — Indexación OpenAPI de la Biblioteca

Descripción

scripts/bib_openapi.py es el script encargado de extraer el schema OpenAPI de CreaRack Pro e indexarlo en la Biblioteca mediante el handler MCP bib_index_openapi. Refresca todos los nodos endpoint y schema del grafo de conocimiento (~900 nodos en el estado actual del proyecto).

Es el patrón gemelo de scripts/bib_ast.py: misma auth MCP (BIB_MCP_TOKEN), mismo MCP_URL, mismo unwrap defensivo de errores (Regla 15).


Modos de extracción (desde s50)

Desde el commit 05b0bde (05-05-2026), el script soporta dos modos de extracción del schema:

Modo HTTP (preferido, default)

BIB_MCP_TOKEN=... INTERNAL_TOOLS_TOKEN=... python scripts/bib_openapi.py --push

Modo docker exec (fallback, dev local)

python scripts/bib_openapi.py --container crearack-pro-zcmvsl-web-1 --push

Referencia de argumentos

ArgumentoDefaultDescripción
--urlhttps://crearack.com/api/openapi-exportEndpoint HTTP a consultar
--internal-token$INTERNAL_TOOLS_TOKENBearer token para autenticación HTTP
--containerautodetectFuerza modo docker exec
--mcp-urlhttps://workspace.crearack.com/api/mcpURL del handler MCP
--mcp-token$BIB_MCP_TOKENToken auth del MCP
--output <file>—Guarda el JSON a archivo sin postear
--push—Postea el schema al handler MCP
--stats—Muestra estadísticas (paths/schemas) y sale

Funciones principales

FunciónDescripción
extract_openapi_via_http(url, token)Modo HTTP: GET con Bearer auth. Maneja 401, URLError, JSONDecodeError.
extract_openapi_via_docker(container)Modo docker: subprocess.run(docker exec ...). OOM → rc=137 con aviso.
autodetect_container()Detecta el container web activo vía docker ps.
push_to_mcp(openapi_json, mcp_url, token)Postea el spec al handler bib_index_openapi con unwrap defensivo.
stats(openapi_json)Cuenta paths y schemas del spec.

Variables de entorno requeridas

VariableObligatoria paraDescripción
INTERNAL_TOOLS_TOKENModo HTTPBearer token del endpoint /api/openapi-export
BIB_MCP_TOKEN--pushToken de autenticación del MCP de la Biblioteca

Lógica de decisión de modo

if args.container:
    openapi_json = extract_openapi_via_docker(args.container)
else:
    url = args.url or DEFAULT_OPENAPI_URL
    openapi_json = extract_openapi_via_http(url, args.internal_token.strip())

Integración con cron

scripts/cron-bib-reindex.sh --extras-only invoca este script en modo HTTP, leyendo el token desde /opt/bib-reindex/.token-internal (chmod 600). Ver runbook para configuración.


Véase también

Subir