Graph Indexer para OpenCode es un servidor MCP local que da a OpenCode referencias exactas, grafo de llamadas e impacto de cambios a partir de un índice de tu repositorio. Ejecuta npx graph-indexer init y añade una entrada graph-indexer a opencode.json; con --hooks instala además un plugin de OpenCode.
¿Cómo añado Graph Indexer a OpenCode?
Desde la raíz del repositorio, con Node.js 22.5 o superior:
npx graph-indexer init
init configura OpenCode cuando encuentra opencode.json, opencode.jsonc o una carpeta .opencode. Para forzarlo, usa npx graph-indexer init --agents opencode. OpenCode y Kilo Code comparten el mismo destino de init, porque Kilo Code lee la misma configuración.
¿Qué cambia npx graph-indexer init en OpenCode?
Para OpenCode, init toca estos archivos:
| Archivo | Contenido |
|---|---|
opencode.json | Una entrada graph-indexer bajo mcp, fusionada con tus otros servidores |
AGENTS.md | Un bloque gestionado con las reglas de búsqueda y cuándo llamar a cada herramienta |
.gitignore | .graph-indexer/, donde vive el índice local |
.opencode/plugins/graph-indexer.js | El plugin, solo con --hooks |
Usa --dry-run para previsualizar todo y --no-instructions para omitir el bloque de AGENTS.md. Al volver a ejecutar init, el bloque se actualiza en su sitio entre los marcadores graph-indexer:start y graph-indexer:end.
¿Cómo es la configuración manual de OpenCode?
OpenCode usa su propio formato MCP: un objeto mcp, el tipo local y el comando como un único array. La entrada que escribe init es:
{
"mcp": {
"graph-indexer": {
"type": "local",
"command": ["npx", "-y", "graph-indexer@3", "serve"],
"enabled": true
}
}
}
Con init --local, el comando apunta al bin/graph-indexer.mjs de tu checkout en lugar de a npx.
¿Qué hace el plugin de OpenCode?
El plugin de Graph Indexer para OpenCode añade contexto breve y factual a la salida de las herramientas read, grep, bash, edit y write de OpenCode. Consulta el proceso residente de Graph Indexer del repositorio por un socket local, nunca por red. Añade tres cosas:
- Cuando el agente está “rastreando” (varias búsquedas o lecturas desde la última edición), una lectura muestra también dónde se definen los nombres de esas líneas.
- Tras una búsqueda que no encontró una definición, la salida indica dónde está.
- Tras una edición, informa de lo que ha roto: errores de sintaxis, llamadas que ya no encajan con una firma cambiada, nombres eliminados que siguen en uso.
El plugin falla en abierto: si el proceso no responde, no añade nada. Instálalo con npx graph-indexer init --hooks. Consulta cómo funciona para el proceso residente.
¿Qué gana OpenCode con Graph Indexer?
El agente de OpenCode obtiene ocho herramientas de solo lectura. find_references lista cada uso real de un símbolo, resuelto por ámbitos, imports y tipos del receptor. call_graph muestra llamadores y llamados, change_impact muestra dependientes y los tests que ejecutar, y check_changes verifica las ediciones sin compilar.
Frente al compilador de TypeScript en 400 símbolos de nestjs, find_references alcanzó un 99,7 % de precisión y un 96,2 % de recall, mientras que grep llegó al 12,8 % de precisión (benchmarks). Graph Indexer no es un verificador de tipos: los genéricos, la reflexión, any y los tokens de inyección de dependencias solo se ven en parte. Graph Indexer no hace llamadas de red ni envía telemetría; OpenCode sigue enviando lo que lee a su proveedor de modelo. Consulta la referencia de herramientas y los demás agentes.
Preguntas frecuentes
¿Necesita Graph Indexer el plugin de OpenCode para funcionar?
No. El servidor MCP por sí solo da a OpenCode las ocho herramientas. El plugin es opcional y solo añade contexto a la salida de read, grep, bash, edit y write de OpenCode. Solo se escribe si pasas --hooks.
¿Qué pasa si el plugin no consigue hablar con Graph Indexer?
No añade nada y deja intacta la salida de la herramienta. En el primer fallo arranca el proceso en segundo plano de Graph Indexer para las siguientes llamadas. Cualquier error se descarta, así que el plugin nunca rompe una herramienta de OpenCode.
¿Por qué la entrada de OpenCode no lleva --repo?
OpenCode lanza el servidor dentro del proyecto y, sin --repo, Graph Indexer indexa el repositorio git del directorio actual. Puedes pasar --repo o definir GRAPH_INDEXER_REPO para apuntar a otra ruta.
¿Y si mi opencode.json tiene comentarios?
init nunca reescribe una configuración cuyos comentarios o sintaxis JSONC se perderían al pasar por JSON. Deja el archivo como está e imprime la entrada exacta para que la pegues bajo mcp, sin perder nada de tu configuración.