v0.2.7
Added
-
MCP Resources — 5 static + 6 templated resources under the
cima://URI scheme. New moduleapp/resources.py+
register_resources(server)integration.Static (auto-discoverable via
resources/list):
cima://maestras/{atc,principios-activos,laboratorios,formas-farmaceuticas,vias-administracion}.Templates (
resources/templates/list):
cima://maestras/atc/{codigo},
cima://maestras/principios-activos/{id},
cima://docs/ficha-tecnica/{nregistro}[/{seccion}],
cima://docs/prospecto/{nregistro}[/{seccion}].Beneficios:
- Streaming: HTML completo de FT/Prospecto fluye al cliente sin
pasar por una llamada a tool — addresses ROADMAP "Beyond 1.0" item
#1 (streaming responses for large HTML / leaflet downloads). - Cacheabilidad: las maestras (ATC, principios activos,
laboratorios) cambian raramente. Exponerlas como URIs estáticas
permite a los clientes cachearlas indefinidamente y elimina el
coste de tokens dominante en sesiones interactivas (llamadas
repetidas aconsultar_maestras). - Discoverability: las URIs estáticas aparecen en la UI de
Claude Desktop / Continue / Cursor sin que el LLM tenga que
saber que existen.
- Streaming: HTML completo de FT/Prospecto fluye al cliente sin
Changed
- HTTP transport migrado a FastMCP nativo (Streamable HTTP). La
capa fastapi-mcp 0.4.x se elimina por completo; el endpoint/mcp
ahora monta directamente elstreamable_http_app()del FastMCP
server compartido con stdio. Beneficios:- Single source of truth: los 21 tools, 9 prompts, 11 resources
y las anotaciones son el mismoFastMCPserver detrás de stdio y
de/mcp. Imposible drift entre transportes. - Tool annotations nativas: ya no se mutan los Tool objects
post-construcción (era un workaround porque fastapi-mcp 0.4.x no
propagabaannotationsdesde la ruta OpenAPI). - Prompts y resources en HTTP: la limitación documentada en
v0.2.6 ("HTTP no expone prompts") queda resuelta. - Una indirección menos: las llamadas MCP via HTTP ya no hacen
un round-trip httpx interno hacia las rutas FastAPI — golpean
core_<op>directamente.
- Single source of truth: los 21 tools, 9 prompts, 11 resources
app.lifespan.build_lifespanaceptafastmcp_serveropcional para
anidar elsession_manager.run()del FastMCP en el lifespan exterior
de FastAPI (necesario porque las sub-apps Starlette montadas no
ejecutan su lifespan automáticamente).app.stdio_server.build_serveraceptastreamable_http_pathpara
configurar la ruta interna del Streamable-HTTP app (default/mcp
para uso standalone;create_apppasa"/"para mounting limpio).
Removed
- Dependencia
fastapi-mcp==0.4.0. Eliminada depyproject.tomly
requirements.txt. Reduce el árbol de deps y libera futuras
decisiones de transporte.
Tests
- 94/94 passing (was 86). 9 nuevos tests en
tests/test_resources.py
pinneando el catálogo, MIME types, slugs maestra ↔ id, parámetros
de templates, validación de input. Reemplazado el test legado
test_every_http_tool_has_read_only_annotationspor
test_http_transport_uses_the_same_fastmcp_serverque valida que
HTTP y stdio comparten el mismoFastMCPserver.