// editor
Cursor
Donde realmente programas.
Para usuarios de Cursor
Cursor es el editor. En un monorepo, el agente igual necesita un mapa de qué archivo importa. Maguyva indexa tu codebase y lo sirve de vuelta vía MCP (semántico, AST, grafo y texto), así que “dónde pasa la autenticación” devuelve el flujo de auth real, no siete stubs de prueba.
Nivel Free: 3 repositorios, Hasta 50 mil líneas de repo indexadas, sin tarjeta.
Cursor edita lo que le señalas. Maguyva le dice al agente qué archivo señalar.Cuatro piezas. Cada una tiene su trabajo.
// editor
Donde realmente programas.
// contexto manual
El contexto manual funciona, hasta que el repo se hace grande.
// codebase
Hechos automáticos del codebase vía MCP.
// quién paga
Los agentes no pagan asientos. Ver precios
El IDE no es el problema. El autocompletado de tabulador, edit-with-AI, las ediciones multiarchivo y .cursor/rules de Cursor son excelentes, y ya los usas para:
.cursor/rules para convenciones del repo y reglas de estilo.@ para traer un archivo específico al contexto.Sigue haciendo eso. Nada de eso desaparece.
Pero en un monorepo real (TypeScript con dependencias de workspace, servicios en Python, paquetes mixtos) el contexto del agente se rompe en el momento en que el archivo relevante todavía no está en tu radar.
Cuatro arreglos manuales junto con su modo de falla. Izquierda = lo que haces hoy. Derecha = dónde se rompe.
// the fix
Mencionas con @ los tres archivos que crees que importan. Cursor edita limpiamente dentro de ellos.
// where it breaks
Fijar archivos funciona cuando ya sabes cuáles están involucrados. El objetivo de las herramientas de contexto es justamente mostrar los archivos que no sabías que había que fijar.
// the fix
Pegas 200 líneas de otro paquete en el chat para darle al agente suficiente contexto.
// where it breaks
El snippet que pegaste a las 9 a. m. no refleja el rebase que tu compañero hizo a las 11 a. m. El agente está editando contra una versión fantasma del paquete.
// the fix
Escribes un archivo .cursor/rules o un markdown de arquitectura. Hoy está correcto.
// where it breaks
Todo lo que escribes a mano se desactualiza. El código es la fuente de verdad. Un doc que explica la capa de colas es correcto durante una semana, y después está mal para siempre.
// the fix
Agregas .cursor/rules para nomenclatura, lint y comandos de build. Genial para el comportamiento.
// where it breaks
.cursor/rules es el lugar correcto para “siempre ejecuta pnpm tsc -b antes de los commits”. No es un índice consultable de cada símbolo, archivo y punto de llamada en tu monorepo.
No es un reemplazo de Cursor. Es la capa de contexto de repo que se conecta al soporte MCP de Cursor.
.cursor/rules sigue haciendo su trabajo. Las menciones con @ siguen haciendo el suyo. Maguyva llena el hueco que ellos no cubren.Cursor edita el archivo que le señalas.
Maguyva le dice al agente qué archivo señalar.
Entre paquetes, entre lenguajes. Fundamentado en el grafo de llamadas real, no en el grep de Cursor.
// workflow 01
cursor> ¿dónde pasa la autenticación en este monorepo? graph::query("authentication flow") packages/web/src/auth/session.ts:42 middleware packages/api/src/auth/jwt.ts:88 token verify packages/shared/src/auth/types.ts:12 AuthContext packages/admin/src/auth/admin-only.ts:31 rbac gate → 4 puntos de entrada en 4 paquetes, ordenados por densidad de puntos de llamada. [exit 0]
No fijaste ningún archivo. No pegaste ningún snippet. El agente tiene los cuatro archivos que importan, en el orden correcto, y puede hacer una edición fundamentada.
// workflow 02
cursor> ¿cómo maneja normalizePhoneNumber el formato E.164? semantic::query("normalize phone E.164") packages/shared/util/phone.ts:88 normalizePhoneNumber() ← impl real packages/api/test/phone.spec.ts:14 jest.mock(...) ← stub [exit 0]
Los nombres mienten. Los mocks tapan el código real. Maguyva ubica la implementación real por encima del mock de prueba, en todos los paquetes.
// workflow 03
cursor> ¿qué llama a QueueDispatcher.publish en todo el monorepo? graph::callers(QueueDispatcher.publish) 3 en packages/billing/* 1 en packages/audit/* 1 en packages/notifications/* 1 en services/python-worker/* ← entre lenguajes vía stub de gRPC [exit 0]
Entre paquetes, y entre lenguajes cuando tienes un repo políglota, los puntos de llamada aparecen inline. El diff está fundamentado en importadores reales, no en el grep de Cursor.
Tres pasos. Nivel Free: 3 repositorios, Hasta 50 mil líneas de repo indexadas, sin tarjeta.
// step 01
Elige el monorepo donde más has sentido el dolor de contexto.
// step 02
// ~/.cursor/mcp.json
{
"mcpServers": {
"maguyva": {
"url": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer <your-key>"
}
}
}
}// step 03
No empieces con toda tu empresa. Empieza con un repo y una pregunta verificable, como “¿qué llama a formatInvoice entre paquetes?”