MCP: se retira por completo (endpoint, paquete api/app/mcp/ y dependencia). Tres razones, en orden de peso: - Nadie lo usa. - Llevaba roto desde antes de este trabajo. Con credencial valida devolvia 500: el handler construia un StreamableHTTPServerTransport nuevo por peticion, sin manejo de sesion. Lo que estaba expuesto a internet era la puerta abierta de un cuarto averiado. - Su SDK sin fijar tumbo el API entero en produccion al saltar a 2.0.0. Retirarlo es una mitigacion mas fuerte que autenticarlo, que fue lo que hizo el commit anterior. Recuperable con `git show edb500f5:api/app/mcp/server.py`. Se limpia tambien la ruta "/mcp" que el endpoint raiz seguia anunciando, y las menciones a MCP del docstring y la descripcion de Swagger. Dependencias: once de las doce eran rangos `>=` sin techo, o sea que cada reconstruccion era una tirada de dados contra PyPI. `pydantic>=2.0` habria aceptado pydantic 3 con la misma alegria con la que `mcp>=1.0.0` acepto 2.0.0. Ahora todas van fijadas a la version exacta que corre sana en produccion, capturada con pip freeze del contenedor healthy. El lado Next.js ya era reproducible via package-lock.json; por eso el web nunca se cayo durante el incidente y el api si. Docs actualizados: AGENTS.md, README.md, api/COTIZADOR_API_SKILL.md y el spec, que ademas registra en su seccion 0 las tres desviaciones de Fase 0 respecto a lo disenado (el Despliegue B cancelado, la retirada del MCP y la deriva de dependencia). Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
31 lines
1.2 KiB
Plaintext
31 lines
1.2 KiB
Plaintext
# Versiones FIJAS a proposito.
|
|
#
|
|
# Por que: el 2026-07-28 una reconstruccion del API tomo mcp 2.0.0 (el rango era
|
|
# `mcp>=1.0.0`), que elimino Server.list_tools(). El import lanzo AttributeError
|
|
# al arrancar y dejo el contenedor en crash-loop ~50 minutos. Once de las doce
|
|
# dependencias eran rangos `>=` sin techo, o sea que cada build era una tirada de
|
|
# dados contra PyPI: `pydantic>=2.0` habria aceptado pydantic 3 igual de alegre.
|
|
#
|
|
# Estas versiones son exactamente las que corrian sanas en produccion cuando se
|
|
# fijaron (capturadas con `pip freeze` del contenedor healthy).
|
|
#
|
|
# Para subir una dependencia: cambiala aqui a proposito, reconstruye y prueba.
|
|
# Nunca por accidente al redesplegar.
|
|
#
|
|
# Limitacion conocida: esto fija las dependencias DIRECTAS. Las transitivas
|
|
# (starlette, cryptography, anyio...) las sigue resolviendo pip. Es un riesgo
|
|
# mucho menor, pero si algun dia muerde, el siguiente paso es un lock completo
|
|
# con pip-tools o uv.
|
|
|
|
fastapi==0.140.13
|
|
uvicorn[standard]==0.51.0
|
|
asyncpg==0.31.0
|
|
pydantic==2.13.4
|
|
pydantic-settings==2.14.2
|
|
python-jose[cryptography]==3.5.0
|
|
passlib[bcrypt]==1.7.4
|
|
python-multipart==0.0.32
|
|
reportlab==5.0.0
|
|
openpyxl==3.1.5
|
|
httpx==0.28.1
|