# Cursor는 파일을 편집합니다. Maguyva는 저장소를 봅니다.

Canonical source: https://maguyva.ai/ko/for-cursor

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Cursor는 에디터입니다. 모노레포에서는 에이전트에게 여전히 어떤 파일이 중요한지 알려주는 지도가 필요합니다. Maguyva는 코드베이스를 인덱싱해 MCP(시맨틱, AST, 그래프, 텍스트)로 되돌려주므로, "인증이 어디서 일어나는가"라는 질문에 테스트 스텁 일곱 개가 아니라 실제 인증 흐름이 돌아옵니다.

> Cursor는 여러분이 가리킨 것을 편집합니다. Maguyva는 에이전트에게 무엇을 가리켜야 할지 알려줍니다.

## 각 레이어가 하는 일

네 가지 조각. 각각 맡은 역할이 있습니다.

### Cursor

실제로 코드를 작성하는 곳입니다.

### @ 멘션 + 고정

저장소가 커지기 전까지는 수동 컨텍스트가 통합니다.

### Maguyva

MCP를 통한 자동 코드베이스 사실 제공.

### 좌석이 아니라 워크스페이스

에이전트는 좌석 비용을 내지 않습니다. [요금제 보기](https://maguyva.ai/ko/pricing)

## Cursor는 에디터입니다. 그대로 사용하세요.

IDE 자체가 문제는 아닙니다. Cursor의 탭 완성, edit-with-AI, 다중 파일 편집, `.cursor/rules`는 훌륭하며, 여러분은 이미 다음과 같은 용도로 사용하고 있을 것입니다:

- 열려 있는 파일에서의 인라인 제안과 edit-with-AI.
- 변경 사항이 로컬에 국한될 때의 다중 파일 편집.
- 저장소 관례와 스타일 가드레일을 위한 `.cursor/rules`.
- 특정 파일을 컨텍스트로 끌어오기 위한 `@` 멘션.

계속 그렇게 하세요. 그 어느 것도 사라지지 않습니다.

하지만 실제 모노레포(워크스페이스 의존성이 있는 TypeScript, Python 서비스, 혼합 패키지)에서는 관련 파일이 아직 여러분의 레이더에 없는 순간 에이전트 컨텍스트가 깨집니다.

## 이미 시도해본 수동 해결책, 그리고 그것이 깨지는 지점

네 가지 수동 해결책과 각각의 실패 양상. 왼쪽 = 오늘 하고 있는 일. 오른쪽 = 깨지는 지점.

### // 파일 고정하기

중요하다고 생각하는 파일 세 개를 `@`로 멘션합니다. Cursor는 그 안에서 깔끔하게 편집합니다.

### // 고정은 추측입니다

고정은 어떤 파일이 관련되어 있는지 이미 알고 있을 때만 통합니다. 컨텍스트 도구의 핵심은 고정해야 하는지조차 몰랐던 파일까지 드러내는 데 있습니다.

### // 코드 조각 붙여넣기

에이전트에게 충분한 컨텍스트를 주려고 다른 패키지에서 200줄을 채팅에 붙여넣습니다.

### // 붙여넣은 코드는 낡아버립니다

오전 9시에 붙여넣은 코드 조각은 팀원이 오전 11시에 반영한 리베이스를 반영하지 않습니다. 에이전트는 패키지의 유령 버전을 대상으로 편집하고 있는 셈입니다.

### // 컨텍스트 문서 작성하기

`.cursor/rules` 파일이나 아키텍처 마크다운을 작성합니다. 오늘은 맞습니다.

### // 문서는 코드보다 빠르게 낡습니다

손으로 작성한 것은 무엇이든 낡습니다. 코드가 진실의 원천입니다. 큐 레이어를 설명하는 문서는 일주일간은 맞다가, 그 뒤로는 영원히 틀리게 됩니다.

### // 규칙 파일 유지하기

네이밍, 린트, 빌드 명령어를 위해 `.cursor/rules`를 추가합니다. 행동 방식에는 훌륭합니다.

### // 규칙 ≠ 인덱스

`.cursor/rules`는 “커밋 전에 항상 pnpm tsc -b를 실행하라” 같은 규칙에 적합한 곳입니다. 모노레포의 모든 심볼, 파일, 호출 지점을 담은 조회 가능한 인덱스는 아닙니다.

## Maguyva는 그 아래에 있는 레이어입니다

Cursor를 대체하지 않습니다. Cursor의 MCP 지원에 연결되는 저장소 컨텍스트 레이어입니다.

- **시맨틱 + AST + 그래프 + 텍스트**: 의미, 구조, 의존성, 또는 리터럴로 검색합니다. 모든 결과는 파일 경로와 줄 번호를 반환합니다.
- **기본적으로 패키지 전반을 아우름**: 현재 열려 있는 패키지뿐 아니라 모노레포 내 모든 패키지의 호출 지점과 임포터를 아우릅니다.
- **브랜치 인식**: Maguyva는 Cursor가 편집 중인 코드 버전을 인식합니다.
- **경쟁이 아니라 보완**: `.cursor/rules`는 계속 제 역할을 합니다. `@` 멘션도 계속 제 역할을 합니다. Maguyva는 그것들이 채우지 못하는 빈틈을 채웁니다.

> Cursor는 여러분이 가리킨 파일을 편집합니다.
> Maguyva는 에이전트에게 *무엇을 가리켜야 할지* 알려줍니다.

## 세 가지 모노레포 워크플로

패키지와 언어를 넘나듭니다. Cursor의 grep이 아니라 실제 호출 그래프에 근거합니다.

### 01. 아무것도 고정하지 않고 패키지 전반의 인증 흐름 찾기

```text
cursor> 이 모노레포에서 인증은 어디서 일어나나요?

graph::query("authentication flow")
  packages/web/src/auth/session.ts:42       미들웨어
  packages/api/src/auth/jwt.ts:88           토큰 검증
  packages/shared/src/auth/types.ts:12      AuthContext
  packages/admin/src/auth/admin-only.ts:31  RBAC 게이트

→ 4개 패키지에 걸친 4개의 진입점, 호출 지점 밀도 순으로 랭킹됨.
[exit 0]
```

파일을 고정하지도, 코드 조각을 붙여넣지도 않았습니다. 에이전트는 중요한 네 개의 파일을 올바른 순위로 확보했고, 근거 있는 편집을 할 수 있습니다.

### 02. 테스트 스텁이 아니라 실제 구현 찾기

```text
cursor> normalizePhoneNumber는 E.164를 어떻게 처리하나요?

semantic::query("normalize phone E.164")
  packages/shared/util/phone.ts:88     normalizePhoneNumber()  ← 실제 구현
  packages/api/test/phone.spec.ts:14   jest.mock(...)          ← 스텁
[exit 0]
```

이름은 거짓말을 합니다. 목(mock)은 실제 코드를 가립니다. Maguyva는 모든 패키지에서 테스트 목보다 실제 구현을 위에 올려 랭킹합니다.

### 03. 리팩터링 전에 영향 범위 확인하기

```text
cursor> 모노레포 전체에서 QueueDispatcher.publish를 호출하는 곳은 어디인가요?

graph::callers(QueueDispatcher.publish)
  3 in packages/billing/*
  1 in packages/audit/*
  1 in packages/notifications/*
  1 in services/python-worker/*  ← gRPC 스텁을 통한 교차 언어 호출
[exit 0]
```

패키지를 넘나들고, 여러 언어를 쓰는 저장소라면 언어까지 넘나들며, 호출 지점이 인라인으로 드러납니다. 변경 사항은 Cursor의 grep이 아니라 실제 임포터에 근거합니다.

## Cursor에서 설정하기

세 단계로 끝. Free 등급: 저장소 3개, 인덱싱된 저장소 라인 최대 5만 줄, 카드 등록 불필요.

### 01. maguyva.ai에서 저장소 인덱싱하기

컨텍스트 문제를 가장 많이 겪은 모노레포를 선택하세요.

### 02. Cursor 설정에서 Maguyva를 MCP 서버로 추가하기

`~/.cursor/mcp.json`

```json
{
  "mcpServers": {
    "maguyva": {
      "url": "https://maguyva.tools/mcp",
      "headers": {
        "Authorization": "Bearer ${env:MAGUYVA_API_KEY}"
      }
    }
  }
}
```

### 03. 이미 답을 알고 있는 질문 하나 해보기

회사 전체로 시작하지 마세요. 저장소 하나와 검증 가능한 질문 하나로 시작하세요. 예를 들어 "패키지 전반에서 `formatInvoice`를 호출하는 곳은 어디인가요?" 같은 질문입니다.

## 이미 알고 있는 저장소 하나를 인덱싱하세요.

답을 검증할 수 있는 질문 하나를 테스트해보세요.
