Adriano e8705dcd0b feat(mcp-docugen): Task 7-10 renderer, http_routes, mcp_tools, main bootstrap
- Renderer: orchestratore generate() — validazione strict variabili,
  materializzazione image vars come asset effimeri su disco + URL rewrite,
  asset paths template da ./assets/X -> {PUBLIC_BASE_URL}/assets/<t>/X,
  integrazione LLM error -> record success=0
- FastAPI sub-app: GET /health (no auth), /assets/{t}/{f} (auth+traversal check),
  /generated/{gen_id}/{f} (410 su scaduto o mancante)
- FastMCP server con 6 tool: template_create/update/delete/list/get,
  document_generate. Tools esposti anche via mcp.tools dict per test.
- main.build_app() compone http_app + FastMCP mount su /mcp + auth middleware
  + lifespan cleanup task TTL (24h). run() entry point per script console.

68 test passed. Build Docker arca-mcp-docugen:dev verificata,
/health endpoint risponde correttamente nel container.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 12:27:16 +02:00

ArcaSuite

Monorepo per il sistema documentale personale+aziendale di Adriano e gli MCP server che lo supportano.

Cos'è

Due pezzi, stesso repo:

  1. Sistema Documentale — vault multi-wiki Markdown versionati su Gitea, pubblicati in sola lettura via Quartz, editabili da Obsidian + Claude Code. Vedi docs/sistema-documentale.md.
  2. MCP server — microservizi MCP riusabili dai wiki (e da altri client Claude). Ogni MCP vive in services/mcp-<nome>/ come membro del workspace uv.

MCP previsti

Servizio Stato Funzione
mcp-docugen Design pronto, implementazione da iniziare Genera Markdown formale da template + LLM (OpenRouter). Vedi docs/mcp-docugen-design.md + docs/mcp-docugen-implementation.md.
mcp-convert Da progettare Conversione Markdown → PDF / DOCX / HTML (pandoc/typst backend).
mcp-inbox Da progettare Ingest da Telegram (+ STT opzionale via Whisper) verso draft inbox consumati da Claude Code desktop.

Ogni MCP ha il suo pyproject.toml, src/mcp_<nome>/, tests/ e Dockerfile. Viene registrato in pyproject.toml root come workspace member.

Layout

ArcaSuite/
├── docs/                         # design + implementation plan per componente
│   ├── sistema-documentale.md
│   ├── mcp-docugen-design.md
│   └── mcp-docugen-implementation.md
├── services/                     # workspace members uv (uno per MCP)
│   └── mcp-<nome>/               # src/ tests/ pyproject.toml Dockerfile
├── scripts/                      # script operativi (provisioning, backup, smoke)
├── secrets/                      # chiavi, token (gitignored)
├── docker-compose.yml            # stack completo (TODO: arriverà con primo MCP)
├── pyproject.toml                # workspace uv + ruff + pytest root
├── .env.example                  # config root stack
├── .mcp.json.example             # template registrazione client MCP
└── .gitignore

Convenzioni

  • Nomenclatura: mcp-<nome> per tutti gli MCP (pattern Cerbero). Package Python: mcp_<nome> (snake_case).
  • Package manager: uv workspace. Nessun requirements.txt. uv.lock committato.
  • Python: 3.11+, async-first, Pydantic v2 per ogni I/O.
  • Testing: pytest + pytest-asyncio, asyncio_mode = "auto", test sotto services/<svc>/tests/.
  • Lint: ruff (config root), line 100.
  • Config: ogni servizio ha un proprio .env.example. Root .env solo per cose cross-cutting (gateway port, dominio pubblico).
  • Secrets: mai committati. .mcp.json locale gitignored, solo .mcp.json.example tracciato.

Riferimento spec Python

Servizi non-MCP (es. eventuali inbox-service REST) seguono /home/adriano/Documenti/Struttura_Progetti/2026-04-01-python-project-spec-design.md. Gli MCP server seguono la struttura specifica descritta nei rispettivi design doc (FastMCP come root ASGI).

Setup (quando ci sarà il primo MCP implementato)

cp .env.example .env
cp .mcp.json.example .mcp.json   # compila con URL + API key
uv sync --all-groups

Remote

  • Gitea: ssh://git@git.tielogic.xyz:222/Adriano/ArcaSuite.git
S
Description
No description provided
Readme 632 KiB
Languages
Python 92.6%
CSS 5.4%
Dockerfile 1.4%
HTML 0.6%