Graph Indexer para Cursor es un servidor MCP local que da al agente de Cursor referencias exactas, grafos de llamadas e impacto de cambios de tu proyecto. Ejecuta npx graph-indexer init y escribe .cursor/mcp.json con un servidor graph-indexer, y después añade un bloque corto de instrucciones a AGENTS.md.
¿Cómo añado Graph Indexer a Cursor?
Desde la raíz del repositorio, con Node.js 22.5 o superior:
npx graph-indexer init
init configura Cursor cuando encuentra un directorio .cursor o un archivo .cursorrules. Si no lo detecta, fuérzalo con npx graph-indexer init --agents cursor, o configura todos los agentes soportados a la vez con --all.
¿Qué cambia npx graph-indexer init para Cursor?
Para Cursor, init toca dos archivos y .gitignore:
| Archivo | Contenido |
|---|---|
.cursor/mcp.json | Una entrada graph-indexer bajo mcpServers, fusionada con los servidores existentes |
AGENTS.md | Un bloque gestionado con las reglas de búsqueda y cuándo llamar a find_references, call_graph, change_impact y check_changes |
.gitignore | .graph-indexer/, donde vive el índice local |
Usa --dry-run para previsualizar los cambios y --no-instructions para omitir el bloque de AGENTS.md.
¿Cómo es la configuración manual de Cursor?
La entrada que init escribe en .cursor/mcp.json es:
{
"mcpServers": {
"graph-indexer": {
"command": "npx",
"args": ["-y", "graph-indexer@3", "serve", "--repo", "${workspaceFolder}"]
}
}
}
Si ejecutas Graph Indexer desde un checkout local, init --local escribe las rutas absolutas de Node.js y de bin/graph-indexer.mjs de ese checkout en lugar de npx.
¿Ejecuta Cursor los hooks de Graph Indexer?
En parte, y solo si los activas. npx graph-indexer init --hooks escribe los hooks en .claude/settings.json, y el README de Graph Indexer indica que Cursor también ejecuta esos hooks de Claude Code. El comando responde a los eventos en camelCase de Cursor con su propio campo additional_context. Los hooks son opcionales: las herramientas MCP funcionan sin ellos.
¿Qué gana Cursor con Graph Indexer?
El agente de Cursor recibe ocho herramientas de solo lectura por stdio. Las que más cambian su comportamiento:
find_referencesdevuelve cada uso de un símbolo, ligado por ámbitos, imports y tipos del receptor, agrupado por archivo y función contenedora. Indica si la lista está completa.call_graphmuestra llamadores y llamados entre archivos, con la confianza de cada arista.change_impactdevuelve los dependientes por distancia y los tests que ejecutar antes de cambiar una firma.check_changesdetecta errores de sintaxis, llamadas que ya no encajan y nombres eliminados aún en uso, sin compilar.
Contra el compilador de TypeScript sobre 400 símbolos de nestjs, find_references alcanzó un 99,7 % de precisión y un 96,2 % de recall, frente al 12,8 % de precisión de grep. Graph Indexer no es un comprobador de tipos: los genéricos, la reflexión, any y los tokens de inyección de dependencias se ven solo en parte. Consulta la referencia de herramientas y cómo funciona.
Preguntas frecuentes
¿Por qué la entrada de Cursor usa ${workspaceFolder}?
Pasar --repo ${workspaceFolder} apunta Graph Indexer al espacio de trabajo abierto en Cursor, así el servidor indexa ese proyecto y no el directorio desde el que el editor lo arranque.
¿Dónde van las instrucciones de búsqueda en Cursor?
init añade su bloque gestionado a AGENTS.md, que Cursor lee, y no a un archivo de reglas de Cursor. El bloque va entre marcas graph-indexer:start y graph-indexer:end, así que repetir init lo actualiza en su sitio.
¿Graph Indexer sustituye a la búsqueda de código de Cursor?
No, la complementa con herramientas exactas. La búsqueda de Cursor sirve para ver dónde vive algo; find_references y call_graph responden qué puntos de llamada son reales, algo que una búsqueda por nombre no distingue.
¿Puedo usarlo en un monorepo con Cursor?
Sí. El monorepo de Twenty CRM, con 28.512 archivos, se indexó en 51 segundos con un 99,9 % de precisión y un 92,4 % de recall en referencias. Las sincronizaciones posteriores sin cambios tardaron 1,8 segundos.