@notsuhas/moneylover-kit

中文文档
0.5.4发布于 2026/11/02MITTypeScriptES Module构建来源已验证

非官方的钱情人客户端,CLI和MCP服务器。完整事务CRUD。

中文使用文档
文档目录15 节
  1. 为什么存在这个
  2. 安装
  3. 命令行界面
  4. 贷款
  5. MCP服务器
  6. 图书馆
  7. 一次移动会话
  8. 在你开始之前要知道一件事
  9. 环境
  10. 文档
  11. 贡献
  12. 执照
  13. 交易时间
  14. NPM可信发布设置
  15. 持久的MCP读取

moneylover-kit

npm

非官方的 钱的情人 客户端、CLI和MCP服务器。全 交易CRUD,贷款和文档化API -从您的电子邮件和密码, 没有别的东西可以设置。

与Money Lover或Finsify无关。Money Lover没有公共API;这 与自己的应用程序使用的相同端点进行通信。

为什么存在这个

其他Money Lover客户端可以创建和读取交易。他们都不能 更新 或者 删除 一,因为连线格式是一个完全替换- a 天真编辑默默地擦除人物、事件、排除报告标志 并且提醒贴在行上。这将重建实时的每个写入 行,因此编辑只更改您要求它更改的内容。

它还记录了花费实时时间来解决的部分:为什么是错误的 类别id挂起两分钟而不是错误,为什么空结果没有 一个空的账户,以及为什么登录两次会让你退出自己的手机。 看到 文档/ traps.md.

安装

npm install -g @notsuhas/moneylover-kit    # or npx @notsuhas/moneylover-kit

要从源代码运行它,请克隆并构建 npm install -g github:notsuhas/moneylover-kit 做 不 工作,因为NPM 在准备git依赖时跳过devDependencies,并且没有编译器 构建:

git clone https://github.com/notsuhas/moneylover-kit && cd moneylover-kit
npm ci && npm run build && npm install -g .

然后设置你的证书:

export MONEYLOVER_EMAIL="[email protected]"
export MONEYLOVER_PASSWORD="…"

命令行界面

moneylover login                 # once — mints and caches a token
moneylover wallets               # names and balances
moneylover categories            # what you can write to
moneylover list --note coffee --from 2026-01-01 --limit 10

moneylover add  --wallet Cash --category Groceries --amount -480 --note "DMart"
moneylover edit <id> --note "DMart, cleaning supplies"
moneylover rm   <id>

钱包和类别:

moneylover add-wallet   --name Travel --currency 11
moneylover add-category --name Supplements --all-wallets --parent "Health"
moneylover edit-category --category Supplements --name Vitamins
moneylover rm-category  --category Vitamins

--all-wallets 和 --parent 需要 --backend mobile:一个跨越的类别 每个钱包,或者在另一个钱包下面,都生活在一个web API没有的层中 模型。

数量是 签署: -480 是花, 4500 是获得。金钱爱好者商店 类别的方向而不是数量,所以这是一个不一致的标志 这一分类被拒绝,而不是悄然纠正。

--json 在任何命令上给出机器可读的输出。

贷款

Money Lover用自己的四种系统分类来追踪人们之间的金钱往来。 这样一来,应用程序的债务视图就能看到你记录的内容:

moneylover lend    --person Sam --amount 5000 --wallet Savings
moneylover collect --person Sam --amount 3000 --wallet Current --parent-id ORIGINAL_LOAN_ID
moneylover lending
person                          lent   collected   outstanding     you owe
Sam                          5000.00     3000.00       2000.00        0.00
Jordan                        800.00      800.00          0.00      450.00

钱包是一条腿,所以从一个账户贷款,然后还到另一个账户 不同的一个是正常的-余额被跟踪到 人,而不是。 帐户。 borrow 和 repay 是你所欠钱的镜子。集合和 需要还款 --parent-id 指向最初的贷款或债务。分裂一个 必要时跨原件付款;独立偏移量被拒绝,因为 他们打开应用程序的原始记录。

MCP服务器

两个传输。两者都暴露了相同的工具: list_wallets, list_categories, list_events, search_transactions, add_transaction, edit_transaction, delete_transaction, record_lending, lending_summary.

管理钱包、分类和活动是可选的,在两个标志后面: MONEYLOVER_MCP_ALLOW_STRUCTURE=1 用于创建和编辑它们,以及 MONEYLOVER_MCP_ALLOW_DELETE=1 用于 delete_wallet 和 delete_category. 一个 Rename可以输入;删除钱包会获取其中的每笔交易 这两个API都没有撤消,这就是为什么它是自己的开关。

本地,用于克劳德桌面/光标 -添加到您的MCP配置:

{
  "mcpServers": {
    "moneylover": {
      "command": "npx",
      "args": ["-y", "-p", "@notsuhas/moneylover-kit", "moneylover-mcp"],
      "env": {
        "MONEYLOVER_EMAIL": "[email protected]",
        "MONEYLOVER_PASSWORD": "…"
      }
    }
  }
}

远程,通过HTTP -在某个地方运行它并指向一个客户端

MCP_TOKEN=$(openssl rand -hex 32) moneylover-mcp-http   # POST /mcp, GET /health

它拒绝在没有的情况下启动 MCP_TOKEN. 这个端点可以创建和删除 真实账户的交易;未经身份验证的端口永远不是正确的 违约。

在码头工人 ——一个 Dockerfile 和 compose.yaml 都在回购中:

cp .env.example .env      # email, password, and an MCP_TOKEN
docker compose up -d      # POST localhost:8790/mcp

在…上装某事 /config,与撰写文件一样。这就是 令牌缓存存在,如果没有它,每次重新启动都会花费一个帐户的时间 设备槽。

完整的设置说明,包括如何阻止代理执行某些操作 不可逆转的: 文档/ mcp.md.

图书馆

import { createClient } from "@notsuhas/moneylover-kit";

const ml = createClient();

await ml.wallets();
await ml.transactions({ note: "coffee", from: "2026-01-01" });
await ml.addTransaction({
  wallet: "Cash",
  category: "Groceries",
  amount: -480,
});
await ml.lending("Sam");

CLI和MCP服务器都是薄薄的一层,所以它们不能这样做 图书馆做不到的任何事。

一次移动会话

当配置Android OAuth客户端时,每个正常的读取和事务 或类别编写使用移动API。钱包余额的推导完全为 应用程序派生它们:将同步的行以整数小单位求和并排除 future-dated事务。结果匹配了每个钱包的web API Live 11,239行帐户。

钱包过滤新鲜搜索和普通收据重复检查/读回 获取受影响钱包的最新完整快照,使用Android 应用程序的 account_id 请求过滤器。收据余额重复使用经过验证的钱包 快照。此快速路径不使用交叉调用TTL或增量游标,因此 外部编辑和删除在下一次操作中仍然可见。

全账户审计和关联贷款/债务验证保留完整的 和解。中断拉重新开始;部分页面 永远不要成为一个完整的快照。钱包范围内的读取不能取代其他读取 钱包。

启用移动:

export MONEYLOVER_MOBILE_CLIENT="…"
export MONEYLOVER_MOBILE_SECRET="…"

这些是Android应用程序自己的凭证,硬编码在它的每个副本中。他们 不是你的秘密,但它们不在这里公布——一个可搜索的公众 复制是让他们轮换的原因,这会破坏每个非官方客户 一次。 文档/ api.md 解释如何获得它们。

没有这两个价值,客户端显然是失败的;它永远不会落在网上 登录。 --backend web 仍然是一个明确的诊断逃生舱口。钱包 创建、重命名和删除也使用移动同步协议。

使用 MONEYLOVER_MOBILE_TOKEN 如果您直接提供令牌。通常情况下, 缓存的旋转刷新令牌更安全,因为它可以自我更新。

在你开始之前要知道一件事

Money Lover账户只允许少量设备同时持有代币 目前是五个,而且每次登录都会注册另一个。 没有东西被踢 当你达到极限时关闭;相反, 下一个 登录被拒绝,提示“Maximum。 已达到设备限制。请退出以继续。”所以你不会丢失数据 完全失去登录的能力,包括在更换的手机上,直到你 从您仍然拥有的设备注销。

这就缓存了你的令牌 ~/.config/moneylover-kit/ 并更新它 不需要注册另一个设备,所以服务维护自己没有 进一步的登录。移动路由是非标准的:Android应用程序发送一个空路由 身体 oauth.moneylover.me/refresh-token 使用刷新令牌为Bearer 身份验证。

集 MONEYLOVER_ACCESS_TOKEN 直接提供令牌而不登录。

环境

MONEYLOVER_EMAIL · MONEYLOVER_PASSWORD凭证
MONEYLOVER_ACCESS_TOKEN使用此令牌,永远不要登录
MONEYLOVER_BACKEND力 web 或者 mobile
MONEYLOVER_MOBILE_CLIENT · MONEYLOVER_MOBILE_SECRET移动后端需要
MONEYLOVER_CONFIG_DIR令牌缓存在哪里
MCP_TOKEN · MCP_PORT · MCP_HOSTHTTP MCP传输
MONEYLOVER_MCP_ALLOW_STRUCTUREMCP:钱包/类别/事件写入
MONEYLOVER_MCP_ALLOW_DELETEMCP:删除钱包/类别

文档

贡献

看到 CONTRIBUTING.md. npm run verify 运行类型检查,lint, 格式化和代码库健康门。

执照

麻省理工学院。用在你自己的账户上。

交易时间

编写工具接受可选 dateTime 而不是 date例如: "2026-10-19T11:10:00+09:00" 日本时间11:10打印的收据使用一个 完整的ISO时间戳,带秒和任选其一 Z 或显式的UTC偏移量。不 发送两个字段。只有日期的调用保持它们现有的行为;省略字段 在编辑保存节省的时间。对应的CLI是 --date-time '2026-10-19T11:10:00+09:00'. MCP事务结果包括 dateTime 当时间戳可用时。

NPM可信发布设置

发布工作流使用GitHub OIDC而不是 NPM_TOKEN. 配置一个 在这个GitHub库的npm包上安装可信的发布者 release.yml,允许直接发布,不受环境限制。 保持 repository.url 与存储库保持一致。新配置的发布者 必须在两天内完成成功发布,否则NPM将过期。

如果在包读取工作时发布返回E404,请检查包是否受信任 替换令牌之前的发布服务器配置和存储库元数据。通过 CI没有验证npm发布授权;验证发布作业本身。

持久的MCP读取

MCP读取工具现在返回本地SQLite快照与显式 sync 元数据。 通过 fresh: true 查看审计或最新的上游状态。一个陈旧的阅读开始了。 背景和解;收据写入和验证总是使用新的API 读取。这减少了提供者的重复调用,而不会带来网络延迟。 要求节点为22.13+。看到 MCP缓存 对于迁移,响应 形状变化、恢复和私有体积要求。

版本与发布记录

@notsuhas/moneylover-kit 共发布 22 个版本,首次发布于 2026/09/11;过去 12 个月发布了 22 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.5.4latest2026/11/021 天前
0.5.32026/11/021 天前
0.5.22026/11/021 天前
0.5.12026/10/295 天前
0.5.02026/10/295 天前
0.4.22026/10/295 天前

关于 @notsuhas/moneylover-kit 的常见问题

@notsuhas/moneylover-kit 是什么?

非官方的钱情人客户端,CLI和MCP服务器。完整事务CRUD。

如何安装 @notsuhas/moneylover-kit?

在项目目录运行 npm install @notsuhas/moneylover-kit,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 moneylover、moneylover-mcp、moneylover-mcp-http,可以用 npx moneylover 直接运行。

@notsuhas/moneylover-kit 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@notsuhas/moneylover-kit 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@notsuhas/moneylover-kit 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.13。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@notsuhas/moneylover-kit 可以商用吗?

@notsuhas/moneylover-kit 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@notsuhas/moneylover-kit 还在维护吗?

最新版本 0.5.4 发布于 2026/11/02(1 天前);至今共发布 22 个版本,其中过去 12 个月发布了 22 个;首次发布于 2026/09/11。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。