Back to MCP directory
publicPublicdnsLocal runtime

mcp-ynab-server

一个基于MCP协议的YNAB服务实现,提供预算管理功能

article

README

🚀 MCP YNAB 服务器

MCP YNAB 服务器借助模型上下文协议(Model Context Protocol),实现对 YNAB(You Need A Budget)功能的便捷访问,为用户提供了标准化的资源访问途径,轻松管理账户与交易。

🚀 快速开始

MCP YNAB 服务器可通过模型上下文协议(MCP)访问 YNAB 功能。在使用前,你需要获取 YNAB API 密钥,该密钥可从YNAB 开发者设置获取。获取后,可通过环境变量、MCP 秘密管理系统或项目根目录中的 .env 文件提供该密钥。

以下是启动服务器的命令:

# 开发模式,带热重载和浏览器启动
task dev

# 生产安装,适用于Claude Desktop、Goose或其他支持MCP的环境
task install

✨ 主要特性

  • 账户与交易管理:支持查看账户余额和交易信息,还能创建新交易。
  • 标准化访问:通过标准化的 MCP 资源访问 YNAB 数据。

📦 安装指南

在项目根目录下,使用以下命令进行安装:

uv pip install -e .

💻 使用示例

基础用法

# 创建一个新交易
result = await create_transaction(
    account_id="your_account_id",
    amount=42.50,  # 美元金额
    payee_name="Coffee Shop",
    category_name="Dining Out",
    memo="Morning coffee"
)

# 获取账户余额
balance = await get_account_balance("your_account_id")

# 列出账户
accounts = await ctx.read_resource("ynab://accounts")

# 获取近期交易
transactions = await ctx.read_resource(f"ynab://transactions/{account_id}")

高级用法

# 运行所有测试,包括集成测试(需要YNAB API密钥)
task test:all

# 生成覆盖报告
task coverage

# 格式化和检查代码
task fmt  # 应将此添加到Taskfile中

📚 详细文档

可用资源

  • ynab://accounts - 列出所有 YNAB 账户。
  • ynab://transactions/{account_id} - 获取特定账户的近期交易。

可用工具

  • create_transaction - 创建新交易。
  • get_account_balance - 获取账户当前余额。

项目任务

该项目使用 Taskfile 来管理常见操作,关键命令如下:

task dev       # 运行开发服务器,带自动重新加载
task test      # 运行单元测试
task coverage  # 生成测试覆盖报告
task install   # 安装生产版本
task deps      # 同步依赖项

查看Taskfile.yml以获取所有可用任务。

开发流程

# 安装依赖(使用uv)
task deps
help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client