// editor
Cursor
Onde você realmente programa.
Para usuários do Cursor
O Cursor é o editor. Num monorepo, o agente ainda precisa de um mapa de qual arquivo importa. O Maguyva indexa o seu codebase e devolve isso via MCP (semântica, AST, grafo e texto), para que “onde acontece a autenticação” retorne o fluxo de auth de verdade, não sete stubs de teste.
Plano Free: 3 repositórios, Até 50 mil linhas de repositório indexadas, sem cartão.
O Cursor edita o que você aponta. O Maguyva diz ao agente qual arquivo apontar.Quatro peças. Cada uma com uma função.
// editor
Onde você realmente programa.
// contexto manual
Contexto manual funciona, até o repositório ficar grande.
// codebase
Fatos automáticos do codebase via MCP.
// quem paga
Agentes não pagam assento. Ver preços
A IDE não é o problema. O tab completion do Cursor, o edit-with-AI, as edições multi-arquivo e o .cursor/rules são excelentes, e você já usa isso para:
.cursor/rules para convenções do repositório e guardrails de estilo.@ para trazer um arquivo específico para o contexto.Continue fazendo isso. Nada disso vai embora.
Mas num monorepo de verdade (TypeScript com dependências de workspace, serviços Python, pacotes misturados) o contexto do agente quebra no momento em que o arquivo relevante ainda não está no seu radar.
Quatro soluções manuais emparelhadas com seus modos de falha. Esquerda = o que você faz hoje. Direita = onde quebra.
// the fix
Você menciona com @ os três arquivos que acha que importam. O Cursor edita neles com precisão.
// where it breaks
Fixar funciona quando você já sabe quais arquivos estão envolvidos. O objetivo das ferramentas de contexto é justamente revelar os arquivos que você não sabia que precisava fixar.
// the fix
Você cola 200 linhas de outro pacote no chat para dar contexto suficiente ao agente.
// where it breaks
O trecho que você colou às 9h não reflete o rebase que seu colega de time fez às 11h. O agente está editando contra uma versão fantasma do pacote.
// the fix
Você escreve um arquivo .cursor/rules ou um markdown de arquitetura. Está certo hoje.
// where it breaks
Tudo que você escreve à mão desatualiza. O código é a fonte da verdade. Um doc explicando a camada de fila está correto por uma semana, e errado para sempre depois.
// the fix
Você adiciona .cursor/rules para nomenclatura, lint, comandos de build. Ótimo para comportamento.
// where it breaks
.cursor/rules é o lugar certo para “sempre rode pnpm tsc -b antes de cada commit.” Não é um índice consultável de cada símbolo, arquivo e call-site no seu monorepo.
Não é um substituto do Cursor. É a camada de contexto de repositório que se conecta ao suporte MCP do Cursor.
.cursor/rules continua fazendo o trabalho dele. As menções com @ continuam fazendo o delas. O Maguyva preenche a lacuna que eles não preenchem.O Cursor edita o arquivo que você aponta.
O Maguyva diz ao agente qual arquivo apontar.
Entre pacotes, entre linguagens. Fundamentado no grafo de chamadas real, não no grep do Cursor.
// workflow 01
cursor> onde acontece a autenticação nesse 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 pontos de entrada em 4 pacotes, ranqueados por densidade de call-sites. [exit 0]
Você não fixou nenhum arquivo. Você não colou nenhum trecho. O agente tem os quatro arquivos que importam, na ordem certa, e pode fazer uma edição fundamentada.
// workflow 02
cursor> como o normalizePhoneNumber trata o 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]
Nomes mentem. Mocks fazem sombra no código real. O Maguyva ranqueia a implementação real acima do mock de teste, em todos os pacotes.
// workflow 03
cursor> o que chama QueueDispatcher.publish em todo o monorepo? graph::callers(QueueDispatcher.publish) 3 em packages/billing/* 1 em packages/audit/* 1 em packages/notifications/* 1 em services/python-worker/* ← entre linguagens via stub gRPC [exit 0]
Entre pacotes, e entre linguagens quando você tem um repositório poliglota, os call-sites aparecem inline. O diff é fundamentado em importadores reais, não no grep do Cursor.
Três passos. Plano Free: 3 repositórios, Até 50 mil linhas de repositório indexadas, sem cartão.
// step 01
Escolha o monorepo onde você mais sentiu dor de contexto.
// step 02
// ~/.cursor/mcp.json
{
"mcpServers": {
"maguyva": {
"url": "https://maguyva.tools/mcp",
"headers": {
"Authorization": "Bearer <your-key>"
}
}
}
}// step 03
Não comece com a empresa inteira. Comece com um repositório e uma pergunta verificável, tipo “o que chama formatInvoice entre pacotes?”