PluginWorld
Do

Docu

MCP

Enables read-only access to generated technical documentation across one or multiple documented repositories, exposing tools to search code and docs, inspect modules and symbols, list gaps, review architecture, and check freshness with file#line citations.

@CharlyZeta · MIT License · updated today

SECURITY

B

SCORE

60

STARS

▲ 0

PLUG IN

git clone https://github.com/CharlyZeta/Docu.git

See the README to configure this MCP server

README

docu

Agente autónomo de documentación técnica: agnóstico, verificable e incremental. Se invoca una vez y entrega documentación en cuatro niveles; después se mantiene solo y aprende de cada instalación.

Estado: siete fases cerradas (F0, F1, F2, F4, F5, F6, F7) + perfil conectado, Nivel 2 y diagramas como código (F3 parcial: falta la capa de prosa con LLM, que es opcional). El agente se documenta a sí mismo: 550 afirmaciones, 0 sin cita, compuerta en verde y auditoría determinista 100/100 sin ningún modelo. El servidor MCP sirve varios repositorios y expone search_code con la recuperación híbrida (1.000 de recall con identificadores, 0.850 en español). 432 tests en verde. Ver Plan.md.

Principios que el código hace cumplir

Principio Dónde se garantiza
Sin evidencia no hay afirmación Claim.verified, ContentNode.is_publishable(), Fact.citation
Publicar es una decisión auditada GatePolicy.evaluate() → PUBLISH / REVIEW / ABORT
Idempotencia index/freshness.py::is_idempotent, hash de 6 componentes, salida byte a byte
Agnosticismo core/ports.py (9 puertos), adapters/langs/registry.py; core/ no importa adapters/
Autonomía con presupuesto Budget.spend() lanza BudgetExhausted en lugar de degradar salida
Fuente volátil no citable sin snapshot Artifact.__post_init__

Lenguajes soportados

Lenguaje Adaptador Extrae
Java adapters/langs/java.py tipos, miembros, anotaciones, imports, rutas Spring
Python adapters/langs/python.py (sobre ast) clases, funciones, decoradores, async, rutas FastAPI/Flask
TypeScript/JS adapters/langs/typescript.py clases, interfaces, enums, decoradores NestJS, rutas, arrow functions

La suite de conformidad (tests/test_conformance.py) exige las 12 construcciones en los tres lenguajes sin tocar core/. Añadir un lenguaje = un paquete nuevo.

Uso

python -m docu.delivery.cli --help          # sin instalar nada (stdlib)
python -m unittest discover -s tests -t .   # suite del núcleo y del arnés

# evaluación de recuperación (necesita .models/multilingual-minilm para el modo híbrido)
python eval/harness.py --golden eval/golden/backend-security-starter.json --index auto --query-field question --expand

Con dependencias opcionales:

pip install -e ".[langs,index,docs,generate,eval]"
docu init                                     # detecta el stack y propone el perfil
docu gen                                      # niveles del perfil, con citas y diagramas
docu gen --level l1 --level l2 --level l4     # manual + operación + onboarding
docu status --root .                          # frescura: fresh / stale / expired
docu gen --incremental                        # regenera solo lo desactualizado
docu audit --report out/auditoria.md          # 5 comprobaciones deterministas, sin modelos
docu ci check                                 # validación rápida para PR (sin modelo)
docu ci regen --out docs/generated            # regenera lo stale y escribe .docu/pr-body.md
docu drift --bootstrap                        # foto inicial del modelo arquitectónico
docu drift                                    # deriva entre lo declarado y el código real
docu serve --mcp --out docs/generated         # servidor MCP de solo lectura
docu learn                                    # resumen del ledger y candidatos
docu learn --promote                          # instala el patrón si supera la compuerta
docu learn --federate --dry-run               # muestra el payload anonimizado (no envía)

Primera instalación

El stack no se declara: se detecta. docu init inspecciona el repositorio (extensiones, artefactos de build y paquetes: __init__.py, sentencia package, barril index.ts), elige los niveles (L3 solo si hay rutas HTTP), siembra el glosario cuando reconoce el framework y escribe docu.profile.yaml con exclusiones razonables. Después, docu gen obedece el perfil: niveles, carpeta de salida, exclusiones, umbrales de la compuerta, TTL y glosario.

Reejecutar init no es destructivo. Si el perfil ya existe, produce una orden de cambio:

orden de cambio propuesta para demo-cambio:
  1. output.levels: ('l1', 'l4') → ('l1', 'l3', 'l4') (se detectaron rutas HTTP: habilita la guía de uso)
  · conservado: thresholds — valor humano: la detección no lo redefine

informe: .docu/init-change-order.md
no se escribió nada. Aplica con `docu init --apply`.

Códigos: 0 aplicado · 10 sin cambios · 20 orden de cambio pendiente de aprobación · 60 perfil inválido. La detección solo puede añadir estructura; nunca reescribe modo, umbrales, TTL ni el glosario que escribió una persona.

Lo que el perfil sí tiene que decidir un humano, porque no es inferible:

Decisión Por qué no se detecta
glossary la jerga del dominio («cadena de filtros» → securityFilterChain) no está en el código
sources.git.exclude qué es producto y qué es herramienta del equipo
acceptance.thresholds cuánta calidad exige este proyecto
sources.web.allowlist a qué dominios puede consultar

Servidor MCP

Cualquier agente compatible (Claude Code, Cursor) consulta la misma documentación que los humanos:

{
  "mcpServers": {
    "docu": {
      "command": "docu",
      "args": ["serve", "--mcp", "--root", ".", "--out", "docs/generated"]
    }
  }
}

Herramientas de solo lectura: list_projects, search_code, search_docs, get_module, get_symbol_doc, list_gaps, get_architecture, get_freshness. Todas las respuestas incluyen citas archivo#L.

search_code es la vía recomendada para preguntas técnicas: usa la recuperación híbrida del producto (retrieve/hybrid.py — léxico + símbolo exacto + denso multilingüe, con el glosario del perfil). search_docs busca en la documentación ya redactada.

Transporte

  • stdio (por defecto): el que usan Claude Code, Cursor y el resto de clientes MCP.
  • HTTP (--port): puente JSON-RPC para consultar desde otro proceso o máquina.
docu serve --mcp --port 8791 --workspace /ruta/a/mis-proyectos
curl -s localhost:8791/health
curl -s -X POST localhost:8791/mcp -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"search_code","arguments":{"query":"dónde se valida el refresh token","project":"Backend-Security-Starter"}}}'

El transporte HTTP implementa JSON-RPC por POST /mcp (más GET /health y GET /projects). No implementa el transporte «Streamable HTTP» del estándar MCP, que exige SSE para mensajes servidor→cliente: es un puente para scripts, integraciones y equipos, no un sustituto del stdio.

Un servidor, varios repositorios. Con --workspace sirve todos los proyectos documentados de una carpeta; el agente elige con el parámetro project:

{
  "mcpServers": {
    "docu-workspace": {
      "command": "docu",
      "args": ["serve", "--mcp", "--workspace", "/ruta/a/mis-proyectos", "--root", "/ruta/a/mis-proyectos/docu"]
    }
  }
}
list_projects                       → {"projects": [{"name":"Docu",…},{"name":"Backend-Security-Starter",…}]}
search_docs(query, project="Docu")  → secciones de ese repositorio, con citas
search_docs(query)                  → error accionable: «hay varios proyectos: indica 'project' (…)»

Estructura

src/docu/core/       contratos, puertos, política, perfil   (stdlib puro, hoja del grafo)
src/docu/index/      chunker sintáctico, metadatos, frescura, paquetes
src/docu/retrieve/   glosario de dominio, híbrido y enrutado
src/docu/generate/   hechos, diagramas Mermaid, cuatro niveles, operación
src/docu/audit/      auditoría determinista (citas, duplicados, coherencia, cobertura, frescura)
src/docu/conformance/ arquitectura prescriptiva vs. real
src/docu/learn/      ledger, patrones, promoción, federación
src/docu/delivery/   CLI, entrada de CI, propuesta de perfil, servidor MCP (solo lectura)
src/docu/adapters/   implementaciones de cada puerto (langs, embedders, stores…)
eval/                golden set, arnés de evaluación, informes
tests/               suite del núcleo + conformidad de lenguajes (432 pruebas)
.models/             modelo ONNX multilingüe (ignorado en git)

Niveles y diagramas

Nivel Documento Para quién
L1 manual técnico ingeniería: arquitectura, diagramas, API, configuración, símbolos
L2 operación y despliegue quien monta el sistema: entorno, puertos, artefactos, comandos, CI
L3 guía de uso negocio: qué se puede hacer, sin jerga
L4 README de onboarding quien llega nuevo

Los diagramas se generan como Mermaid a partir de evidencia y se embeben en el L1 (docs/generated/diagrams/*.mmd): dependencias entre paquetes derivadas de los import reales, clases por paquete con su herencia declarada y flujo de la API. No se generan diagramas de secuencia: el grafo de llamadas no resuelve despacho dinámico y el documento lo declara como hueco.

Documentación del proyecto

  • Guia-v2.md — guía de arquitectura corregida (14 correcciones sobre v1, decisiones cerradas).
  • Plan.md — plan de construcción: KPIs, fases F0–F7, cronograma, riesgos, coste.
  • Guia.txt — documento original, conservado como referencia.

Licencia

MIT (motor). La federación entre instalaciones es opt-in y nunca envía código ni texto.

SIMILAR PLUGINS