SuperAPI AI 工具集

ledgerline

Ledgerline 是一个本地优先的个人财务 MCP 服务器,让 AI 代理以只读方式访问交易和账户数据。数据保存在本机一个 SQLite 文件中,无需云端预算应用。它通过 SimpleFIN Bridge 实现银行只读同步,或导入 CSV/OFX/QFX 银行导出文件。所有计算使用整数分精确运算,AI 代理可通过 MCP 协议查询数据新鲜度、交易搜索、支出汇总、周期对比、账户余额、即将到来的支付,并执行受限 SQL。同时提供少量本地元数据写入工具,支持从聊天中标记订阅、取消、分类等日常维护。该工具确保账户号码在解析时即被丢弃,模型无法看到数据库中没有的信息。

访问官网

工具介绍

用途

Ledgerline 是一个本地优先的个人财务管道,旨在让 AI 代理在无需将数据交给任何第三方的情况下,以只读方式访问个人财务信息。它通过一个 SQLite 文件在本地存储所有数据,不依赖云服务。

主要能力

  • 银行导出导入:支持导入银行网站下载的 CSV、OFX、QFX 格式文件。导入器自动去重,支持重复导入和重叠导出范围而不产生重复记录。
  • 银行同步:通过 SimpleFIN Bridge(付费服务)连接银行账户,获取只读交易流。Ledgerline 从不接触银行凭证,也无法移动资金。首次同步时会提示将每个银行账户映射到本地标签。
  • 定期付款检测:自动识别周期性扣款和订阅。
  • AI 代理访问(MCP):作为本地 stdio MCP 服务器运行,暴露只读工具,包括:数据新鲜度、交易搜索、支出汇总、周期对比、账户余额、即将到来的支付,以及受限 SQL 查询。此外还有少量本地元数据写入工具,支持从聊天中完成日常维护,例如:“我刚报名了一个每月 850 美元的课程,跟踪它”、“我取消了 Netflix”、“这笔消费是商务旅行,不是餐饮”、“将这张卡标记为商务”。
  • 精确计算:所有金额使用整数分,按货币分别汇总,绝不混合。
  • 本地元数据:账户上下文(个人/商务/混合/未知、所属实体、商务用途百分比、自由备注)持久化在 SQLite 中,并随每个 MCP 结果传递。

使用方式

90 秒演示

仅需安装 uv。运行 ledgerline demo 会生成六个月的虚构交易数据,并打印可复制粘贴的一行命令,将 MCP 服务器连接到 Codex 或 Claude Code。然后可以询问:“接下来有哪些定期扣款?”或“为什么上个月这么贵?”演示拒绝写入已有交易的数据库。评估完成后,删除 data/ledgerline.db 即可重新开始。

真实数据快速开始

  1. 银行同步:在 https://bridge.simplefin.org 注册 SimpleFIN Bridge,关联银行,在账户页面创建新应用获取一次性设置令牌。运行 ledgerline connect 存储访问 URL 在 ~/.config/ledgerline/simplefin.env(仅所有者可读)。首次同步会提示映射账户。
  2. 文件导入:从银行网站下载 CSV/OFX/QFX 导出文件,运行 ledgerline ingest <文件>。数据库位于 data/ledgerline.db(已 gitignore),可用 --db 或 LEDGERLINE_DB 覆盖。

无需 API 密钥,两个可选嵌入 LLM 命令(categorize、ask)从环境读取 ANTHROPIC_API_KEY,其他一切无需密钥。

AI 代理访问(推荐)

运行本地 MCP 服务器。重启客户端后,可以询问:“一月份我在餐饮上花了多少?”或“接下来有哪些定期扣款?”从代码检出运行时,将命令指向 /path/to/ledgerline/.venv/bin/ledgerline-mcp 而非 uvx。

通过 AI 代理设置

除人类专属步骤外(SimpleFIN 注册、关联银行、创建设置令牌),其他步骤均可非交互执行。人类只需将一次性设置令牌交给代理。令牌单次使用,connect 后失效。最终访问 URL 仅存于本地磁盘,从不进入模型上下文。

适用场景

  • 希望 AI 代理帮助分析个人财务,但不愿将数据上传到云端的用户。
  • 需要精确、只读的财务查询接口供 AI 代理使用的开发者。
  • 希望本地管理交易记录、检测订阅和定期扣款,并通过自然语言与数据交互的场景。

限制

  • 银行同步依赖 SimpleFIN Bridge(付费服务),且需该服务支持您的银行;不支持的机构可继续使用文件导入,混合模式受支持。
  • MCP 路径无需 Anthropic API 密钥,代理自行完成分类;但内嵌的 categorize 和 ask 命令需要 ANTHROPIC_API_KEY。
  • refresh_data 工具从 SimpleFIN 拉取频率限制为每小时最多一次。
  • 跨来源去重匹配原始描述字符串,仅在两个来源导出相同描述时有效(同一机构的 OFX/SimpleFIN 通常如此)。
  • run_sql 只允许单条 SELECT/WITH 语句,有 200 行上限、5 秒超时等安全限制。
  • 账户号码在解析时丢弃,模型无法看到;数据库文件删除后所有痕迹消失。

安全不变量

  • 数据文件(data/、*.db、*.csv、*.ofx、*.qfx、.env、analysis/、*.ipynb)从首次提交即被 gitignore。
  • OFX 读取器和 SimpleFIN 连接器在解析时丢弃 ACCTID/BANKID 类字段,仅用短标签标识账户。
  • run_sql 使用只读连接(mode=ro URI)、单语句 SELECT/WITH、关键字黑名单、SQLite 授权器拒绝除读取外的一切操作、200 行上限、5 秒时间限制、语句/结果大小限制。字面量和注释在关键字扫描前剥离。
  • SimpleFIN 访问 URL 仅从环境变量或 0600 配置文件读取,要求 HTTPS,拒绝 HTTP 重定向。
  • 新数据库文件以 0600 权限创建。
  • ANTHROPIC_API_KEY 仅从环境变量读取。

贡献银行配置

如果银行 CSV 无法自动检测,可在 ledgerline/ingest/profiles.py 的 PROFILES 中添加一个字典(约 10 行)。OFX/QFX 无需配置。请包含虚构的 CSV 测试夹具和验证符号约定的测试。