关于 ynab-mcpb
ynab-mcpb 是连接 YNAB 与 MCP 客户端的本地运行 MCP 服务,面向需要用自然语言管理预算的用户。它提供收据拆分、银行对账和消费分析,并以默认预览确认保护写入操作。
主要功能
- 01收据明细拆分并分摊税额
- 02导入 CSV 对账并批量修复
- 03支持 35 项预算工具
- 04写入操作默认需精确确认
- 05按配置选择工具集和读取格式
适用场景
- 01将收据转换为分类拆分交易
- 02用银行 CSV 查找漏记或金额不符
- 03查询指定时期的消费情况
- 04查看预定账单与现金流
MCP 相关
该 MCP 服务通过 YNAB API 向 MCP 客户端提供预算、账户、交易、计划交易和分析工具。服务在本地运行,支持工具配置、结构化输出及资源模板。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @dizzlkheinz/ynab-mcpbYNAB_ACCESS_TOKEN密钥YNAB Personal Access Token from https://app.youneedabudget.com/settings/developerYNAB_MCP_WRITE_MODEWrite policy: read-only, preview (default), or enabledYNAB_MCP_TOOL_PROFILEStatic tool profile: core, read-only, or full (default)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
35收录的工具列表 · 更新于 1 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| response_format | enum | 否 | json | markdown |
详细介绍
演示
粘贴收据 → 几秒钟内生成逐项拆分的交易
可以做什么
| 工作流 | 提示词示例 |
|---|---|
| 收据拆分 | "为这张收据创建一笔拆分交易,并分摊税费。" |
| 银行对账 | "使用这个 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 令牌
- 打开 YNAB Web App
- 前往 账户设置 → 开发者设置 → 新建令牌
- 复制令牌(仅显示一次)
2 — 安装
Claude Desktop — MCPB 文件(推荐)
- 从 发布页面 下载最新的
.mcpb - 将它拖入 Claude Desktop
- 根据提示输入
YNAB_ACCESS_TOKEN - 重启 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")。
配置
| 变量 | 默认值 | 说明 |
|---|---|---|
YNAB_ACCESS_TOKEN | — | 必填。 您的 YNAB 个人访问令牌。 |
YNAB_EXPORT_PATH | ~/Downloads | 导出交易文件的目录。 |
YNAB_MCP_ENABLE_DELTA | false | 设置为 true 以启用增量同步(仅获取已更改的数据)。必须严格为 true 或 false。 |
YNAB_MCP_WRITE_MODE | preview | read-only 会隐藏 YNAB 写入操作;preview 需要精确确认;enabled 允许直接写入。 |
YNAB_MCP_TOOL_PROFILE | full | 启动时使用的工具集:core、read-only 或 full。 |
YNAB_MCP_CACHE_DEFAULT_TTL_MS | 300000 | 缓存 TTL,单位为毫秒(5 分钟)。 |
YNAB_MCP_CACHE_MAX_ENTRIES | 1000 | LRU 淘汰前允许的最大缓存条目数。 |
所有选项请参阅 .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。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。