
Yeti는 Claude와 함께 제품 설계를 진행하는 MCP 서버다. 문제 정의부터 요구사항, 사용자 스토리, RICE 우선순위, 흐름도 작성과 검증까지 프로젝트를 관리하고, 작업을 Jira로 보낸다.
MCP 서버는 npm의 yeti-mcp 패키지로 사용할 수 있다. 프로젝트와 관련 데이터는 로컬에 저장되지만, 내용은 채팅을 거치므로 민감한 데이터를 입력하지 말아야 한다.
설치와 시작
Claude Desktop에서 Yeti를 사용하려면 claude_desktop_config.json에 다음 설정을 추가한 뒤 Claude Desktop을 다시 시작한다.
{
"mcpServers": {
"yeti": {
"command": "npx",
"args": ["-y", "yeti-mcp"],
"env": { "PRODUCT_DESIGN_DB": "/Users/you/yeti/yeti.sqlite" }
}
}
}
PRODUCT_DESIGN_DB에는 보관할 폴더 안의 파일 경로를 지정한다. npx로 설치한 패키지는 지워질 수 있는 캐시에 저장되므로 데이터베이스도 그곳에 두면 함께 사라질 수 있다. Yeti를 사용하려면 Node.js 22.13 이상이 필요하다.
설정한 다음 Claude에 다음처럼 요청할 수 있다.
Create a project "Quotes for craftsmen" with Yeti. Problem: writing quotes takes hours. Users: plumbers and painters. Goal: a quote in five minutes.
대시보드는 Claude에 Open the Yeti dashboard.라고 요청해 열 수 있다.
소스에서 설치하려면 Node.js 22.13 이상이 필요하다. Yeti는 내장 node:sqlite 모듈을 사용한다. 다음 명령으로 저장소를 내려받고 빌드한다.
git clone https://github.com/macorifice/yeti.git
cd yeti
npm install
npm run build
그다음 claude_desktop_config.json에 dist/index.js의 절대 경로를 넣는다.
{
"mcpServers": {
"yeti": {
"command": "node",
"args": ["/absolute/path/to/yeti/dist/index.js"]
}
}
}
파일을 수정한 뒤 Claude Desktop을 다시 시작한다.
프로젝트 진행 방식
Yeti 프로젝트는 다음 다섯 단계를 순서대로 거친다.
- 발견(discovery): 문제, 사용자, 목표를 정한다.
- 정의(definition): MoSCoW 우선순위에 따른 요구사항과 사용자 스토리를 작성한다.
- 우선순위 설정(prioritization): 아이디어의 RICE 점수를 계산한다.
- 흐름(flows): Mermaid 흐름도를 작성한다.
- 검증(verification): 모든
must요구사항을 완료하고 사용자 스토리와 연결한 뒤 프로젝트를 닫는다.
프로젝트를 만들 때 운영 모드를 선택한다. 기본값인 strict 모드에서는 단계의 요구조건을 충족해야 다음 단계로 넘어간다. advance_phase는 빠진 항목을 알려준다. free 모드에서는 요구조건과 관계없이 단계를 넘길 수 있으며, 응답에 건너뛴 항목이 표시된다.
일반적인 작업 흐름은 프로젝트 생성, 단계별 작업, 백로그 관리, 내보내기 순이다. 예시로 프로젝트를 만들면 discovery 단계에서 시작한다. definition 단계에서는 요구사항 하나 이상과 이에 연결된 사용자 스토리 하나 이상을 추가한다. prioritization에서는 아이디어의 RICE 점수를 매기고, flows에서는 흐름도 하나 이상을 그린다. verification 단계로 넘어가려면 모든 must 요구사항이 완료 상태이고 사용자 스토리로 다뤄져야 한다. 기본 strict 모드에서는 단계가 완료될 때까지 넘어갈 수 없으며, Yeti가 빠진 항목을 알려준다. free 모드에서는 단계를 넘기고 빠뜨린 항목을 표시한다. set_project_mode로 모드를 바꿀 수 있다.
백로그에서는 요구사항과 스토리를 수정하거나 삭제하고, 승인 기준을 완료로 표시하며, 프로젝트 안의 항목을 검색할 수 있다. 프로젝트를 복제해 템플릿으로 재사용하거나 CSV 파일에서 요구사항을 가져올 수도 있다. 백로그는 Markdown 또는 CSV로 내보낼 수 있다. save: true를 지정하면 데이터베이스가 있는 위치의 data/exports/에 파일을 쓴다.
RICE 점수는 사용자가 입력한 값이다. Yeti는 점수를 정렬하지만 직접 추정하지 않는다.
제공 도구
Yeti의 도구는 프로젝트와 요구사항 관리, 우선순위 설정과 흐름도, 데이터 내보내기, 대시보드, Jira 연동을 다룬다.
프로젝트 도구는 다음과 같다.
create_project:strict또는free모드로discovery단계의 프로젝트를 만든다.list_projects: 프로젝트 ID, 이름, 단계, 모드를 나열한다.includeArchived를 설정하지 않으면 보관된 프로젝트는 숨긴다.get_project: 현재 단계, 빠진 항목, 연결된 항목을 보여준다.project_summary: 우선순위와 상태별 요구사항, 스토리로 연결된must항목, 완료된 승인 기준, RICE 최고 점수 항목, Jira 링크, 프로젝트를 닫기 위해 필요한 항목을 요약한다.update_project: 프로젝트 이름, 문제, 사용자 또는 목표를 바꾼다.advance_phase: 다음 단계로 이동하거나 이동에 필요한 항목을 나열한다.set_project_mode: 프로젝트를strict와free모드 사이에서 바꾼다.duplicate_project: 프로젝트의 요구사항과 스토리를 열린 항목으로 복사해 새 프로젝트를 만든다. 템플릿을 만드는 데 사용할 수 있다.archive_project: 프로젝트를 삭제하지 않고list_projects결과에서 숨긴다.delete_project: 프로젝트와 항목을 영구 삭제한다.confirm: true가 필요하며 Jira 이슈는 삭제하지 않는다.
요구사항과 사용자 스토리 도구는 다음과 같다.
add_requirement: MoSCoW 우선순위가 있는 요구사항을 추가한다.list_requirements: 우선순위, 상태 또는 프로젝트를 기준으로 요구사항을 필터링해 나열한다.update_requirement: 요구사항의 제목, 설명 또는 우선순위를 바꾼다.set_requirement_status: 요구사항을open또는done으로 표시한다.delete_requirement: 요구사항을 삭제하고 스토리와의 연결을 해제한다.add_user_story: 승인 기준이 있는 사용자 스토리를 만들며,requirementIds로 요구사항과 연결할 수 있다.list_stories: 사용자 스토리의 ID, 연결 항목, 승인 기준 상태, Jira 키를 나열한다.update_user_story: 스토리의 페르소나, 목표, 이점, 연결된 요구사항 또는 승인 기준을 바꾼다. 승인 기준을 바꾸면 완료 상태가 초기화된다.set_criterion_status: 사용자 스토리의 승인 기준 하나를 완료 또는 미완료로 표시한다.delete_user_story: 사용자 스토리를 삭제한다.search_items: 요구사항과 스토리를 텍스트로 검색하며, 특정 프로젝트 안으로 범위를 좁힐 수도 있다.
우선순위와 흐름도 도구는 다음과 같다.
prioritize_rice: RICE 점수를 계산해 정렬한다.map_user_flow: 예/아니요 분기와next,ends가 포함된 Mermaid 흐름도를 생성한다.list_flows: 프로젝트에 저장된 흐름도를 인덱스와 함께 나열한다.delete_flow:list_flows에 표시된 인덱스를 지정해 흐름도 하나를 삭제한다.
가져오기, 내보내기, 대시보드 도구는 다음과 같다.
export_backlog: 프로젝트 백로그를 Markdown 또는 CSV로 내보낸다.save를 지정하면data/exports/에도 기록한다.import_requirements:export_backlog형식의 CSV에서 요구사항과 사용자 스토리를 가져온다. 스토리와 요구사항 사이의 연결은 복원되지 않는다.open_dashboard: 읽기 전용 실시간 대시보드를 시작하고 로컬 주소를 반환한다.export_dashboard: 대시보드의 정적 HTML 스냅샷을data/exports/dashboard.html에 쓴다.
Jira 도구는 다음과 같다.
push_to_jira: 프로젝트의 요구사항마다 Task를, 사용자 스토리마다 Story를 만들어 Jira에 보낸다. 기본 동작은 실제 전송 전 미리보기다.limit으로 일부 항목만 보낼 수 있고,update를 사용하면 이미 연결된 이슈를 갱신한다. 이미 전송된 항목은 건너뛴다.sync_from_jira: Jira 이슈가 완료되면 요구사항과 스토리를 완료로 표시하고, 이슈가 다시 열리면 항목도 다시 연다. Yeti에서 직접 닫은 항목은 다시 열지 않는다. Jira에서는 읽기만 한다.
요구사항, 스토리, RICE 점수, 흐름도에는 선택적으로 projectId를 지정해 프로젝트에 연결할 수 있다.
대시보드와 데이터
Yeti에는 프로젝트 설계 상황을 보여주는 읽기 전용 대시보드가 있다. 프로젝트별 진행 단계와 다음 단계로 넘어가기 위해 빠진 항목, 사용자 스토리로 다뤄지는 must 요구사항, 승인 기준, RICE 점수, 흐름도를 확인할 수 있다. 대시보드는 작업 보드를 보여주지 않는다. 실행 작업은 Jira에서 관리한다.
Claude에 Open the Yeti dashboard.라고 요청하면 open_dashboard가 호출되고 http://127.0.0.1:4321 같은 주소가 반환된다. 터미널에서 다음 명령으로 시작할 수도 있다.
npx yeti-mcp dashboard --port 4321
대시보드는 127.0.0.1에서만 요청을 받으므로 다른 기기에서는 접속할 수 없고, 다른 호스트 이름을 대상으로 한 요청은 거부한다. MCP 서버와 같은 데이터베이스를 읽으며 10초마다 새로 고친다. JIRA_SITE가 설정되어 있으면 Jira 키가 링크로 표시된다. 흐름도는 CDN에서 불러오는 Mermaid로 그린다. 인터넷에 연결되지 않으면 흐름도를 텍스트로 표시한다. 공유용 정적 스냅샷은 export_dashboard로 data/exports/dashboard.html에 저장할 수 있다.
데이터는 SQLite에 저장된다. 소스 저장소에서 실행하면 기본 경로는 프로젝트 폴더 안의 data/yeti.sqlite다. npx로 실행할 때는 시작 설정 예시처럼 PRODUCT_DESIGN_DB를 지정한다. 이전 버전의 data/db.json 파일은 새 버전을 처음 실행할 때 자동으로 가져오며, 기존 파일은 그대로 둔다. 다른 위치를 지정하려면 다음 환경 변수를 설정한다.
"env": { "PRODUCT_DESIGN_DB": "/absolute/path/to/yeti.sqlite" }
Jira 연동과 인증 정보
Yeti는 계정 없이 사용할 수 있다. 프로젝트, 요구사항, 스토리, RICE, 흐름도, 검증, 내보내기, 검색 등 나머지 기능은 로컬에서 실행되며 인증 정보가 필요 없다. 외부 서비스와 통신하는 도구는 push_to_jira다. Jira에 이슈를 만들려면 다음 세 환경 변수가 필요하다.
JIRA_SITE: Jira 사이트 주소. 예:https://your-team.atlassian.netJIRA_EMAIL: Atlassian 계정의 이메일 주소JIRA_API_TOKEN: id.atlassian.com의 Security → API tokens에서 만든 API 토큰
예를 들어 셸 설정 파일인 ~/.zshrc에 다음처럼 설정한다.
export JIRA_SITE="https://your-team.atlassian.net"
export JIRA_EMAIL="you@example.com"
export JIRA_API_TOKEN="your-token-here"
토큰을 저장소나 커밋할 설정 파일, 채팅에 넣지 말아야 한다. 토큰이 노출되면 같은 페이지에서 폐기하고 새 토큰을 만든다. 환경 변수가 없으면 push_to_jira는 전송을 거부하고 누락된 변수를 알려준다. 미리보기는 환경 변수 없이도 사용할 수 있다.
사례와 상태
저장소에는 Mastro 예시를 사용해 요구사항에서 Jira까지 이어지는 사례가 있다. 프로젝트와 요구사항, 사용자 스토리를 만들고 RICE 우선순위를 정한 뒤 흐름도를 작성하고 검증 단계를 통과해 Jira로 전송하며 상태를 동기화하는 과정을 다룬다. 사례 연구 자료
Yeti는 1.0.0부터 안정 버전으로 제공된다. 도구와 입력값, 데이터 형식은 시맨틱 버저닝을 따르며, 호환성을 깨는 변경은 새 메이저 버전으로 제공된다. 테스트는 임시 데이터베이스에서 서버를 시작해 모든 도구와 단계 흐름을 확인한다.
npm test
Yeti의 라이선스는 MIT다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요