使用说明
YNAB MCP服务器
一个Ruby/RailsMCP(模型上下文协议)服务器,它公开了完整的YNABneneneba API作为Claude和ChatGPT的工具。
先决条件
设置
- 安装依赖项:
bundle install
- 配置您的YNAB令牌(和身份验证令牌):
cp .env.example .env
# Edit .env and add your YNAB Personal Access Token
集 MCP_AUTH_TOKEN 对于随机秘密,要求在每个密钥上都有一个承载令牌
请求 /mcp (建议用于localhost以外的任何地方):
openssl rand -hex 32 # paste the result as MCP_AUTH_TOKEN in .env
如果 MCP_AUTH_TOKEN 如果留空,则端点为 未认证的 --很好
地方发展 localhost,但切勿公开未经身份验证的URL
公开,因为服务器持有你的YNAB令牌,任何到达它的人都可以
读写你的预算。
- 启动服务器:
bin/rails server -p 3000
MCP端点位于 POST http://localhost:3000/mcp.
连接到ChatGPT
地方发展(与ngrok)
- 启动Rails服务器:
bin/rails server -p 3000 - 在另一个终端中:
ngrok http 3000 - 从ngrok复制HTTPS URL(例如。
https://abc123.ngrok.app) - 在ChatGPT中:
- 打开 设置 >启用 开发者模式
- 去 连接器 标签
- 点击 添加连接器 并输入您的ngrok URL+
/mcp - 例子:
https://abc123.ngrok.app/mcp
- 开始新的聊天,单击 添加源,然后选择YNAB连接器
生产部署
部署到任何Ruby友好的主机(Fly.io、Render、Heroku等):
# Example with Fly.io
fly launch
fly secrets set YNAB_API_TOKEN=your_token_here
fly secrets set MCP_AUTH_TOKEN=$(openssl rand -hex 32)
fly deploy
然后添加生产URL(https://<your-app>/mcp)作为连接器。保持
MCP_AUTH_TOKEN value handy——客户端必须将其作为承载令牌发送。
连接到克劳德
此服务器正在讲话 可流式传输的HTTP 在 POST /mcp 并返回明文
application/json 这正是Claude的MCP客户所期望的。这
端点由静态承载令牌保护(MCP_AUTH_TOKEN),那么你怎么
连接取决于您使用的Claude客户端——从三条路径中选择一条
在......下面
注: 静态承载令牌不是OAuth。这 claude.ai网络连接器 UI不提供自定义标题字段,因此它只能连接到 使用OAuth或无身份验证的服务器。从以下位置使用此服务器的承载令牌 克劳德,用 API 或 克劳德桌面版 下面的路径。(参见 OAuth 如果你特别需要web UI。)
路径1-Claude API(MCP连接器)
通过API的MCP连接器直接传递URL和承载令牌:
{
"model": "claude-opus-4-8",
"mcp_servers": [
{
"type": "url",
"url": "https://your-app.fly.dev/mcp",
"name": "ynab",
"authorization_token": "YOUR_MCP_AUTH_TOKEN"
}
],
"messages": [{ "role": "user", "content": "Show me my budgets" }]
}
请求需要 anthropic-beta: mcp-client-2025-04-04 头球这
authorization_token 以以下方式发送到服务器 Authorization: Bearer ....
路径2——克劳德桌面(通过 mcp-remote)
Claude Desktop连接到本地(stdio)服务器,因此桥接到此远程服务器
服务器与 mcp-remote,通过
承载令牌作为标头。编辑 claude_desktop_config.json
(设置→ 开发者→ 编辑配置):
{
"mcpServers": {
"ynab": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://your-app.fly.dev/mcp",
"--header",
"Authorization: Bearer YOUR_MCP_AUTH_TOKEN"
]
}
}
}
重新启动克劳德桌面;YNAB工具出现在工具菜单中。用于本地
将URL指向您的ngrok隧道(https://abc123.ngrok.app/mcp).
路径3-claude.ai web(连接器UI)
Pro/Max/Team/Enterprise计划可以在以下位置添加远程服务器 设置→
连接器→ 添加自定义连接器 使用URL https://your-app.fly.dev/mcp.
web UI具有 无承载令牌字段,因此此路径仅在以下情况下有效 没有服务器也可以访问。两种选择:
- 跑 没有
MCP_AUTH_TOKEN在难以猜测的URL后面(较弱;URL 成为唯一的秘密),或 - 添加 OAuth 到服务器(见下文),以便UI可以正确地进行身份验证。
OAuth
web连接器UI通过OAuth 2.0对远程服务器进行身份验证(它执行
授权服务器元数据发现和标准认证代码流)。这
潜在的 mcp gem不附带OAuth层,因此支持此路径意味着
在Rails应用程序中添加一个。此处尚未实现——如果满足以下条件,请使用路径1或2
您今天需要经过身份验证的访问权限。
可用工具(18)
预算
- list_budgets -列出你所有的YNAB预算(先用这个!)
- get_budget -获取特定预算的摘要信息
账户
- list_计数 -列出所有有余额的账户
- 获取计数 -获取单个帐户的详细信息
分类
- 列表_类别 -列出按组分组的所有类别
- get_category -获取单个类别的详细信息
- update_month_category -为特定月份的类别分配资金
交易
- list_交易 -使用可选过滤器(帐户、类别、月份、类型、日期)列出交易
- get_transaction -获取单笔交易的完整详细信息
- create_transaction -创建新交易
- update_transaction -更新/批准现有交易
- 删除交易 -删除交易
收款人和月份
- 列表_员工 -列出所有收款人
- list_budget_months -列出预算月份和收入/支出摘要
- get_budget_month -获取特定月份的详细明细
定期交易
- list_scheduled_transactions -列出经常性交易
- create_scheduled_transaction -创建新的定期交易
- update_scheduled_transaction -更新定期交易
示例提示
连接到ChatGPT后,请尝试:
- “显示我的预算”
- “我的支票账户余额是多少?”
- “这个月我在杂货上花了多少钱?”
- “在我的Chase卡上向Target添加45.99美元的交易”
- “显示所有未批准的交易”
- “这个月我还有多少钱来做预算?”
- “我即将收到的经常性账单是什么?”
备注
- 所有货币金额都使用美元(例如45.99美元),而不是YNAB百万单位
- 您的YNAB令牌存储为环境变量,从不发送到AI客户端
- 集
MCP_AUTH_TOKEN要求在/mcp;客户端将其作为Authorization: Bearer <token> - YNAB API速率限制:每小时200个请求