494a95d80c
- streamable_http_app() espone /mcp internamente; mount a root evita doppio prefisso. - mcp.session_manager.run() integrato nel lifespan FastAPI: l'app mounted non riceve automaticamente il proprio lifespan -> la task group streamable-http non veniva inizializzata e le richieste MCP fallivano con RuntimeError. Smoke test end-to-end via gateway Caddy (porta 8090): - MCP initialize handshake OK - tools/list espone 6 tool corretti - template_create + template_list: round-trip con persistenza su volume - document_generate propaga LLMAuthError come MCP isError:true - Registrato in claude mcp list: ✓ Connected Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
mcp-docugen
MCP server per generazione documenti Markdown da template + LLM (OpenRouter).
Design: ../../docs/mcp-docugen-design.md
Plan: ../../docs/mcp-docugen-implementation.md
Dev
Dalla root del repo:
uv sync --all-groups
uv run --package mcp-docugen mcp-docugen
Test
uv run --package mcp-docugen pytest services/mcp-docugen
Docker
# build (dalla root)
docker build -f docker/base.Dockerfile -t arca-base:latest .
docker build -f docker/mcp-docugen.Dockerfile -t arca-mcp-docugen:dev .
# o via compose
docker compose build mcp-docugen
docker compose up mcp-docugen
Env
Vedi .env.example. Variabili obbligatorie: API_KEY, OPENROUTER_API_KEY, PUBLIC_BASE_URL.