ynab-cli
The only YNAB CLI with a built-in MCP server.
Manage your budget from the command line — or let AI agents do it for you.
______________________________________________________________________
特性
🤖 AI原生MCP服务器 --通过stdio传输37个工具。可与Claude Desktop、Claude Code和任何兼容MCP的代理配合使用。唯一一个使用MCP的YNAB CLI。
📊 灵活的输出 --JSON(默认)、人类可读表或CSV。管道到 jq,导入电子表格,或直接馈送给代理。
💵 美元模式 — --dollars 将YNAB的百万单位转换为实际货币。不再在脑海中除以1000。
🔍 交易搜索 --通过客户端过滤整个历史记录,按备忘录、收款人姓名或金额范围查找交易。
📁 字段过滤和导出 — --fields "date,payee_name,amount" 保持输出集中。 --output report.csv 直接写入文件。
⚡ 单一二进制 --内置Rust。没有运行时,没有依赖关系,没有垃圾收集器。立即开始。
🔐 安全认证 --存储在macOS Keychain中的令牌(JSON回退)。npm包附带OIDC来源认证。
🔄 增量同步 --只获取自上次请求以来更改的内容。自动化工作流程的高效轮询。
🧩 API全面覆盖 -每个YNAB API端点都有一个专用命令。有什么不见的吗? ynab api GET /v1/... 直接命中API。
安装
npm(最简单)
npm install -g ynab-cli-rsGitHub发布
# Detect platform and install latest release
curl -sL https://api.github.com/repos/0xdecaf/ynab-cli/releases/latest \
| grep "browser_download_url.*$(uname -m | sed 's/arm64/aarch64/').*$(uname -s | tr '[:upper:]' '[:lower:]')" \
| cut -d'"' -f4 | xargs curl -sL | tar xz
sudo mv ynab /usr/local/bin/从源代码构建
git clone https://github.com/0xdecaf/ynab-cli.git && cd ynab-cli
cargo build --release
# Binary at target/release/ynab快速开始
# 1. Authenticate with your YNAB personal access token
ynab auth login --pat
# 2. See your budgets
ynab plans list
# 3. Set a default so you never need --plan-id again
ynab plans set-default
# 4. You're in
ynab accounts list --dollars
ynab transactions list --since-date 2026-01-01 --dollars在以下网址获取个人访问令牌 app.ynab.com/settings/developer
用法
每个资源都有自己的子命令。以下是亮点——run ynab --help 了解全部细节。
交易
ynab transactions list # all transactions
ynab transactions list --type uncategorized # find uncategorized
ynab transactions search --payee-name "Starbucks" # search by payee
ynab transactions search --memo "coffee" --dollars # search by memo
ynab transactions create --json '{"account_id":"...","date":"2026-03-10","amount":-25000,"payee_name":"Coffee Shop"}'
ynab transactions update --transaction-id --json '{"memo":"Updated"}'
ynab transactions update-bulk --json '[{"id":"...","approved":true}]'预算和类别
ynab categories list # all categories
ynab categories budget --month 2026-03-01 --category-id --budgeted 500000
ynab categories update --category-id --json '{"name":"Dining Out"}'
ynab months get --month 2026-03-01 --dollars # monthly breakdown账户和收款人
ynab accounts list --dollars --fields "name,type,balance" # quick balance check
ynab accounts create --json '{"name":"Savings","type":"savings","balance":0}'
ynab payees update --payee-id --json '{"name":"New Name"}'定期交易
ynab scheduled list # all recurring
ynab scheduled delete --scheduled-transaction-id # remove one原始API访问
ynab api GET /v1/budgets
ynab api PATCH /v1/budgets//categories/ --body '{"category":{"name":"X"}}'输出选项
ynab transactions list --output-format table # human-readable
ynab transactions list --output-format csv --output spending.csv # export
ynab transactions list --dollars --fields "date,payee_name,amount" # focused
ynab transactions list --dry-run # preview HTTP requestMCP服务器
启动服务器:
ynab mcp37个工具-每个API端点一个-通过stdio传输。每个工具都接受 plan_id 作为第一个参数并返回JSON。
克劳德桌面版
{
"mcpServers": {
"ynab": {
"command": "ynab",
"args": ["mcp"],
"env": {
"YNAB_ACCESS_TOKEN": "your-token-here"
}
}
}
}克劳德代码
{
"mcpServers": {
"ynab": {
"command": "ynab",
"args": ["mcp"],
"env": {
"YNAB_ACCESS_TOKEN": "your-token-here"
}
}
}
}代理人能做什么
- “这个月我在吃饭上花了多少钱?”
- “批准所有未分类的交易作为杂货”
- “下个月娱乐预算200美元”
- “将本月支出导出为CSV”
- “我所有账户的余额是多少?”
MCP服务器通过结构化工具调用为代理提供对YNAB数据的完全读/写访问权限。
全球旗帜
| 标志 | 描述 |
|---|---|
--plan-id | 计划(预算)ID--或设置 YNAB_PLAN_ID env,或 plans set-default |
--output-format | json (默认), table,或 csv |
--dollars | 将百万单位转换为美元 |
--fields | 逗号分隔字段筛选器 |
--output | 写入文件而不是stdout |
--dry-run | 预览HTTP请求而不执行 |
--verbose | 显示HTTP请求/响应详细信息 |
认证
令牌解析顺序:
YNAB_ACCESS_TOKEN环境变量--token旗帜- macOS钥匙链(通过
ynab auth login) ~/.config/ynab/credentials.json后备方案
贡献
git clone https://github.com/0xdecaf/ynab-cli.git
cd ynab-cli
cargo build
cargo test --all
cargo clippy --all-targets --all-featuresPR欢迎。请运行 cargo fmt --all 在提交之前。
