mcpField
Y
ynab-mcpb

ynab-mcpb

本地服务
github.com/dizzlkheinz金融数据91 天前更新

关于 ynab-mcpb

ynab-mcpb 是连接 YNAB 与 MCP 客户端的本地运行 MCP 服务,面向需要用自然语言管理预算的用户。它提供收据拆分、银行对账和消费分析,并以默认预览确认保护写入操作。

主要功能

  1. 01收据明细拆分并分摊税额
  2. 02导入 CSV 对账并批量修复
  3. 03支持 35 项预算工具
  4. 04写入操作默认需精确确认
  5. 05按配置选择工具集和读取格式

适用场景

  1. 01将收据转换为分类拆分交易
  2. 02用银行 CSV 查找漏记或金额不符
  3. 03查询指定时期的消费情况
  4. 04查看预定账单与现金流

MCP 相关

该 MCP 服务通过 YNAB API 向 MCP 客户端提供预算、账户、交易、计划交易和分析工具。服务在本地运行,支持工具配置、结构化输出及资源模板。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dizzlkheinz-ynab-mcpb": {
"command": "npx",
"args": [
"-y",
"@dizzlkheinz/ynab-mcpb"
],
"env": {
"YNAB_ACCESS_TOKEN": "<YNAB_ACCESS_TOKEN>",
"YNAB_MCP_WRITE_MODE": "<YNAB_MCP_WRITE_MODE>",
"YNAB_MCP_TOOL_PROFILE": "<YNAB_MCP_TOOL_PROFILE>"
}
}
}
}
启动命令npx -y @dizzlkheinz/ynab-mcpb
需要配置的环境变量
YNAB_ACCESS_TOKEN密钥YNAB Personal Access Token from https://app.youneedabudget.com/settings/developer
YNAB_MCP_WRITE_MODEWrite policy: read-only, preview (default), or enabled
YNAB_MCP_TOOL_PROFILEStatic tool profile: core, read-only, or full (default)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@dizzlkheinz/ynab-mcpb0.31.0

工具

35

收录的工具列表 · 更新于 1 天前

参数类型必填说明
response_formatenum否json | markdown

详细介绍

YNAB MCP 服务

将 YNAB 连接到任意 AI 助手。用日常语言管理预算。

下载 MCPB npm 许可证:AGPL v3 Node.js


演示

收据明细演示
粘贴收据 → 几秒钟内生成逐项拆分的交易

可以做什么

工作流提示词示例
收据拆分"为这张收据创建一笔拆分交易,并分摊税费。"
银行对账"使用这个 CSV 对我的支票账户进行对账。"
支出分析"我这个月在外卖上花了多少钱?"
定期现金流"这个月有哪些定期账单和收入到期?"
创建交易"创建一笔交易:昨天在 Trader Joe's 消费了 $42.18。"
月度概览"显示我 1 月的预算摘要。"

工作原理

graph LR
    U(You) -->|Plain English| C[Claude Desktop<br/>or any MCP client]
    C -->|MCP protocol| S[YNAB MCP Server<br/>35 tools]
    S -->|YNAB API| Y[(Your Budget)]

    style S fill:#2563EB,color:#fff,stroke:#1d4ed8
    style Y fill:#16a34a,color:#fff,stroke:#15803d
    style C fill:#7c3aed,color:#fff,stroke:#6d28d9

功能

  • 收据明细 — 粘贴收据,即可生成逐项拆分的交易,并自动将税费分摊到各个条目。
  • 银行对账(测试版) — 导入银行 CSV,与 YNAB 数据进行模糊匹配,检测缺失或不匹配的交易,并批量应用修正。
  • 35 个 YNAB 工具 — 全面覆盖,并支持定期交易和确定性的周期分析。
  • 默认确保写入安全 — 预览模式要求使用与确切验证请求绑定的短时有效、单次确认。
  • 更精简的工具配置 — 启动时可选择 core、read-only 或 full,无需动态注册。
  • 增量同步 — 仅获取自上次请求以来发生变化的数据,保持快速响应。
  • Markdown 或 JSON — 所有读取工具都支持 response_format:便于阅读的 Markdown 表格(默认)或结构化 JSON。
  • 原生支持 MCP — 支持结构化输出、注释、补全 API 和资源模板。

对账工作原理

显示工作流示意图
sequenceDiagram
    participant You
    participant Claude
    participant MCP as YNAB MCP Server
    participant YNAB

    You->>Claude: "Reconcile my checking<br/>with this CSV"
    Claude->>MCP: reconcile_account(csv_data)
    MCP->>YNAB: Fetch transactions
    YNAB-->>MCP: YNAB transactions
    MCP->>MCP: Parse CSV<br/>Fuzzy-match payees & dates<br/>Detect missing / mismatched
    MCP-->>Claude: Matches + recommendations
    Claude->>You: "Found 47 matches, 3 missing.<br/>Apply changes?"
    You->>Claude: "Yes"
    Claude->>MCP: Apply recommended changes
    MCP->>YNAB: Create / update transactions
    MCP-->>Claude: Done
    Claude->>You: "3 transactions created,<br/>account reconciled."

设置(2 分钟)

1 — 获取 YNAB 令牌
  1. 打开 YNAB Web App
  2. 前往 账户设置 → 开发者设置 → 新建令牌
  3. 复制令牌(仅显示一次)
2 — 安装
Claude Desktop — MCPB 文件(推荐)
  1. 从 发布页面 下载最新的 .mcpb
  2. 将它拖入 Claude Desktop
  3. 根据提示输入 YNAB_ACCESS_TOKEN
  4. 重启 Claude Desktop
Claude Desktop — npx

添加到 Claude Desktop 配置:

{
  "mcpServers": {
    "ynab": {
      "command": "npx",
      "args": ["-y", "@dizzlkheinz/ynab-mcpb@latest"],
      "env": {
        "YNAB_ACCESS_TOKEN": "your-token-here"
      }
    }
  }
}
Cline(VS Code)
{
  "mcpServers": {
    "ynab": {
      "command": "npx",
      "args": ["-y", "@dizzlkheinz/ynab-mcpb@latest"],
      "env": {
        "YNAB_ACCESS_TOKEN": "your-token-here"
      }
    }
  }
}
Codex
[mcp_servers.ynab-mcpb]
command = "npx"
args = ["-y", "@dizzlkheinz/ynab-mcpb@latest"]
env = {"YNAB_ACCESS_TOKEN" = "your-token-here"}
startup_timeout_sec = 120
其他 MCP 客户端
  • 命令: npx
  • 参数: ["-y", "@dizzlkheinz/ynab-mcpb@latest"]
  • 环境变量: YNAB_ACCESS_TOKEN=<your token>
3 — 试试这些提示词
List my budgets and set the default to my main budget.
Show recent transactions in my checking account.
How much did I spend on groceries in the last 30 days?
Create a transaction: $42.18 at Trader Joe's yesterday.

工具(35)

查看所有类别的工具
类别工具
预算list_budgets get_budget get_default_budget set_default_budget
账户list_accounts get_account create_account
交易list_transactions get_transaction create_transaction create_transactions update_transaction update_transactions delete_transaction export_transactions compare_transactions create_receipt_split_transaction
类别list_categories get_category update_category
收款方list_payees get_payee
月份list_months get_month
对账reconcile_account
计划交易list_scheduled_transactions get_scheduled_transaction create_scheduled_transaction update_scheduled_transaction delete_scheduled_transaction
分析analyze_spending compare_spending_periods
实用工具get_user diagnostic_info clear_cache

所有读取工具均接受 response_format("markdown" 或 "json",默认值:"markdown")。

完整参考:docs/reference/API.md


配置

变量默认值说明
YNAB_ACCESS_TOKEN—必填。 您的 YNAB 个人访问令牌。
YNAB_EXPORT_PATH~/Downloads导出交易文件的目录。
YNAB_MCP_ENABLE_DELTAfalse设置为 true 以启用增量同步(仅获取已更改的数据)。必须严格为 true 或 false。
YNAB_MCP_WRITE_MODEpreviewread-only 会隐藏 YNAB 写入操作;preview 需要精确确认;enabled 允许直接写入。
YNAB_MCP_TOOL_PROFILEfull启动时使用的工具集:core、read-only 或 full。
YNAB_MCP_CACHE_DEFAULT_TTL_MS300000缓存 TTL,单位为毫秒(5 分钟)。
YNAB_MCP_CACHE_MAX_ENTRIES1000LRU 淘汰前允许的最大缓存条目数。

所有选项请参阅 .env.example。

写入模式与兼容性

preview 是较为保守的默认模式。修改操作调用会先运行现有的 dry_run 路径,并返回确认令牌。该令牌会在两分钟后过期,只能使用一次,且仅授权使用相同的规范工具名称和已验证参数。read-only 不会注册 YNAB 修改工具。enabled 会保留启用前的直接写入行为,供明确选择该模式的用户使用。

交易金额现在优先使用 amount_decimal(例如,-12.34)或明确的原始字段 amount_milliunits(-12340)。类别注资同样优先使用 budgeted_decimal 或 budgeted_milliunits。为保持向后兼容,旧字段 amount 和 budgeted 仍可作为已弃用的毫单位别名使用;其含义绝不会通过猜测确定。

工具配置

配置在服务启动时选择,因此客户端收到的 tools/list 响应保持稳定:

  • core 包含常用读取工具、交易安全工作流、对账、收据拆分、计划交易审核和支出分析。
  • read-only 提供所有明确标注为只读的工具。
  • full 提供完整的 35 个工具集,并受所选写入模式限制。

隐私与信任

  • 服务进程在本地运行,并通过 YNAB 的 API 与 YNAB 通信。
  • 你的 YNAB 个人访问令牌属于敏感信息。请将其存储在 MCP 客户端的机密配置中,切勿将其粘贴到对话、问题、测试固件或日志中。
  • 工具返回并包含在对话中的财务数据可能会由 MCP 客户端所选的 AI 提供商处理。分享敏感详情前,请查看该提供商的数据控制措施。
  • 交易导出文件会保留在本地磁盘的 YNAB_EXPORT_PATH(或平台默认位置)。服务不会将导出的文件上传到其他位置。
  • 若要禁止向 YNAB 写入,请使用 read-only;若要确认具体请求,请使用 preview;仅当有意选择直接写入以兼容特定场景时,才使用 enabled。
  • 本开源独立项目与 YNAB 无关联,也未获其认可。

故障排除

症状解决方法
npx 失败安装 Node.js 24+,然后重启 MCP 客户端。
身份验证错误重新生成 YNAB 令牌,并更新 YNAB_ACCESS_TOKEN。
未检测到工具更改任何配置后,重启 MCP 客户端。
对账问题请附上匿名化的 CSV 示例提交问题。

开发者指南

git clone https://github.com/dizzlkheinz/ynab-mcpb.git
cd ynab-mcpb
npm ci --ignore-scripts
npm run build
npm test
npm run test:integration

构建和离线测试不需要 YNAB 凭据。npm test 会运行单元测试和性能测试;test:integration 会运行模拟集成测试。使用 test:all、test:coverage 或 test:watch 分别运行完整测试套件、覆盖率测试或监听模式。可直接传入文件或测试名称筛选条件,例如 npm run test:integration -- transactionTools。

若要在本地启动服务,请将 .env.example 复制为 .env,添加令牌,然后运行 npm start。实时冒烟测试需要显式设置 RUN_LIVE_YNAB_TESTS=true,并通过 npm run test:live 运行;设置 SKIP_E2E_TESTS=true 可禁用这些测试。

构建过程不会打包或安装全局工具。若要创建 Claude Desktop 安装包,请先安装官方 CLI 一次(npm install --global @anthropic-ai/mcpb),然后运行 npm run build 和 npm run package:mcpb。使用 npm pack --dry-run --ignore-scripts 查看 npm 包内容。

架构和贡献者指南:CLAUDE.md

对账架构:docs/technical/reconciliation-system-architecture.md


贡献

欢迎提交错误报告和 CSV 边缘情况复现示例,尤其是银行对账方面的内容: 提交问题

欢迎提交 PR——提交前请运行 npm test 和 npm run lint。


许可证

AGPL-3.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。