返回市场
ynab-mcp-服务器

ynab-mcp-服务器

作者:calebl47 星标更新:2025-11-21

项目介绍

MseeP.ai 安全评估徽章

ynab-mcp-server

smithery 徽章

这是一个使用 mcp-framework 构建的模型上下文协议 (MCP) 服务器。此 MCP 提供了与您在 https://ynab.com 上设置的 YNAB 预算进行交互的工具。

<a href="https://glama.ai/mcp/servers/@calebl/ynab-mcp-server"> <img width="380" height="200" src="https://gips3.baidu.com/it/u=1088280954,1293262976&fm=3081&app=3081&f=PNG?w=760&h=400" alt="YNAB Server MCP 服务器" /> </a>

为了让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结合使用来批准待处理的交易
    • 在调用get未批准交易后提示:批准Apple卡上$6.95的交易

接下来:

  • 能够通过一次调用来批准多个交易
  • 更新Category工具 - 或者如果我可以正确地使用zod和mcp框架的可选参数,可以使用更通用的updateTransaction工具
  • 不再使用mcp框架,直接使用模型上下文协议SDK?

快速开始

# 安装依赖
npm install

# 构建项目
npm run build

项目结构

ynab-mcp-server/
├── src/
│   ├── tools/        # MCP 工具
│   └── index.ts      # 服务器入口点
├── .cursor/
│   └── rules/        # Cursor AI规则用于代码生成
├── 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的示例提示:

根据readme和这个openapi文档创建一个新的工具:https://api.ynab.com/papi/open_api_spec.yaml

新工具应获取单个预算的详细信息

你可以使用CLI添加更多工具:

# 添加一个新工具
mcp add tool my-tool

# 你可以创建的一些示例工具:
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 = "描述你的工具的作用";

  schema = {
    message: {
      type: z.string(),
      description: "此输入参数的描述",
    },
  };

  async execute(input: MyToolInput) {
    // 你的工具逻辑在这里
    return `处理结果: ${input.message}`;
  }
}

export default MyTool;

发布到npm

  1. 更新你的package.json:

    • 确保name是唯一的,并遵循npm命名约定
    • 设置适当的version
    • 添加descriptionauthorlicense
    • 检查bin指向正确的入口文件
  2. 本地构建和测试:

    npm run build
    npm link
    ynab-mcp-server  # 在本地测试你的CLI
    
  3. 登录npm(如有必要创建帐户):

    npm login
    
  4. 发布你的包:

    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":["/绝对路径/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 获取其他可用客户端。

构建和测试

  1. 对你的工具进行更改
  2. 运行 npm run build 编译
  3. 服务器将在启动时自动加载你的工具

更多了解