Skip to main content
Claude Code, Cursor, ChatGPT 에이전트에서 MCP와 CLI를 언제 써야 하는지 설명해요.

멘탈 모델

MCP 결과는 대화에 남고 CLI 결과는 파일로 저장할 수 있어요.
MCP get_note_transcript를 호출하면 전체 전사(노트당 보통 5~50KB)가 대화 컨텍스트에 들어와요. 요약하거나 컨텍스트를 정리하기 전까지 이후 대화에도 남아요. tiro notes transcript --output transcript.md를 호출하면 같은 내용을 파일로 저장하고 stdout에는 메타데이터 한 줄만 반환해요.
전사 100개도 대화에는 경로와 개수만 남길 수 있어요. 필요한 파일만 읽으세요.

도구 선택 치트시트

MCP를 호출할지 CLI를 호출할지

예제 — 최근 30일 ‘Acme Corp’ 회의

클라이언트별 분기 요약본을 작성하려고 해요. 최근 30일 동안 Acme가 언급된 모든 회의를 전체 transcript와 함께 가져와야 해요.
대화에는 stdout 3줄과 메타데이터 12개만 남아요(약 80토큰). 전사 12개는 ./out/에 저장돼요. 정확한 표현이 필요할 때만 Read 도구로 하나씩 읽으세요. get_note_transcript를 12번 호출하면 60600KB(전사 12개 × 각 550KB)가 대화에 남아요. 자세히 볼 2~3개만 불러오면 토큰을 줄일 수 있어요.

에러를 JSON으로 읽기

CLI의 모든 에러는 안정적인 envelope을 따라요:
안정적인 필드: error.message는 사람이 읽는 용도이고 릴리스마다 표현이 바뀔 수 있으니, 이걸로 패턴 매칭하지 마세요.

Exit code

셸에서 빠른 auth 복구 루프:

출력 보장

  • --json은 스트림에서 NDJSON — list와 search는 한 줄에 JSON 객체 하나씩 내보내요. 페이지네이션 cursor는 마지막에 {"_cursor": "…"} 줄로 와요.
  • --output <path>는 원자적으로 씀 — temp 파일 + rename 방식이라 절대 부분 저장이 없어요.
  • TTY 자동 감지 — 인터랙티브 셸에선 pretty, 파이프·리다이렉트되면 JSON. --pretty / --json으로 강제할 수 있어요.
  • tiro notes transcript --format json은 MCP get_note_transcript와 일치 — 같은 필드명, 같은 중첩, 같은 speaker-segment 구조예요. 기존 파서를 그대로 재사용하세요.
  • token은 절대 출력되지 않음auth status는 앞 4자만 보여주고, --verbose에서도 나머지는 가려져요.

안정 계약 — patch 릴리스에서 깨지지 않는 것

  • error.code
  • error.errorType
  • Exit code
  • list/search의 NDJSON 줄 형태
  • tiro notes transcript --format json이 반환하는 MCP 형태 JSON
  • --output 작업이 반환하는 메타데이터 줄 형태
그 외(pretty 출력, 에러 메시지, verbose 로그 포맷)는 best-effort이고 바뀔 수 있어요.

링크