---
title: Claude 연동
description: 한 번의 설치 명령으로 Claude Desktop이 개인 자산 분석가가 됩니다. 포트폴리오, 순자산, 현금흐름, 시장 데이터, 입력한 목표를 모두 참고해서, 일반론이 아닌 내 실제 상황에 기반한 답을 하게 됩니다.
---

export const netWorthExchange = [{
  user: '연말까지 순자산 $1M 가능한 페이스야?',
  ai: <p>
    현재 순자산은 <code>$441K</code>이며, 지난 1년간 평균{' '}
    <code>+$6,400/월</code>씩 증가했습니다. 이 페이스라면 약{' '}
    <code>87개월</code> 후인 2033년 7월에 $1M에 도달합니다. 연말까지는
    불가능합니다. 12월까지 도달하려면 월 <code>+$46K</code>를 저축해야
    하며, 이는 현재 페이스의 약 7배입니다.
  </p>,
}];

export const exposureExchange = [{
  user: '다음 주 TSLA 실적인데 애널리스트 컨센서스 어때? 그리고 내 익스포저 얼마나 돼?',
  ai: <p>
    TSLA 실적은 <code>4월 30일 AMC</code> 발표입니다. 컨센서스 EPS
    추정치는 <code>$0.43</code>입니다. 직전 분기는{' '}
    <code>$0.41</code>로 미스였습니다. 보유 수량은{' '}
    <code>392주</code>, 평균 단가 <code>$245.68</code>, 현재{' '}
    <code>+60.97%</code> 상태입니다. TSLA가 포트폴리오의 약{' '}
    <code>82%</code>를 차지합니다. 5% 변동 시 포트폴리오는 약{' '}
    <code>±$7,500</code> 움직입니다.
  </p>,
}];

export const visualizationExchange = [{
  user: '내 재무 상황 차트로 한눈에 보여줘.',
  ai: '포트폴리오, 자산 이력, 현금흐름 데이터를 통합합니다. 인터랙티브 대시보드를 생성합니다. 순자산 추세, 자산 비중, 월별 저축률을 한 화면에 표시합니다.',
  aiNote: <em>↳ Claude는 차트가 포함된 인터랙티브 React 아티팩트를 직접 렌더링합니다. 사용자가 코드를 작성할 필요는 없습니다.</em>,
}];

export const loggingExchange = [{
  user: '방금 NVDA 10주 $875에 샀어. 기록해줘.',
  ai: <p>
    완료. NVDA <code>10주 @ $875.00</code>이 오늘자로 기록되었습니다.
    NVDA 포지션은 이제 <code>166주</code>, 평균 단가{' '}
    <code>$134.51</code>, <code>+$121,618 (+548%)</code> 상태입니다.
    (<code>add_txn</code>이 자동으로 호출됨.)
  </p>,
}];

export const promptGroups = [
  {
    label: '일괄 가져오기',
    rows: [
      { cmd: 'import-trades',  desc: 'CSV 또는 증권사 거래 내역 파일을 첨부합니다. Claude가 컬럼 매핑을 제시하고 사용자 확인을 받은 뒤, 모든 행을 한 번의 일괄 호출로 기록합니다. 수백 행을 한 번에 처리합니다.' },
      { cmd: 'import-balance', desc: '순자산 스프레드시트(행=월, 열=자산 카테고리)를 첨부합니다. 동일한 매핑-확인-일괄 흐름으로 여러 월을 한 번에 처리합니다.' },
      { cmd: 'import-flow',    desc: '수입/지출 스프레드시트를 첨부합니다. Import-balance와 동일한 흐름이며, 현금흐름 테이블을 대상으로 합니다.' },
    ],
  },
  {
    label: '워크플로',
    rows: [
      { cmd: 'month-end',     desc: '해당 기간의 모든 자산 및 현금흐름 카테고리를 순서대로 묻고, 한 번에 일괄 등록한 뒤 정산 요약을 표시합니다.' },
      { cmd: 'morning',       desc: '오늘의 브리핑을 가져오며, 주의가 필요한 항목만 요약합니다. 집중도 위험, 다가오는 실적 발표, 거시경제 신호 변화, 주요 변동 종목 등.' },
      { cmd: 'analyst',       desc: '자산 분석가 페르소나를 활성화합니다. Claude는 집중도 위험을 먼저 제시하고, 모든 수치를 순자산 또는 runway 기준으로 환산하며, 포트폴리오 + 현금흐름 + 거시경제를 통합된 시각으로 결합합니다.' },
      { cmd: 'setup-profile', desc: '목표를 등록합니다 (출생 연도, 은퇴 목표 연도, 목표 순자산, 위험 성향, 메모). 5개 항목 모두 선택 입력이며, Claude가 대화 중에 자연스럽게 묻고 입력하지 않은 항목은 건너뜁니다.' },
    ],
  },
  {
    label: '의사결정 지원',
    rows: [
      { cmd: 'pre-mortem', desc: '해당 포지션이 향후 12개월 동안 잘못될 수 있는 5가지 구체적 시나리오를 제시합니다. 실제 데이터에 기반한 실패 메커니즘, 포트폴리오에 미치는 달러 영향, 그리고 한 가지 구체적 대응 방안.' },
      { cmd: 'rebalance',  desc: '현재 비중과 목표 비중을 비교하여 차이를 표시하고, 구체적 매매를 제안합니다. 추천 전에 거래 사유, 매도 시 세금 부담, 워시세일 위험을 점검합니다.' },
      { cmd: 'tax-harvest',desc: '미실현 손실 종목을 스캔하고 30일 워시세일 규칙을 적용한 뒤, 시장 익스포저를 유지하기 위한 유사하지만 동일하지 않은 대체 종목을 제안하며, 세율 구간별 절세 효과를 추정합니다.' },
      { cmd: 'scenario',   desc: <>시장 충격(&ldquo;S&amp;P -20%&rdquo;), 단일 종목 변동, 거시경제 변화 시나리오를 실제 포트폴리오에 적용해 분석합니다. 베타 가정을 먼저 명시하므로 사용자가 가정을 수정해 재실행할 수 있습니다.</> },
    ],
  },
];

export const tips = [
  {
    icon: '▲',
    title: '시각화를 직접 요청하기',
    desc: <>Claude Desktop은 React 컴포넌트를 아티팩트로 렌더링할 수 있습니다. &ldquo;순자산 추세 차트 보여줘&rdquo;라고 요청하면 실제 데이터를 사용한 인터랙티브 시각화가 생성됩니다.</>,
  },
  {
    icon: '↗',
    title: '한 질문에서 여러 데이터 소스 결합',
    desc: <>Claude는 단일 응답에서 여러 도구를 호출할 수 있습니다. &ldquo;저축률이랑 TSLA 포지션이랑 상관관계 어때?&rdquo;라고 묻으면 현금흐름과 포트폴리오 데이터를 모두 가져와 답변합니다.</>,
  },
  {
    icon: '✎',
    title: '대화로 거래 기록',
    desc: <>거래 추가에 CLI를 사용할 필요가 없습니다. Claude에게 알려주면 <code>add_txn</code>이 직접 호출됩니다. 이미 Claude와 대화 중일 때 유용합니다.</>,
  },
];

export const toolReadPortfolio = [
  { cmd: 'show_portfolio',     desc: '보유 종목 + 손익 + 평균 단가' },
  { cmd: 'show_txns',          desc: '거래 내역 (티커 필터 가능)' },
  { cmd: 'show_dividend',      desc: '연간 배당 추정 + 종목별 배당 수익률' },
  { cmd: 'show_concentration', desc: '티커, 통화, 섹터, 국가별 HHI 집중도 — 차원별 디리스크/리밸런스 추천 포함' },
  { cmd: 'show_snapshot',      desc: '포트폴리오 가치 이력 (종목별 또는 일별 합계)' },
  { cmd: 'show_benchmark',     desc: '동일 기간 SPY/QQQ (또는 사용자 지정 벤치마크) 대비 수익률' },
  { cmd: 'show_risk',          desc: '변동성, 드로다운, Sharpe, Sortino, 베타 (스냅샷 이력 필요)' },
  { cmd: 'show_profile',       desc: '사용자 목표: 출생 연도, 은퇴 목표, 목표 순자산, 위험 성향, 메모' },
  { cmd: 'set_profile',        desc: '프로필 항목 업데이트 (부분 업데이트, 전달된 항목만 변경)' },
];

export const toolReadBalance = [
  { cmd: 'show_balance',    desc: '자산 항목 (기간 필터 가능)' },
  { cmd: 'show_flow',       desc: '현금흐름 항목 (기간 필터 가능)' },
  { cmd: 'report',          desc: '집계 추세 — target 선택: balance, flow, combined, settle(월말 요약)' },
];

export const toolReadMacro = [
  { cmd: 'get_brief',          desc: '데일리 브리핑: 보유 종목 + 변동 + 뉴스 + 실적 + 거시경제 + 신호 + 자동 생성 인사이트 — 여기에 이번 주 스탠스, 랭킹된 무브(추천), 데이터 신선도 지표까지 (일별 캐시)' },
  { cmd: 'show_macro',         desc: '큐레이트된 FRED 거시경제 스냅샷 (지표 8개 + 동적 환율) + 경제 스트레스 지수 + 거시경제 레짐 편향 — 차원별 전술적 추천 포함' },
  { cmd: 'fetch_fred_series',  desc: 'ID로 FRED 시계열 직접 조회 (80만 개 이상 시리즈 중 임의)' },
  { cmd: 'search_fred_series', desc: '키워드로 FRED 카탈로그 검색' },
  { cmd: 'show_fx',            desc: '캐시된 환율 시계열 조회 — 커버리지 요약 또는 통화별 과거 환율' },
];

export const toolReadResearch = [
  { cmd: 'show_earnings',   desc: '다가오는 실적 발표 + EPS 이력' },
  { cmd: 'show_insider',    desc: '내부자 매매 거래' },
  { cmd: 'show_financials', desc: 'SEC 보고 분기 재무제표' },
  { cmd: 'show_news',       desc: '최근 기업 뉴스 기사' },
];

export const toolWrite = [
  { cmd: 'add_txn',         desc: '거래 기록 — 객체 하나 또는 배열(스프레드시트 가져오기). 9개 시장의 주식 또는 비-주식 자산(크립토·원자재·부동산). 유형: 매수, 매도, 입고, 배당, 세금' },
  { cmd: 'edit_txn',        desc: 'ID로 기존 거래의 항목 업데이트' },
  { cmd: 'delete_txn',      desc: 'ID로 거래 삭제' },
  { cmd: 'add_price',       desc: '비-주식 보유 자산(크립토·원자재·부동산)의 현재가 입력 — 시세 피드가 없음' },
  { cmd: 'add_balance',     desc: '자산 항목 upsert — 객체 하나 또는 여러 월에 걸친 배열 (동일 키 시 수정으로 동작)' },
  { cmd: 'add_flow',        desc: '현금흐름 항목 upsert — 객체 하나 또는 여러 월에 걸친 배열 (동일 키 시 수정으로 동작)' },
  { cmd: 'add_monthly',     desc: '단일 기간의 자산 + 현금흐름 항목 일괄 upsert' },
  { cmd: 'delete_balance',  desc: '특정 기간의 자산 항목 삭제 (전체 또는 단일 카테고리)' },
  { cmd: 'delete_flow',     desc: '특정 기간의 현금흐름 항목 삭제 (전체 또는 단일 카테고리)' },
  { cmd: 'add_snapshot',    desc: '가격을 동기화하고 오늘의 포트폴리오 스냅샷을 기록' },
  { cmd: 'edit_snapshot',   desc: '스냅샷 항목 수정' },
  { cmd: 'delete_snapshot', desc: '특정 날짜의 모든 스냅샷 항목 삭제' },
];

export const toolActions = [
  { cmd: 'sync', desc: '데이터 동기화 — scope 선택: prices(Finnhub 주가), fx(FRED 환율 캐시 백필), all' },
];

<Section label="물을 수 있는 것">
  <ChatDemo header="순자산 추정"                                 exchanges={netWorthExchange}      marginBottom="1.5rem" />
  <ChatDemo header="포트폴리오 익스포저 + 실적 발표 리서치"        exchanges={exposureExchange}      marginBottom="1.5rem" />
  <ChatDemo header="AI 시각화 (Claude Desktop 아티팩트)"          exchanges={visualizationExchange} marginBottom="1.5rem" />
  <ChatDemo header="자연어 거래 기록"                              exchanges={loggingExchange} />
</Section>

<Section label="프롬프트">
Claude Desktop에서 <code>/</code>를 입력하면 가이드가 적용된 워크플로에
접근할 수 있습니다. Firma는 10개의 프롬프트를 제공하며, 각 프롬프트는
올바른 도구 호출 순서를 강제하므로 사용자가 기억할 필요가 없습니다.

  <CommandTable groups={promptGroups} />

  <Note>
    슬래시 명령어를 외울 필요는 없습니다. Claude는 모든 대화 시작 시{' '}
    <code>setup_status</code>를 호출하며, 응답에는 동일한 분석 프레임워크와
    트리거 조건이 포함됩니다. 그래서 위험한 매수에는 pre-mortem이, 연말 세금
    관련 질문에는 harvest가, 거시경제 질문에는 scenario 분석이 입력 없이도
    자동으로 적용됩니다. 슬래시 명령어는 명시적으로 호출하고 싶을 때 사용할
    수 있습니다.
  </Note>
</Section>

<Section label="동작 원리">
MCP(Model Context Protocol)는 AI 모델을 로컬 도구 및 데이터 소스에
연결하기 위한 개방형 표준입니다. Firma는 MCP 서버를 구현한{' '}
<code>firma-mcp</code> 바이너리를 제공합니다. <code>firma mcp install</code>을
실행하면 이를 Claude Desktop 설정에 등록합니다:

  <Terminal
    command="firma mcp install"
    rows={[
      { type: 'beat', text: 'MCP registered at ~/Library/Application Support/Claude/claude_desktop_config.json' },
      { type: 'meta', text: 'firma MCP 서버를 활성화하려면 Claude Desktop을 재시작합니다.' },
    ]}
    marginBottom="1.25rem"
  />

Claude Desktop을 재시작하면 도구 패널에 firma가 표시됩니다. 재무 관련
질문을 하면 Claude가 firma 도구를 자동으로 호출합니다. 사용자가
명시적으로 호출할 필요는 없습니다.
</Section>

<Section label="팁">
  <FeatureList items={tips} />
</Section>

<Section label="사용 가능한 도구">
  <CommandTable groups={[
    { label: 'Read · 포트폴리오',          rows: toolReadPortfolio },
    { label: 'Read · 자산 & 현금흐름',     rows: toolReadBalance },
    { label: 'Read · 거시경제 & 브리핑',   rows: toolReadMacro },
    { label: 'Read · 리서치',              rows: toolReadResearch },
    { label: 'Write',                      rows: toolWrite },
    { label: 'Actions',                    rows: toolActions },
  ]} />
</Section>
