YNAB智能对话服务器
一种模型上下文协议服务器,可实现与YNAB(You Need A Budget)数据的人工智能交互,允许用户通过对话界面查询其预算。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"ynab-mcp-server": {
"args": [
"ynab-mcp-server"
],
"command": "npx"
}
}
}
该服务需要配置环境变量:YNAB_ACCESS_TOKEN
可用工具 (1 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
ynab_list_budgets
Lists all available budgets from YNAB API
该工具无需必填参数,直接调用即可
服务介绍
ynab-mcp-server
这是一个使用 mcp-framework 构建的 Model Context Protocol (MCP) 服务器。该 MCP 提供了与你在 https://ynab.com 上设置的 YNAB 预算进行交互的工具。
为了让 AI 与此工具进行交互,你需要从 YNAB 获取你的个人访问令牌:https://api.ynab.com/#personal-access-tokens。当你将此 MCP 服务器添加到任何客户端时,你需要提供你的个人访问令牌作为 YNAB_API_TOKEN。此令牌永远不会直接发送给 LLM。 它被私密地存储在环境变量中,用于与 YNAB API 一起使用。
设置
指定环境变量:
- YNAB_API_TOKEN(必需)
- YNAB_BUDGET_ID(可选)
目标
该项目的目标是能够通过 AI 对话与我的 YNAB 预算进行交互。我想启用一些主要的工作流程:
工作流程:
首次设置
- 被提示从你的可用预算中选择预算。如果你尝试先使用其他工具,应该会有一个提示要求你设置默认预算。
- 所需工具:ListBudgets
管理超支类别
添加新交易
批准交易
检查月总支出与总收入
根据类别目标自动分配待分配资金
当前状态
可用工具:
- ListBudgets - 列出你账户中的可用预算
- BudgetSummary - 提供资金不足的类别和余额低的账户的摘要
- GetUnapprovedTransactions - 检索所有未批准的交易
- CreateTransaction - 为指定的预算和账户创建交易。
- 示例提示:
今天我在 REI 花了 3.98 美元,请在我的 Ally 账户中添加这笔交易 - 需要首先调用 GetBudget 以便我们知道账户 ID
- 示例提示:
- ApproveTransaction - 批准你 YNAB 预算中的现有交易
- 需要一个交易 ID 来批准
- 可以与 GetUnapprovedTransactions 结合使用来批准待处理的交易
- 在调用获取未批准交易后,提示:
批准 Apple Card 上 6.95 美元的交易
下一步:
- 能够一次批准多个交易
- updateCategory 工具 - 或者更通用的 updateTransaction 工具,如果我能正确地使用 zod 和 mcp 框架处理可选参数
- 是否脱离 mcp 框架直接使用模型上下文协议 SDK?
快速开始
# Install dependencies
npm install
# Build the project
npm run build
项目结构
ynab-mcp-server/
├── src/
│ ├── tools/ # MCP Tools
│ └── index.ts # Server entry point
├── .cursor/
│ └── rules/ # Cursor AI rules for code generation
├── package.json
└── tsconfig.json
添加组件
YNAB SDK 描述了可用的 API 端点:https://github.com/ynab/ynab-sdk-js。
YNAB 开放 API 规范在这里: https://api.ynab.com/papi/open_api_spec.yaml。这可以用来提示 AI 生成一个新的工具。例如,对 Cursor Agent 的提示:
create a new tool based on the readme and this openapi doc: https://api.ynab.com/papi/open_api_spec.yaml
The new tool should get the details for a single budget
您可以使用 CLI 添加更多工具:
# Add a new tool
mcp add tool my-tool
# Example tools you might create:
mcp add tool data-processor
mcp add tool api-client
mcp add tool file-handler
工具开发
示例工具结构:
import { MCPTool } from "mcp-framework";
import { z } from "zod";
interface MyToolInput {
message: string;
}
class MyTool extends MCPTool<MyToolInput> {
name = "my_tool";
description = "Describes what your tool does";
schema = {
message: {
type: z.string(),
description: "Description of this input parameter",
},
};
async execute(input: MyToolInput) {
// Your tool logic here
return `Processed: ${input.message}`;
}
}
export default MyTool;
发布到 npm
-
更新您的 package.json:
- 确保
name是唯一的,并遵循 npm 命名约定 - 设置适当的
version - 添加
description,author,license等信息 - 检查
bin是否指向正确的入口文件
- 确保
-
本地构建和测试:
npm run build npm link ynab-mcp-server # 本地测试您的 CLI -
登录 npm(如果需要,请创建账户):
npm login -
发布您的包:
npm publish
发布后,用户可以通过 Claude 桌面客户端添加它(请参阅下文),或者使用 npx 运行它。
与 Claude Desktop 一起使用
通过 Smithery 安装
要通过 Smithery 自动安装 YNAB 预算助手到 Claude Desktop:
npx -y @smithery/cli install @calebl/ynab-mcp-server --client claude
本地开发
将此配置添加到您的 Claude Desktop 配置文件中:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"ynab-mcp-server": {
"command": "node",
"args":["/absolute/path/to/ynab-mcp-server/dist/index.js"]
}
}
}
发布之后
将此配置添加到您的 Claude Desktop 配置文件中:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"ynab-mcp-server": {
"command": "npx",
"args": ["ynab-mcp-server"]
}
}
}
其他 MCP 客户端
查看 https://modelcontextprotocol.io/clients 获取其他可用的客户端。
构建和测试
- 对您的工具进行修改
- 运行
npm run build来编译 - 服务器将在启动时自动加载您的工具