mcpField
R
receipt-scanner

receipt-scanner

远程服务
mcp.zovo.one金融数据21 天前更新

关于 receipt-scanner

receipt-scanner 是用于在本地账本记录企业支出、收据和里程的 MCP 服务。它支持 VAT 拆分、支出汇总与导出,也可为开票准备可计费项目。

主要功能

  1. 01记录支出和商务里程
  2. 02将含税金额拆分为净额与 VAT
  3. 03按规则对商户分类
  4. 04通过 SHA-256 哈希关联收据
  5. 05汇总并导出支出记录
  6. 06准备开票用的可计费项目

适用场景

  1. 01记录并分类商务收据
  2. 02查看每月 VAT 和支出总额
  3. 03按费率表或自定义费率记录里程
  4. 04整理项目支出以生成发票

MCP 相关

向 MCP 客户端提供支出、收据、里程、报表及开票准备工具,以及月度总额资源和 monthly_close 提示词。发票项目可传给 mcp-invoice。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.zovo.one/mcp/receipt-scanner
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://mcp.zovo.one/mcp/receipt-scanner需要授权
安装包
mcpbexpense-tracker.mcpb0.22.0

工具

14
参数类型必填说明
vatnumber否vat_rate 的别名
datestring否ISO 日期 YYYY-MM-DD,默认为今天
notestring否
amountnumber是收据上的含税总额,以主要货币单位表示,例如 12.34。金额会以该费用自身币种的整数最小货币单位存储,因此不会产生浮点精度损失。
projectstring否所属的项目或客户
billableboolean否可向客户转嫁费用。默认值:提供 project 时为 true(记入客户项目的收据通常会转嫁给客户),否则为 false。传入此参数可覆盖默认值。
categorystring否类别,例如软件、差旅、办公用品。省略时,会将已存储的类别规则与商户匹配并自动填入类别
currencystring否ISO 代码。默认使用 expense_settings 中的 default_currency;否则使用共享业务资料中的 default_currency;再否则使用 EUR
merchantstring否收款方,例如 Adobe
tax_ratenumber否vat_rate 的别名
vat_ratenumber否已包含在 amount 中的 VAT 百分比;用于将含税总额拆分为净额和 VAT。省略时使用 expense_settings 默认值;如果未设置默认值,则不进行拆分
receipt_pathstring否收据文件的绝对路径;系统会检查并计算哈希值

详细介绍

在 Claude 中记录费用,使用免费的 MCP 服务

位于官方 MCP Registry(io.github.theluckystrike/expense-tracker-receipts-mileage)。

费用追踪演示

说一句“在 Adobe 花了 12.30 欧元,软件费用,可向 Acme 收费”,费用就会被记录、分类、拆分增值税,并准备好转收费用。这个 MCP 服务会在本地保存你的业务费用账本:每笔金额都以整数形式按其货币的最小单位存储;vat_rate 会将收据总额拆分为净额和增值税(用 expense_settings 设置一次,之后的每笔费用都会自动拆分,无需重复设置);商户规则会自动为新费用分类;收据通过路径和 sha256 附加,以便审计时证明文件未被更改;商务出行则依据内置里程费率表计价。摘要会按类别、项目、月份或商户分组,始终按货币分别统计,绝不混合。它支持导出为 CSV、xlsx 或 JSON;expense_to_invoice 会将项目中可转收的费用按 invoice_create 所需的确切明细项格式交给 mcp-invoice。所有内容都存储在你自己设备上的纯 JSON 文件中,不会上传到任何地方。

在聊天中记录收据和里程、拆分增值税,并将费用转收到发票上,无需使用费用 SaaS。

60 秒安装

在 Claude Desktop 中使用 expense-tracker.mcpb v0.22.9。已发布的校验和和按版本整理的下载目录可用于确认确切的发行版本。npm 包尚未发布。

如需从源代码安装,请使用 Node.js 22 或更高版本,并先构建共享依赖:

git clone https://github.com/theluckystrike/mcp-servers.git
cd mcp-servers
npm ci
node scripts/bootstrap-timezone.mjs
npm run build -w packages/mcp-license -w servers/expense-tracker

将此条目合并到 Claude Desktop 的 mcpServers 中,或合并到 Cursor 的 .cursor/mcp.json 中。将绝对路径替换为你的检出目录:

{
  "mcpServers": {
    "expense-tracker": {
      "command": "node",
      "args": ["/absolute/path/mcp-servers/servers/expense-tracker/dist/index.js"]
    }
  }
}

对于 Claude Code:

claude mcp add expense-tracker -- node /absolute/path/mcp-servers/servers/expense-tracker/dist/index.js

要在 Pro 模式下运行,请在同一配置块中设置 MCP_LICENSE_KEY,或使用你的密钥调用一次 license_activate。

工具

工具功能说明
expense_add记录一笔支出:金额、币种、类别、商家、日期、项目、备注、收据路径、可计费标记和 VAT 税率。如果类别为空,则根据商家规则自动填入。billable 的默认值为:提供了 project 时为 true,否则为 false;响应中始终会说明采用了哪个值
expense_settings读取或设置 expense_add 在调用未指定以下默认值时使用的设置:default_vat_rate、default_currency
expense_list列出指定日期范围内的支出,可按项目、类别或是否可计费筛选,并按币种汇总
expense_update按 ID 更改已存储支出的任意字段。rebilled: false 会清除已重新计费标记和发票编号。如果支出已重新计费,则不允许修改金额、币种和 vat_rate;除非传入 unlink_rebill: true 清除重新计费关联,因为发票收取的金额可能不同
expense_delete按 ID 删除一笔支出。不会删除收据文件本身
receipt_attach将收据文件附加到一笔支出。文件必须存在;其路径和 sha256 会被存储
category_rules设置或列出商家到类别的规则。不含正则表达式元字符的匹配项会按普通子字符串处理;含有这类字符的匹配项仅在不会导致指数级回溯时才会编译,并且会拒绝类似 (a+)+ 的模式
expense_summary按类别、项目、月份或商家分组汇总指定范围内的支出,按币种显示总额、净额和 VAT
mileage_add记录以 km 或英里为单位的行程,并根据费率表(或自定义费率)计算金额
expense_export将指定范围写入 csv、xlsx 或 json 文件,并返回路径。绝不会写入不完整的文件
expense_to_invoice将项目中尚未开票的可计费支出预览为 invoice_create 行项目,按币种分组,并可选择加价和指定 assume_vat_rate。传入 target_currency + fx_rates 可将所有币种合并到一个分组。如果没有匹配项,则返回 count: 0、不包含 fx_note,并给出明确原因。绝不会标记任何项目为已重新计费
expense_mark_rebilled发票创建后,按 ID 或按项目、日期范围和 currency 将支出标记为已重新计费。必须提供 invoice_number
license_status显示免费模式或 Pro 模式
license_activate激活 Pro 密钥(离线验证)

资源:expenses://month 返回当前日历月份按类别分组、按币种统计的总额。

提示词:monthly_close 会逐项检查当月总额、尚未开票的可计费支出,以及尚未附加收据的支出。

里程费率

该表为每个地区列出一个统一费率。每一行都是基于明确假设的近似值,并非税务计算结果:

地区费率单位货币假设条件
PL1.15kmPLN排量超过 900 cm3 的汽车。波兰对排量不超过 900 cm3 的汽车规定上限为 PLN 0.89/km,摩托车和轻便摩托车另有费率
UK0.45mileGBP汽车,且处于该纳税年度前 10,000 个商务里程内。超过此门槛后,HMRC 支付的费率较低;摩托车和自行车也适用不同费率
US0.70mileUSDIRS 某一日历年的商务标准费率。IRS 每年会重新发布该费率,也曾在年中调整
EU0.30kmEUR通用的每公里补贴。欧盟没有统一费率;各成员国自行制定费率

这些数字背后有意不设年份、车辆或门槛表:看起来权威却已过时一年的表格,不如明确说明自身局限的表格。每条 mileage_add 回复都会注明所用费率并重申这一限制,例如 (table rate PL 1.15 PLN/km, an approximation; pass rate_per_km for your exact scheme)。

未提供 region 时,英里使用 US 费率,公里使用 EU 费率。rate_per_km 会针对你传入的单位,用自定义费率覆盖表格费率;这是申报精确方案(发动机排量等级、年中调整的费率、超过 10,000 英里的档位)的受支持方式。currency 只有在同时传入 rate_per_km 时才会被接受:表格费率以其自身货币报价,而将 PLN 1.15/km 重新标为 EUR 1.15/km 并不会进行任何换算,反而会记入约 4 倍于实际成本的金额,因此此类调用会被拒绝。

与集合中其他工具配合使用

expense_to_invoice 会返回 {description, quantity, unit_price, tax_rate} 对象,恰好对应 mcp-invoice 所接受的 items 数组。unit_price 是未税金额,tax_rate 是费用中记录的 VAT 税率,因此发票会重新计算相同的税额,而不是重复收费;行项目总额最终会与收据上的含税金额一致。如果再次舍入税额无法还原该含税金额(EUR 0.03 按 23% 计算会拆分为 0.02 + 0.01,但 0.02 按 23% 计税后舍入为 0.00),那么若将 unit_price 微调 1 分即可使发票金额完全吻合,就会进行这一调整;否则该组会附带一条醒目的 [rounding adjustment ...] 行,且 tax_rate: 0;rounding_adjustment_lines 会统计这类行数。

多币种

一张发票只对应一种币种,因此一周内的 USD 工时、EUR 收据和 GBP 里程费会分成三组。若要生成一张发票,请提供目标币种和你自己的汇率:

expense_to_invoice {project: "Nova", from: "2026-09-01", to: "2026-09-07",
                    target_currency: "USD", fx_rates: {"EUR": 1.08, "GBP": 1.27}}

fx_rates 的含义是“1 单位该币种 = X 单位的 target_currency”。每一行都会转换,并返回一组结果;每条转换后的明细也会注明转换信息:... [converted from EUR 12.40 at 1.08]。此处不会获取或虚构汇率;如果某种币种没有汇率,系统会明确指出该币种并拒绝处理。如果没有提供 fx_rates,对于包含多种币种的范围,系统会返回确切的调用方式,而不是让你自己推算。

存储的 vat_rate 为 0 表示税率为零,而不是缺失:免税收据仍然免税。未记录税率的支出按含税金额保存,并原样重新计费,同时设置 tax_rate: 0,并在说明中注明 tax_rate: 0 (VAT unknown, gross rebilled as-is; pass assume_vat_rate to split),这样发票上的默认税率就不会对收据重复征税。expense_settings 默认值会在支出录入时应用,不会在重新计费时追溯应用:之后更改默认值,不得改变该默认值设立之前录入的收据的税务含义。若仍要拆分这些较早的明细,请在 expense_to_invoice 调用中明确传入 assume_vat_rate,明细会标记为 [vat assumed 23%]。

该调用不会将任何支出标记为已重新计费,也没有选项可以这样做:先创建发票,再调用 expense_mark_rebilled,并且必须提供 invoice_number。由于一张发票只对应一种币种,结果会按币种分组,每组都有自己的 expense_ids,你需要传入其中一组。按 ID 标记是最精确的方式;按项目和日期范围标记时还必须提供 currency,且只会处理其中可计费、尚未重新计费的支出,因此为 EUR 组开票不会标记 PLN 组。mcp-time-tracker 为同一项目的工时开票;此服务为项目产生的费用开票。

Free 与 Pro

FreePro
记录支出、里程和收据不限不限
expense_list 和 expense_summary最近 30 天完整历史记录
项目3 个不限
类别规则5 条不限
CSV 和 JSON 导出最多 200 行不限
xlsx 导出否是
expense_to_invoice每次最多 20 项,包含 markup_percent不限
多币种、增值税拆分、收据哈希是是

达到限制时,系统绝不会写入不完整文件,也不会静默截断:导出会被拒绝,磁盘上不会留下任何文件,并且工具会说明需要缩小哪些范围。

Pro 为一次性付费 $19,或支付 $39 即可用于合集中的所有服务,均为终身授权。

数字与金额

每笔金额都是以支出自身币种计量的最小货币单位整数,所有显示的金额都带有币种代码,例如 EUR 61.50。每个货币单位包含多少最小货币单位,依据 ISO 4217 表,而非猜测:大多数币种为 2 位;JPY、KRW、VND、CLP、ISK 以及其他零位小数币种为 0 位;BHD、IQD、JOD、KWD、LYD、OMR 和 TND 为 3 位;CLF 和 UYW 为 4 位。因此,KWD 1.234 是 1234 个最小货币单位,而不是 123。mcp-invoice 使用同一张表,因为两个服务会交换金额。此处 HUF 使用 2 位小数:ISO 4217 将其规定为两位最小货币位数,尽管通常报价时会省略小数。

记录的金额是收据上的含税总额。vat_rate 会对增值税而非未税金额进行四舍五入拆分:vat = round(gross * rate / (100 + rate)),net = gross - vat,因此未税金额加增值税始终恰好等于总额,半分的增值税会进位,而不会被舍去(23% 税率下,EUR 0.03 拆分为未税金额 0.02 加增值税 0.01)。汇总会在同一币种内累加每笔支出已四舍五入的金额;不同币种不会相加,也不会转换。里程费用按费率所用币种计算,金额为 round(distance * rate)。日期采用 ISO 格式 YYYY-MM-DD。

隐私

如果 data.json 无法读取或不是有效的 JSON 文件,它不会被视为“尚无支出”。该文件会按字节原样移至 data.json.corrupt-<timestamp>,并写入 data.json.corrupt 标记。在你恢复有效副本并删除该标记之前,所有工具都会返回 data file is corrupt; moved to ...; nothing was written,因此截断的文件绝不会被空数据库覆盖。

所有数据都保留在本地,存放于 ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/expense-tracker/。不会发起任何网络调用:收据会在你的机器上进行哈希处理,导出文件会写入你的机器,许可证密钥则使用编译进软件包的公钥离线验证。

由 theluckystrike 构建。

整个套件共用一个企业资料

你的身份信息只存储一次,位于 ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/profile/business.json, 套件中的每个服务都会读取它:发票开具方、docx 信笺抬头、定期付款开具方、expense-tracker 的默认 VAT 税率、time-tracker 和 timezone 的本地区域,以及简历和合同的信笺抬头。只需使用 business_set(invoice 或 docx)设置一次,无需在其他地方重复填写。电子邮件地址只会取自该资料或明确提供的参数;如果没有存储电子邮件地址,文档会显示 [add: email],工具也会明确说明,而不会让任何人自行编造地址。

常见问题

有免费的 MCP 支出追踪器吗?

有。mcp.zovo.one 上的 expense-tracker 服务是一款免费的 MCP 支出追踪器:你可以通过 Claude 或任何 MCP 客户端记录支出,并填写类别、金额和日期,然后列出或导出记录。免费套餐,远程托管端点,无需安装。

如何通过 Claude 记录支出?

连接 https://mcp.zovo.one/mcp/expense-tracker(从 mcp.zovo.one/mcp/connect 获取带令牌的 URL),然后说:“记录一笔 42.50 EUR 的客户午餐费用,类别为餐饮。”该条目会优先存储在你本地的机器上。

将这些文档用作 MCP 服务

任何 MCP 客户端(Claude、Cursor、Windsurf、VS Code)都可以通过 GitMCP 直接读取此仓库的文档,无需安装:

评论

支持 Markdown

第一次接触 MCP?

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

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