预算管理MCP服务器

一个基于TypeScript的模型上下文协议(MCP)服务器,封装了YNAB API,提供交易分类和拆分工作流的一流支持,适用于个人和团队预算管理。

  • by doctor-kat
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 doctor-kat/ynab-mcp

使用说明

YNAB MCP服务器

一个TypeScript模型上下文协议(MCP)服务器,它封装了 YNAB API 对事务分类和拆分工作流提供一流的支持。所有YNAB端点都通过通用工具公开,而精心策划的助手简化了常见的预算任务。

特性

  • 🔐 环境驱动的配置,通过验证 zod.
  • 🔁 自动生成的TypeScript类型和从实时OpenAPI规范导出的端点元数据。
  • 🧰 43个MCP工具,包括:
    • 预算上下文系统(缓存预算数据,最少API调用)
    • 预算、账户和交易发现助手
    • 交易分类和拆分以及阶段审查应用工作流
    • YNAB API全面覆盖(类别、收款人、计划交易等)
  • ⚡ 针对本地LLM进行了性能优化(预算上下文缓存、高效数据结构)
  • 🧪 使用Vitest和模拟API响应的综合测试套件。

入门指南

  1. 安装Node.js 20+
    该项目依赖于内置的Fetch API和 node:test 跑步者。

  2. 安装依赖项

    pnpm install
    

    您可以替换 pnpm 随着 npm 或 yarn 如果愿意的话。

  3. 配置环境变量 复制 env.example 到 .env 并填写您的凭据。

    cp env.example .env
    
    • YNAB_ACCESS_TOKEN -您的YNAB个人访问令牌(必填)
    • READ_ONLY -设置为 true 启用只读模式(可选,默认为 false)
  4. 生成TypeScript类型

    pnpm generate:types
    

    这将下载最新的OpenAPI规范,并在以下位置发出强类型模式和端点元数据 src/generated/ynab.types.ts.

  5. 运行MCP服务器(stdio传输)

    pnpm dev
    

    入口点发送至 @modelcontextprotocol/sdk 使用stdio传输,实现与MCP兼容客户端的集成。

  6. 执行测试

    pnpm test
    

连接到LM Studio

LM工作室 版本0.3.17+支持模型上下文协议(MCP)服务器,允许您将此YNAB服务器与本地语言模型一起使用。

先决条件

  • LM Studio 0.3.17或更高版本 安装
  • Node.js 20+ 和 pnpm 安装
  • YNAB个人访问令牌 已配置(请参阅入门中的步骤3)

配置步骤

  1. 构建MCP服务器

    pnpm install
    pnpm build
    

    这将在 dist/ 目录。

  2. 找到您的项目目录 注意到该存储库的绝对路径(例如。, /home/user/ynab-mcp).

  3. 打开LM Studio的MCP配置

    • 启动LM工作室
    • 切换到 程序 右侧边栏中的选项卡
    • 点击 安装 → 编辑mcp.json
    • 应用内编辑器将打开
  4. 添加YNAB服务器配置

    将此配置添加到LM Studio mcp.json:

    {
      "mcpServers": {
        "ynab": {
          "command": "node",
          "args": ["/absolute/path/to/ynab-mcp/dist/index.js"],
          "env": {
            "YNAB_ACCESS_TOKEN": "your-ynab-access-token-here",
            "READ_ONLY": "true"
          }
        }
      }
    }
    

    重要提示:

    • 替换 /absolute/path/to/ynab-mcp 使用您的实际存储库路径
    • 替换 your-ynab-access-token-here 与你的 YNAB个人访问令牌
    • 集 READ_ONLY 到 "false" 启用写入操作(小心使用)
  5. 保存并重新加载

    • 保存 mcp.json 文件(LM Studio自动检测更改)
    • YNAB服务器将出现在您可用的工具中
    • 当模型尝试调用YNAB工具时,LM Studio将显示一个确认对话框

安全说明

  • 永不承诺 你的 mcp.json 使用真实访问令牌
  • LM Studio在执行YNAB API请求之前显示工具调用确认
  • 您可以将常用工具列入白名单或通过以下方式管理权限 工具和集成 在LM Studio设置中
  • 仅安装来自可信来源的MCP服务器

故障排除

  • 服务器未出现: 验证到的绝对路径 dist/index.js 是正确的
  • 身份验证错误: 仔细检查你的 YNAB_ACCESS_TOKEN 有效且未过期
  • 模块错误: 确保你跑了 pnpm build 和那个 dist/ 目录存在
  • 令牌限制: 一些工具可能会产生大量响应;考虑使用更有能力的本地模型

关键脚本

命令 描述
pnpm dev 使用实时TypeScript执行启动MCP服务器(tsx).
pnpm build 将TypeScript编译为 dist/.
pnpm start 运行编译后的JavaScript构建。
pnpm generate:types 使用提供的Python脚本重新生成基于OpenAPI的类型。
pnpm test 在下运行节点内置测试 tests/.
pnpm clean 删除 dist/ 构建输出。

项目布局

  • src/config/env.ts –环境加载和验证。
  • src/api/ynabClient.ts –基于生成的HTTP客户端类型 Paths 地图。
  • src/server/server.ts –MCP服务器工厂+stdio引导程序。
  • src/tools/ –工具注册和助手(分类、拆分、列表、通用请求)。
  • src/generated/ –自动生成YNAB模式和端点元数据。
  • tools/generate_types.py –基于Python的生成器,利用供应商提供的PyYAML。
  • tests/ –关键客户端行为的节点测试套件。

备注

  • repo提供了PyYAML的最小副本 tools/vendor/yaml 以避免外部依赖安装。
  • 所有MCP响应都包括人类可读的摘要和结构化的 data 用于下游自动化的有效载荷。
  • 在拆分交易时,助手可以选择强制执行总计以匹配现有交易金额。

快乐预算! 💸