MCP-G0: Servidor MCP — subconjunto Gate 0
Este documento es la especificación implementable del servidor para Gate 0. El catálogo amplio permanece en MCP-SPEC (phase: GATE_0 anotado, pero incluye SSE, resources, entitlements y backend que no son criterios §5.1).
Regla: en conflicto entre MCP-SPEC (catálogo) y MCP-G0 (Gate 0), prevalece MCP-G0 hasta aprobar el gate; luego se puede ampliar hacia el catálogo por decisión explícita.
1. Objetivo runtime
| Ítem | Gate 0 |
|---|---|
| Módulo | :docugraph-mcp |
| SDK | io.modelcontextprotocol:kotlin-sdk:0.1.0 (DEC-003) |
| Main | io.docugraph.mcp.MainKt (ya declarado en Gradle) |
| Transporte | STDIO only |
| Dependencia lógica | :docugraph-core (META-01) |
| Auth / API keys / PostgreSQL | No |
| Entitlement maxDepth freemium | No (usar maxDepth del request tal cual) |
2. Arranque y workspace
# Conceptual
docugraph-mcp --workspace <path>
# o variable de entorno DOCUGRAPH_WORKSPACE
- Si falta workspace → error de arranque no cero / log fatal.
- Carga inicial: Document Loader + parse de todos los
.mdelegibles (META-01). - Re-carga en caliente: no requerida en Gate 0 (reinicio del proceso basta).
3. Tools obligatorios
3.1 get_task_context
| Nombre | get_task_context |
| Descripción | Recorrido upstream por depends_on desde taskId; devuelve context bundle en Markdown con justificación de inclusiones. |
| Parámetros | taskId (string, required); maxDepth (integer, optional, default 5) |
| Retorno | Texto Markdown (MCP text content) |
Comportamiento
- Si
taskIdno existe → error de tool estructurado (TASK_NOT_FOUND). - Resolver bundle según META-01 §7 (determinista).
- Si el grafo tiene ciclos que impiden orden topológico global, el tool puede fallar con
GRAPH_CYCLEo devolver bundle parcial solo del reachable acíclico; Gate 0 preferido: fallar y pedirvalidate_traceability(fail-closed). - Markdown de salida debe incluir sección de justificación por nodo (criterio MASTER-00 §5.1.4).
Plantilla de salida (normativa mínima)
# Context bundle: {taskId}
maxDepth: {n}
truncated: {true|false}
## Inclusion report
- `{id}` depth={d}: {reason}
## Documents
### {id} — {title}
path: {path}
{full markdown file content}
...
3.2 validate_traceability
| Nombre | validate_traceability |
| Descripción | Auditoría de frontmatter, enlaces y ciclos (Tarjan). |
| Parámetros | workspacePath (string, optional) — si se omite, usa workspace del proceso |
| Retorno | JSON (text content) |
Schema JSON mínimo
{
"workspacePath": "...",
"nodeCount": 0,
"edgeCount": 0,
"errors": [
{ "code": "LINK_CYCLE", "message": "...", "nodeId": "...", "path": "..." }
],
"warnings": [],
"valid": true
}
valid === true iff errors vacío.
Códigos: META-01 §6.
4. Tools / capacidades no Gate 0
No implementar como requisito de aprobación:
get_dependency_graphlist_tasks(registrado en el servidor, pero no es criterio obligatorio del gate)get_acceptance_criteria(registrado en el servidor, pero no es criterio obligatorio del gate)analyze_impact(registrada en el servidor, pero no es criterio obligatorio del gate)- Resources
docugraph://… - Prompts
prompt_implement_task/prompt_audit_traceability(útiles después; opcionales) - SSE / HTTP
- Capado freemium
maxDepth=2 - Delegación a
:docugraph-backend
5. Cliente MCP real
Criterio §5.1.1: al menos un cliente real (Junie, Claude Code, Cursor, u otro compatible MCP STDIO) configurado para spawnear el proceso Gradle/JAR y listar/invocar tools.
Estado (2026-08-11): verificado con JetBrains Junie (cliente MCP externo real) vía STDIO spawneando
docugraph-mcp.bat(launcherinstallDist,DOCUGRAPH_WORKSPACE=research/evidence/demo-repo) -> 4/4 PASS (initialize, tools/list, bundle BE-02, validate_traceability, fail-closed). Evidencia y detalle enEXP-01(research/experiments/EXP-01_recuperacion_contexto.md) yDEC-005(research/99_DECISION_LOG.md).
Evidencia esperada en EXP-01: log de sesión o captura de invocación exitosa.
6. Tarea demo BE-02
- Parámetro de evaluación:
get_task_context(taskId="BE-02")sobre repo demo, no sobredocs/backend/BE-02_project-create.md. - Conjunto esperado = gold standard (GATE-0 §5.2), no el grafo del monorepo de producto.
7. Reproducibilidad
- Mismo commit de fixtures demo + mismo binario → mismo bundle (byte-estable tras normalizar EOL si se documenta).
- Documentar en README de evidence el comando exacto de ejecución.
- No depender de relojes ni de orden de filesystem no normalizado (ordenar paths/IDs).
8. Definición de done (servidor)
- [ ] STDIO acepta handshake MCP del SDK.
- [ ] Tools registrados y descubribles.
- [ ]
get_task_contextcumple plantilla y determinismo. - [ ]
validate_traceabilitydetecta link roto y ciclo en fixtures negativos. - [ ] Sin dependencia de red ni DB.
9. Relación con MCP-SPEC
| Tema | MCP-SPEC (catálogo) | MCP-G0 |
|---|---|---|
| Tools | 6 + prompts | 2 mandatory tools (6 registered in the Gate 0 server) |
| Transport | STDIO + SSE | STDIO |
| Backend | BE-03/04/05 | in-process core |
| Auth | API key + Pro | none |