<p align="center">
<img src="https://raw.githubusercontent.com/oliverames/ynab-mcp-server/HEAD/assets/icon.png" width="80" height="80" alt="YNAB">
</p>
<h1 align="center">MCP Server for YNAB</h1>
<p align="center">
<strong>자연어 예산 질문을 안전하고 로컬한 YNAB API 워크플로우로 변환합니다.</strong><br>
<em>기본적으로 읽기 전용(read-only) 예산 접근 권한을 제공하며, 명시적인 쓰기 옵트인(write opt-in)이 필요합니다.</em>
</p>
<p align="center">
<code class="language-text">67 tools + 4 discovery helpers</code> •<br>
<code class="language-text">6 guided prompts</code> •<br>
<code class="language-text">undo journal</code> •<br>
<code class="language-text">기본적으로 45개의 읽기 전용(read-only) 작업</code> •<br>
<code class="language-text">기본적으로 읽기 전용(read-only by default)</code>
</p>
<p align="center">
<a href="https://www.npmjs.com/package/@oliverames/mcp-server-for-ynab"><img src="https://img.shields.io/npm/v/%40oliverames%2Fmcp-server-for-ynab?style=flat-square&color=f5a542" alt="npm"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-f5a542?style=flat-square" alt="License"></a>
<a href="https://www.buymeacoffee.com/oliverames"><img src="https://img.shields.io/badge/Buy_Me_a_Coffee-support-f5a542?style=flat-square&logo=buy-me-a-coffee&logoColor=white" alt="Buy Me a Coffee"></a>
</p>
<p align="center">
<a href="#quick-start">Quick Start</a> •<br>
<a href="#install-as-a-plugin">Plugin</a> •<br>
<a href="#2-install-in-claude-code">Claude Code</a> •<br>
<a href="#3-install-in-codex">Codex</a> •<br>
<a href="#other-plugin-hosts">Other Hosts</a> •<br>
<a href="#what-you-can-do">What You Can Do</a> •<br>
<a href="#tools-reference">Tools Reference</a> •<br>
<a href="#environment-variables">Configuration</a>
</p>
Claude Code, Codex, Hermes, Antigravity 또는 모든 stdio MCP 호스트를 통해 YNAB을 실행하세요. 원격 URL이 필요한 클라이언트의 경우, https://ames-ynab.link/mcp에 호스팅된 커넥터가 YNAB OAuth를 통해 각 사용자를 로그인시키며, 다른 서비스에 복사할 개인 액세스 토큰은 필요 없습니다. 두 경로 모두 동일한 속도 인식 도구 계층을 사용하며 달러와 YNAB 밀리유닛(milliunits) 간의 금액 변환을 수행합니다. 직접 등록은 읽기 전용으로 시작되며, 실행 취소 저널(undo journal)이 지원되는 변경 사항을 기록합니다. 일부 작업은 여전히 YNAB에서 수동 복구가 필요합니다.
이것이 존재하는 이유
YNAB의 예산 책정 철학은 사용자가 예산과 자주 상호 작용할 때 가장 잘 작동하지만, 앱 인터페이스는 빠른 질문이나 신중한 대량 정리(bulk cleanup)를 위해 설계되지 않았습니다. '이번 달 식료품에 얼마를 썼나요?'라는 질문이 세 개의 화면을 탐색해야 할 필요가 없어야 합니다. '이번 주 나의 모든 Amazon 주문을 카테고리화하기' 작업이 수동으로 하나씩 검토하는 과정이 되어서는 안 됩니다.
이 서버는 AI 비서에게 YNAB API에 대한 로컬 인터페이스를 제공하여 자연어를 구조화된 예산 검토 및, 명시적으로 활성화될 경우 예산 작업을 수행하도록 변환합니다. 이는 실제 예산 작업(overspending을 찾는 것, 승인되지 않은 거래 검토, 카테고리 이탈 확인, 반복 결제 조사, 필요한 것보다 더 광범위한 액세스를 제공하지 않으면서 검증된 배치 업데이트를 수행하는 것)을 위해 설계되었습니다.
모든 금액 값은 달러와 YNAB의 내부 밀리유닛 형식 간에 자동으로 변환되므로 AI가 이를 생각할 필요가 없습니다. 이 서버는 적절한 경우 공식 YNAB JavaScript SDK를 사용하고, SDK가 아직 따라잡지 못한 최신 엔드포인트 및 쿼리 매개변수에 대해서는 직접 API 호출을 사용합니다.
빠른 시작
로컬 사용을 위해서는 Node.js 20 이상이 필요합니다. stdio 서버를 지원하는 MCP 클라이언트에 다음 내용을 추가하세요:
{
"mcpServers": {
"ynab": {
...
이 예제는 1Password CLI를 사용합니다. 참조 항목을 사용자 자신의 항목으로 교체하거나, 런처를 통해 YNAB_API_TOKEN을 주입하세요. YNAB API 호출 없이 자격 증명 상태를 검사하려면 먼저 ynab_auth_status를 요청하세요.
이 패키지는 독립적인 stdio MCP 서버로 작동합니다. npm 패키지를 직접 등록하고 MCP 클라이언트가 필요할 때 실행하도록 할 수 있습니다. 또한 별도로 관리되는 Claude Code 및 Codex 마켓플레이스, 그리고 포함된 Hermes 및 Antigravity 카탈로그를 위한 플러그인 패키지도 제공됩니다. YNAB의 경우 더 이상 이전의 ames-connectors 마켓플레이스가 필요하지 않습니다.
npm 패키지는 로컬에서 소유자가 실행하는 옵션입니다. 계정 소유자가 프로세스를 실행하기 때문에 개인 접근 토큰을 사용합니다. 동일한 저장소는 원격 MCP URL을 허용하는 클라이언트를 위한 호스팅된 OAuth 커넥터도 구동합니다.
호스팅된 원격 서버에 연결하기
이 스트림 가능한 HTTP URL을 Claude.ai, ChatGPT, Mistral Vibe Work 또는 다른 원격 MCP 클라이언트에 추가하세요:
이전의 https://ynab.amesvt.com/mcp 엔드포인트는 폐지되었습니다. 만약 클라이언트가 여전히 이전 호스트 이름을 사용한다면, 새 URL을 새로운 연결로 추가하고 거기에서 인증하세요. OAuth 토큰은 발급된 호스트 이름에 바인딩됩니다. 저장된 자격 증명과 저널은 보존되지만, 새로운 동의는 자체 격리된 저널을 가집니다. 마이그레이션 및 롤백 계획을 참조하세요.
클라이언트는 이 커넥터의 동의 페이지를 열고 YNAB로 이동하여 로그인하도록 안내합니다. 읽기 전용 연결을 위해 쓰기 액세스 상자를 체크 해제하거나, 쓰기 도구가 필요할 때 활성화하세요. 커넥터는 Cloudflare KV에 애플리케이션 계층 암호화와 함께 OAuth 토큰과 취소 데이터를 저장하며, AI 클라이언트가 받는 것은 오직 커넥터 자체의 스코프된 토큰뿐입니다. 라이브 개인 정보 보호 정책, 데이터 삭제 흐름, 및 배포 문서를 참조하세요.
⚠️ [IMG:N] 형식 토큰은 이미지 placeholder 입니다. 번역하지 말고 원래 위치에 그대로 유지하세요.
[번역된 제목]: YNAB용 MCP Server
The July 15 acceptance record는 이전에 서명된 수표를 기록합니다. 이는 현재 사용 가능 여부를 확인하는 것이 아닙니다. Worker는 범위별 권한 부여(scoped authorization), 암호화된 토큰 저장소, 계정 삭제 기능을 지원합니다. 영향도가 높은 도구들은 쓰기 접근이 활성화된 후에도 confirmed: true 입력 요구 사항을 유지합니다.
플러그인으로 설치하기
Claude와 Codex 플러그인 패키지는 별도로 관리되는 마켓플레이스를 통해 배포가 계속 가능합니다. 이 저장소는 더 이상 해당들의 루트 카탈로그를 제공하지 않습니다. 직접 사용하려면, npm 패키지를 MCP 클라이언트에 등록하십시오.
플러그인은 @oliverames/mcp-server-for-ynab@latest로 시작하며, YNAB_ALLOW_WRITES=1을 설정하여 이전의 ames-ynab 커넥터 동작을 유지합니다. 직접적인 MCP 등록은 쓰기를 명시적으로 활성화하지 않는 한 읽기 전용 상태를 유지합니다.
다른 플러그인 호스트
이 저장소는 또한 Hermes와 Antigravity에 대한 호스트별 마켓플레이스 및 플러그인 매니페스트를 포함하고 있습니다:
| Host | Marketplace | Plugin manifest | MCP config |
|---|
| Claude Code | 별도 관리됨 | .claude-plugin/plugin.json | .mcp.json |
| ... | | | |
1. YNAB 개인 액세스 토큰 받기
YNAB 개발자 설정으로 이동하여 새로운 개인 액세스 토큰을 생성하십시오.
다른 YNAB 사용자에게 개인 액세스 토큰을 요청하지 마십시오. 귀하가 소유하지 않은 계정에 대한 공개 커넥터를 구축하는 경우, 대신 YNAB OAuth를 사용하십시오.
자격 증명 조회 순서:
- MCP 프로세스에 직접 전달되는 값들, 예:
YNAB_API_TOKEN.
- 감지된 호스트의 평문 설정값: Codex는
~/.codex/config.toml에서 먼저 [shell_environment_policy.set]을 읽고, 다음으로 [mcp_servers.ynab.env]를 읽습니다. Claude Code는 최상위 레벨의 env 아래에 있는 ~/.claude/settings.json을 읽습니다.
- 토큰이 이미 로컬에 저장되어 있지만 런처가 주입하지 않은 경우 유용한, 지원되는 다른 에이전트 설정값입니다.
- 위의 소스 중 어느 곳에서든 구성된 경우:
YNAB_API_TOKEN_FILE.
- 위의 소스 중 어느 곳에서든 구성되었고
op CLI가 사용 가능한 경우: YNAB_OP_PATH.
만약 토큰을 찾지 못하면, ynab_auth_status는 구조화된 설정 가이드를 반환합니다. 에이전트는 먼저 사용자에게 1Password와 같은 비밀번호 관리자에 YNAB 토큰이 이미 있는지 물어봐야 합니다. 만약 그렇다면, YNAB_OP_PATH를 구성하기 전에 허가를 요청하고; 그렇지 않다면 사용자에게 올바른 Codex 또는 Claude 설정 파일에 YNAB_API_TOKEN을 추가하고 MCP 서버를 재시작하도록 요청해야 합니다.
2. Claude Code에 설치하기
서버를 모든 Claude Code 프로젝트에서 사용하려면 사용자 범위를 사용하세요:
claude mcp add ynab --scope user \
-e YNAB_API_TOKEN=your-token-here \
-- npx -y @oliverames/mcp-server-for-ynab@latest
도구가 YNAB의 last-used 예산을 사용하지 않도록 기본 예산 ID를 추가하려면:
claude mcp add ynab --scope user \
-e YNAB_API_TOKEN=your-token-here \
-e YNAB_BUDGET_ID=optional-default-budget-id \
...
--scope user 대신 --scope project를 사용하면 Claude Code가 프로젝트 로컬의 .mcp.json을 작성합니다.
만약 ~/.claude/settings.json에 이미 env.YNAB_API_TOKEN이 포함되어 있다면, -e YNAB_API_TOKEN=...를 생략할 수 있습니다. 런처가 주입하지 않은 경우 서버는 Claude 설정값을 폴백(fallback)으로 읽을 것입니다.
Claude Code가 서버를 인식하는지 확인하세요:
Claude Code가 ynab이 이미 존재한다고 보고하면, 이전 항목을 제거하고 추가 명령을 다시 실행하세요:
3. Codex에 설치하기
동일한 npm 패키지를 Codex에 직접 등록합니다:
codex mcp add ynab \
--env YNAB_API_TOKEN=your-token-here \
-- npx -y @oliverames/mcp-server-for-ynab@latest
기본 예산 ID와 함께:
codex mcp add ynab \
--env YNAB_API_TOKEN=your-token-here \
--env YNAB_BUDGET_ID=optional-default-budget-id \
...
만약 ~/.codex/config.toml에 이미 [shell_environment_policy.set] 또는 [mcp_servers.ynab.env] 아래에 YNAB_API_TOKEN이 포함되어 있다면, --env YNAB_API_TOKEN=...을 생략할 수 있습니다. 이 경우 런처가 해당 환경 변수를 주입하지 못하면 서버는 Codex 설정을 폴백(fallback)으로 읽습니다.
Codex가 서버를 인식하는지 확인합니다:
만약 Codex가 ynab이 이미 존재한다고 보고하면, 기존 항목을 제거하고 add 명령을 다시 실행합니다:
4. 쓰기 도구 활성화 (선택 사항)
기본적으로 서버는 읽기 전용(read-only) 도구만 등록합니다. YNAB 데이터를 생성, 업데이트, 가져오기 또는 삭제하는 도구를 노출하려면, 서버를 등록할 때 YNAB_ALLOW_WRITES=1을 추가하십시오:
claude mcp add ynab --scope user \
-e YNAB_API_TOKEN=your-token-here \
-e YNAB_ALLOW_WRITES=1 \
...
codex mcp add ynab \
--env YNAB_API_TOKEN=your-token-here \
--env YNAB_ALLOW_WRITES=1 \
...
모든 쓰기 작업은 preview_write_tool을 통한 정확한 미리보기, 세션에 바인딩된 일회용 previewToken, 그리고 계획에 대한 명시적인 인간 승인 후 confirmed: true를 요구합니다. 토큰이 인간의 동의를 의미하는 것은 아닙니다. 실행 시 최신 상태를 다시 읽고 변경된 ID, 예산 또는 값을 거부하며, expectedMatchedCount는 추가 확인 사항일 뿐 대체재가 아닙니다. 보류 중인 은행 가져오기(Pending bank imports)는 정확하게 미리보기 할 수 없으므로, YNAB에서 시작하여 여기에 가져온 행을 검토하십시오.
수동 JSON 설정
Claude Desktop (claude_desktop_config.json):
{
```bash
npm install -g @oliverames/mcp-server-for-ynab
{
"mcpServers": {
"ynab": {
...
Docker (선택 사항)
해당 저장소는 Dockerfile을 제공합니다 (Glama와 같은 레지스트리 호스팅 빌드에서도 사용됨). 컨테이너는 stdio를 통해 MCP로 통신합니다:
docker build -t mcp-server-for-ynab .
docker run -i --rm -e YNAB_API_TOKEN=your-token-here mcp-server-for-ynab
쓰기 도구(write tools)를 활성화하려면 -e YNAB_ALLOW_WRITES=1을 추가하고, 기본 예산(default budget)을 설정하려면 -e YNAB_BUDGET_ID=...를 사용하세요.
1Password 토큰 조회 (선택 사항)
토큰이 1Password에 저장되어 있는 경우, YNAB_API_TOKEN 대신 YNAB_OP_PATH를 설정해야 합니다. MCP 서버를 실행하는 환경에는 op CLI가 설치되어 있고 인증(authenticated)되어 있어야 합니다.
claude mcp add ynab --scope user \
-e YNAB_OP_PATH="op://Personal/YNAB API Token/credential" \
-- npx -y @oliverames/mcp-server-for-ynab@latest
codex mcp add ynab \
--env 'YNAB_OP_PATH=op://Personal/YNAB API Token/credential' \
-- npx -y @oliverames/mcp-server-for-ynab@latest
로컬 스모크 테스트 (Local Smoke Test)
이 저장소에서 MCP 클라이언트 설정을 변경하지 않고도 게시된 npm 패키지를 검증할 수 있습니다:
YNAB_API_TOKEN=your-token-here npm run smoke:review-unapproved -- --published
할 수 있는 일 (What You Can Do)
| AI에게 질문하기... | 내부적으로 발생하는 작업 |
|---|
| "이번 달 식료품에 얼마를 썼나요?" | search_categories → get_month_category |
| ... | |
기능 (Features)