mcpField
T
tiedout

tiedout

本地服务
github.com/GillMacedo金融数据02 周前更新

关于 tiedout

tiedout 是面向小企业、自由职业者和簿记人员的 MCP 服务与命令行工具,用于核对银行和发票 CSV。它通过精确计算按可信程度和原因分类结果;命令行处理在本机完成。

主要功能

  1. 01匹配银行 CSV 与发票或账单
  2. 02按确定程度分类并说明原因
  3. 03识别可能的重复付款
  4. 04读取多种 CSV 格式和列名
  5. 05在本机运行且无需联网

适用场景

  1. 01核对客户付款与发票
  2. 02将对外付款与供应商账单匹配
  3. 03查找未匹配交易和可能的重复付款

MCP 相关

提供核对两个 CSV 文件以及查看检测到的列和行数的工具。通过 MCP 发送的核对结果包含文件中的名称和金额,并会返回给 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"gillmacedo-tiedout": {
"command": "npx",
"args": [
"-y",
"tiedout"
]
}
}
}
启动命令npx -y tiedout

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmtiedout0.1.1

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
modeenum否receivable 表示将收款与客户发票匹配;payable 表示将付款与账单匹配receivable | payable
limitinteger否每组的最大项目数。0 表示仅返回摘要
bank_pathstring是银行对账单 CSV 的路径
date_formatenum否仅当工具报告日期存在歧义时才需要dmy | mdy
window_daysinteger否对于没有发票编号的匹配,付款在发票日期之后多少天内仍可计为匹配
bank_columnsobject否检测失败时的列名,例如 {"date":"Posted","amount":"Value"}
invoices_pathstring是发票或账单 CSV 的路径
invoice_columnsobject否列名;检测失败时使用,例如 {"number":"Doc","amount":"Gross"}

详细介绍

tiedout:CSV 文件的银行对账

npm CI MIT license MCP Registry

将银行对账单与发票或账单进行匹配,计算精准,不必将账目上传到任何地方。适用于小型企业、自由职业者和簿记员。

手动核对付款很慢,让 AI 模型比较较长的 CSV 文件又容易出现计算错误。tiedout 通过代码进行匹配,并将每一行归类为已匹配、可能匹配、待审核或未匹配,同时说明原因。人或 Agent 只需检查例外情况即可。它既是 MCP 服务,也是一个 CLI,无需账户、API 密钥,也不会访问网络。

它适用于任何能导出 CSV 的银行或开票工具。它可以读取标题行、页脚、分开的贷方和借方列、分号、小数逗号、日优先日期,以及多种语言的列名。

可以向你的 Agent 提出什么要求

  • “这是我的银行导出文件和发票。谁已经付款了?”
  • “哪些客户还欠我钱?”
  • “将这些供应商账单与我的银行对账单进行匹配。”
  • “有没有重复付款,或没有对应发票的付款?”

安装

作为 Claude Code 插件安装,它会添加 MCP 服务和一项技能,告知 Claude 何时使用该服务:

claude plugin marketplace add GillMacedo/tiedout
claude plugin install tiedout@tiedout-marketplace

对于其他 MCP 客户端,可通过 npm 运行。需要 Node 22.19 或更高版本:

{
  "mcpServers": {
    "tiedout": {
      "command": "npx",
      "args": ["-y", "tiedout", "serve"]
    }
  }
}

用法

使用 examples/ 中的示例文件试用。文件中的名称都是虚构的。

$ node plugin/dist/tiedout.js match examples/bank.csv examples/invoices.csv
MATCHED (2)
  2026-03-02  1200.00  TRANSFER FROM EXAMPLE SUPPLIES REF INV-1001  -> INV-1001  [invoice number and amount]
  2026-03-04  450.50  PAYMENT FICTIONAL CAFE INV 1002 INV1003  -> INV-1002, INV-1003  [invoice numbers and total]
LIKELY: check these (2)
  2026-03-09  975.00  SAMPLE WIDGETS ONLINE TRANSFER  -> INV-1004  [amount and party name]
  2026-03-16  700.00  PLACEHOLDER GARDENS  -> INV-1007, INV-1008  [party name, and the amounts add up]
REVIEW: a person should decide (3)
  2026-03-11  590.00  ACME TEST CO INV-1005  -> INV-1005  [names INV-1005, but short by 10.00]
  2026-03-18  1200.00  TRANSFER FROM EXAMPLE SUPPLIES REF INV-1001  [names INV-1001, which is already settled: possible duplicate payment]
  2026-03-12  310.00  DEPOSIT 3301  -> INV-1006  [amount only]
UNMATCHED BANK LINES (1)
  2026-03-20  42.00  UNKNOWN SENDER
OPEN INVOICES (1)
  INV-1009  125.00  Mock Logistics  due 2026-03-28
SKIPPED bank row 12: no valid date
2 matched, 2 likely, 3 to review, 1 unmatched, 1 open invoices

使用 --payable 可将支出与账单进行匹配。不带参数运行 tiedout 可查看所有选项,包括 --json 和手动指定列名。

判定方式

分组规则
已匹配银行记录中提到了发票,且金额完全一致
可能匹配出现了交易方名称,且金额只符合一个选项;或者该交易方的一组发票金额只有一种组合方式能凑出该金额
待审核提到了发票但金额不符、可能重复、存在多种匹配结果,或只有金额而没有其他佐证

它绝不会在多种结果中擅自选择,也绝不会在不说明原因的情况下将某行标记为缺失。

MCP 工具

工具功能
reconcile_match匹配两个 CSV 文件并返回分组,大量结果会受到数量限制
reconcile_inspect_csv显示检测到的列和行数,不包含行内容

这两个工具都是只读的。reconcile_match 会将文件中的名称和金额返回给 MCP 客户端,因此这些信息会传送到你使用的 AI 模型。tiedout CLI 会将所有内容保留在你的设备上。

限制

  • 这有助于记账,但不构成会计建议。请先检查结果,再决定是否依赖这些结果。
  • 它只读取 CSV,因此需要先转换 PDF 对账单。
  • 它假设金额有两位小数,且不会转换货币。不同币种的条目永远不会匹配。
  • 它会将每个文件视为未结项目的完整列表,不会在多次运行之间跟踪部分付款。
  • 目前,它只在常见导出格式的模拟数据上测试过,尚未测试所有银行的实际导出文件。如果你的文件无法正常使用,请提交 issue 并附上列标题,不要附上你的数据。

常见问题

如何自动对账银行对账单和发票? 将两者导出为 CSV,然后运行 npx tiedout match bank.csv invoices.csv。匹配结果会附带原因,不确定的项目则会交由人工审核。

我的财务数据会上传吗? 该工具不含网络代码。CLI 会将所有内容保留在你的设备上。通过 MCP 使用时,结果会发送给你的客户端所使用的 AI 模型。

它支持 QuickBooks、Xero 或我的银行吗? 它读取 CSV 导出文件,而不会连接这些服务。大多数会计工具和银行都可以导出 CSV。目前尚未测试每种服务的实际导出文件。

它能匹配应付账款吗? 可以。使用 --payable 可匹配支出和账单。

参与贡献

欢迎个人以及使用 AI Agent 的贡献者参与。请参阅 CONTRIBUTING.md。适合初次参与的 issue:

  • 为更多语言和会计工具添加列名称
  • 添加 --out,将结果写入 CSV 以便在电子表格中使用
  • 支持 OFX 和 QIF 银行文件
  • 跟踪多条银行流水中的部分付款
  • 添加插件图标
Pull request 的处理流程
  1. 提交 PR。 Fork 仓库,在分支上进行开发,并确保只包含一项更改。标题要说明用户能看到哪些变化,因为它会成为变更日志条目:feat: 会归入 Added,fix: 会归入 Fixed。
  2. 自动检查。 代码更改需要附带测试,并且 make test 必须通过。超过 30 行的更改需要关联一个已提交的 issue(Closes #<number>),PR 的更改行数不得超过 800 行。如果缺少任何内容,系统会发表评论告知需要修复的地方。
  3. 审核。 Claude 会自动审核每个 PR。代码 PR 还会接受安全审核,并在沙盒中进行测试。审核通过后会合并 PR,否则会要求修改。更改 CI、Agent 设置、npm 或 Python 依赖、供应商代码或构建文件的 PR 无法通过此方式合并,系统会发表评论说明原因。安全审核未通过的更改也一样。
  4. 发布。 影响用户安装内容的合并更改会在约两小时内发布为新版本,并附带 GitHub Release,以及项目提供的 npm 包。文档和 CI 更改会等到下一次发布。

AI 使用说明

本项目主要由 Claude Code 生成,并由维护者审核。

关于我

我是 Giulliano Macedo,在 GoTech Solutions 开发开发者工具。欢迎关注我或与我联系:

如果 tiedout 为你节省了半天时间,点个 star 能帮助更多人发现它。


采用 MIT 许可证。

由 Giulliano Macedo、GoTech Solutions 构建 · LinkedIn · X

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。