FRD 오케스트레이션 with MCP: 에이전트를 위한 결정론적 컨텍스트 제어 (드리프트 없음)

발행: (2026년 1월 1일 오전 03:34 GMT+9)
7 분 소요
원문: Dev.to

Source: Dev.to

번역할 텍스트가 제공되지 않았습니다. 번역이 필요한 본문을 알려주시면 도와드리겠습니다.

소개

얼마 전 저는 여러 Feature Requirement Documents(FRDs)를 조정하여 처음부터 단계별로 NestJS 보일러플레이트를 구축하는 전체 제어를 유지하는 가치에 대해 설명하는 글을 썼습니다.

  • FRD‑00: 오케스트레이션
  • FRD‑01: 스켈레톤
  • FRD‑02: ORM + 마이그레이션
  • FRD‑03: 인증 + JWT
  • FRD‑04: 단위 테스트

잘 동작했지만 고전적인 문제가 나타났습니다: FRD가 작업 공간에 “느슨한” 파일로 존재할 때, 에이전트가 잘못된 .md 파일을 읽거나 단계가 섞이거나 잘못된 컨텍스트를 캐시할 수 있습니다.

이전

FRDs as files inside a folder → the agent might read the wrong document / mix phases / cache context.

이후

MCP 도구 get_frd("00".."04")는 ID로 올바른 FRD를 반환합니다 → 단계‑제어 위임, 드리프트 감소, 그리고 반복 가능성 향상.

Source:

파일‑기반 컨텍스트의 약점

이전 기사에서 나는 FRD를 사용해 에이전트가 보일러플레이트를 구축하도록 안내하는 이점들을 보여주었다. 작업 공간은 다음과 같았다:

folder name: api-products
 ├─ FRD-00-master-orchestration.md
 ├─ FRD-01-boilerplate-core-products.md
 ├─ FRD-02-products-database.md
 ├─ FRD-03-auth-security.md
 ├─ FRD-04-unit-testing.md
 └─ Start the orchestration..

FRD‑00이 순서를 정의하고 각 단계에 대한 위임을 수행함에도 불구하고, 여전히 약점이 남아 있었다: 작업 공간 내 파일 선택.

파일‑기반 컨텍스트로 작업할 때 에이전트가 흔히 겪는 실패 사례:

  • 잘못된 .md 파일을 읽음.
  • 단계가 뒤섞임(단계 건너뛰기).
  • 대상 폴더 외부에서 명령을 실행함.
  • 비결정적인 단계 발생.

해결책: MCP를 통한 결정적 검색

MCP란?

Model Context Protocol (MCP)은 도구(함수)를 에이전트/IDE에 노출시켜 작업 공간 파일을 읽어 “추측”하는 대신 제어된 방식으로 정보를 요청할 수 있게 해 주는 프로토콜입니다.

파일을 검색하는 대신, 에이전트는 도구를 통해 정확히 필요한 문서를 요청합니다:

get_frd("00") → main orchestration
get_frd("01") → phase 1
get_frd("02") → phase 2
get_frd("03") → phase 3
get_frd("04") → phase 4

결과

오케스트레이션은 이제 에이전트의 “파일 선택”에 의존하지 않습니다. 각 단계에서 에이전트는 올바른 순서대로 정확한 FRD를 요청합니다. 사양 입력이 안정적이기 때문에 두 번의 별도 실행이 동일한 결과를 낼 가능성이 높습니다.

예를 들어 다음과 같은 정책을 적용할 수 있습니다:

  • “FRD‑02가 완료되지 않으면 FRD‑03을 요청할 수 없습니다.”
  • “다른 어떤 것을 요청하기 전에 항상 FRD‑00을 먼저 요청하십시오.”

VS Code에서 MCP Servers 뷰를 열고 frd-orchestrator가 활성화되어 있는지 확인하세요.

MCP 서버 구성

// .vscode/mcp.json
{
  "servers": {
    "frd-orchestrator": {
      "type": "stdio",
      "command": "/Users/jorgegomez/.local/bin/uv",
      "args": ["run", "main.py"]
    }
  }
}

Note: 내 머신에서는 uv/Users/jorgegomez/.local/bin/uv에 위치합니다. 환경에 맞게 경로를 조정하세요.

서버가 시작되면 VS Code 콘솔에 MCP 서버가 실행 중이라는 메시지가 표시됩니다.

예시 상호작용

각 단계는 get_frd("0X")를 트리거하고, 서버는 디스크에서 정확한 파일을 읽어 응답합니다.

[FRD-Orchestrator] get_frd tool requested with frd_id=02
Reading FRD from disk: .../frd/FRD-02-products-database.md

[FRD-Orchestrator] get_frd tool requested with frd_id=03
Reading FRD from disk: .../frd/FRD-03-auth-security.md

[FRD-Orchestrator] get_frd tool requested with frd_id=04
Reading FRD from disk: .../frd/FRD-04-unit-testing.md

명시적인 도구 호출은 “자유 형식” 워크스페이스 읽기를 대체합니다. MCP를 사용하면 컨텍스트가 “워크스페이스 탐색”에서 “제어된 검색”으로 전환되어 오류가 줄어들고, 오케스트레이션 속도가 빨라지며, 흐름이 재현 가능해집니다.

Benefits at Scale

이 접근 방식은 기업 환경에서 확장됩니다. MCP를 사용하면 AI가 “그저 채팅”에 그치지 않고 각 회사의 비즈니스 로직에 맞춰 작업, 흐름 및 워크플로를 자동화하는 제어된 구성 요소가 됩니다. 이것이 오늘날 개발자들이 나아가야 할 방향이며, AI + 결정론적 도구 + 재현 가능한 프로세스입니다.

피드백 요청

여기까지 오셨다면, 이 접근 방식에 대해 검토하고 의견을 나눠 주시면 좋겠습니다. 저는 FRD 설계와 MCP 구현 모두에 대해 피드백, 비판, 개선 제안을 전적으로 환영합니다. 더 깔끔하고, 안전하며, 재현 가능하도록 만들 수 있는 부분이 있다면, 댓글로 알려 주세요.

Back to Blog

관련 글

더 보기 »

RGB LED 사이드퀘스트 💡

markdown !Jennifer Davis https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%...

Mendex: 내가 만드는 이유

소개 안녕하세요 여러분. 오늘은 제가 누구인지, 무엇을 만들고 있는지, 그리고 그 이유를 공유하고 싶습니다. 초기 경력과 번아웃 저는 개발자로서 17년 동안 경력을 시작했습니다.