mcpField
I
invoice

invoice

本地服务
mcp.zovo.one金融数据21 天前更新

关于 invoice

invoice 是面向自由职业者和小型企业的本地发票 MCP 服务,可从聊天创建编号发票并生成 A4 PDF。它以本机 JSON 文件保存业务与客户数据,并支持付款记录和逾期查询。

主要功能

  1. 01保存业务资料与客户信息
  2. 02创建含折扣和税额的编号发票
  3. 03生成 A4 PDF 发票
  4. 04记录全额或部分付款
  5. 05查询未付与逾期发票

适用场景

  1. 01为客户服务工时和项目费用开票
  2. 02生成包含 VAT 和付款信息的 PDF
  3. 03跟踪部分付款及未结余额
  4. 04查看逾期发票和欠款金额

MCP 相关

作为 MCP 服务,它向客户端提供业务、客户、发票和付款管理工具,并提供未付发票资源及月度开票提示词。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbinvoice.mcpb0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

使用免费 MCP 服务从 Claude 生成并发送发票

收录于 AI Product Index——提供可实时使用的远程端点 mcp.zovo.one/s/invoice,免费版,无需注册。

入选 Awesome MCP Servers——目录条目 | 实时托管端点,免费版,无需注册。

说一句“给 Acme 开一张发票,12 小时,每小时 90 EUR,14 天后到期”,就能获得一份可发送的真实 PDF。此 MCP 服务会保存你的业务资料和客户,分配永不重复的连续发票编号,以整数最小货币单位计算小计、折扣(如有)、每个 VAT 税率对应的一行税额及总计,并生成 A4 PDF,其中包含开票方和付款详情、可换行的项目表格及规范的总计区块。它还会跟踪付款,并在 Pro 版中报告逾期情况及逾期天数。所有数据都以纯 JSON 文件的形式保存在你自己的计算机上;不会上传到任何地方。

已收录于官方 MCP Registry(io.github.theluckystrike/invoice-pdf-billing-generator)。

发票演示

在聊天中创建带编号和税额明细的发票,并生成真实 PDF,无需发票 SaaS。

60 秒安装

@theluckystrike/mcp-invoice 的 npm 发布尚未完成。在此之前,可使用 .mcpb 一键安装包,或克隆并构建; 以下两种方式均已验证。

一键安装(.mcpb):从最新版本下载 invoice.mcpb,并在 Claude Desktop 中双击: https://github.com/theluckystrike/mcp-servers/releases/latest

(claude_desktop_config.json):

{
  "mcpServers": {
    "invoice": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-invoice"]
    }
  }
}

Claude Code:

claude mcp add invoice -- npx -y @theluckystrike/mcp-invoice

(.cursor/mcp.json):

{
  "mcpServers": {
    "invoice": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-invoice"]
    }
  }
}

上述 npx 方式将在软件包发布后立即可用。在此之前,请使用上面的 .mcpb 安装包,或使用以下三个命令从源码构建:

git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/invoice

然后将客户端的 command 指向 node,并传入一个参数:servers/invoice/dist/index.js 的绝对路径。

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

工具

工具功能
business_set保存开票方资料:名称、地址、邮箱、VAT id、IBAN、银行、徽标、默认货币、默认税率、付款期限、发票前缀。tax_rate、vat_rate 和 vat 可作为 default_tax_rate 的别名;任何无法识别的字段都会反馈给你,而不会被丢弃
client_add添加或更新客户端(名称、地址、邮箱、VAT id)。如果记录与已有记录完全相同,则会拒绝添加并指出保存该记录的 id,因此同一客户端不会被重复保存
client_delete删除没有任何内容引用的已保存客户端。如果发票、报价单、贷项通知单、采购订单、定金、对账单或定期计划仍引用该客户端,则会拒绝删除并指出相关单据
client_list列出已保存的客户端及其 id
invoice_create根据明细项创建发票;分配下一个编号,并计算折扣、各税率对应的税额和总额。明细项可带有逐项设置的 currency;如果货币混用,则会拒绝将其作为单一货币开票。如果客户端是通过一个单独的名称创建的,响应会说明 BILL TO 区块没有地址,并告知如何添加地址
invoice_from_hours快捷操作:按小时费率向一个客户端收取 N 小时的费用。target_currency + fx_rates 可将发票开为其他货币(汇率由你提供);entry_ids 会随新发票编号一并返回,以便使用时间跟踪器的 entry_mark_billed 将已跟踪工时标记为已开票
invoice_list列出发票,可按状态、客户端和开具日期范围筛选
invoice_get获取一个发票编号对应的完整已保存记录
invoice_mark_paid记录全额或部分付款;反馈应付余额
invoice_pdf生成 A4 PDF 并返回文件路径。只有在文件确实为 PDF 时,响应才会将其称为 PDF
overdue_report列出逾期未付发票、逾期天数,以及按货币统计的未结总额。免费
license_status显示免费模式或 Pro 模式
license_activate激活 Pro 密钥(离线验证)

资源:invoices://open 以 JSON 格格式返回所有未付款或部分付款的发票。

提示词:monthly_invoicing 会检查一个月内未付款和逾期的项目,然后起草下一张发票。

你可以这样说

你说工具
“设置我的企业资料:Acme Consulting,EUR,23% VAT,付款期限 14 天。”business_set
“添加客户端:Beta Corp,其 VAT id 是……,邮箱是 [email protected]。”client_add
“列出我的客户端。”client_list
“删除那个重复的 Beta Corp 客户端。”client_delete
“为 Acme 开具发票:12 小时,每小时 90 EUR,另加 300 EUR 的设置费,23% VAT,生成 PDF。”invoice_create + invoice_pdf
“按每小时 120 EUR 的费率向 Beta Corp 收取 5 小时费用。”invoice_from_hours
“显示 8 月的所有未付款发票。”invoice_list
“调出发票 INV-2026-0007。”invoice_get
“将 INV-2026-0007 标记为已全额付款。”invoice_mark_paid
“哪些发票未付款且已逾期?”overdue_report
“我使用的是免费版还是 Pro?”license_status

示例

摘自 docs/USER_VALUE_R2.md,这是经过端到端测试并独立核对计算结果的确切请求。

You: Invoice Acme for 12 hours of API work at 90 EUR plus a 300 EUR setup fee,
23% VAT, due in 14 days, and give me the PDF.

  invoice_create {
    client: "Acme", currency: "EUR", due_days: 14,
    items: [
      { description: "API work",  quantity: 12, unit_price: 90,  tax_rate: 23 },
      { description: "Setup fee", quantity: 1,  unit_price: 300, tax_rate: 23 }
    ]
  }
  -> INV-2026-0001, client "Acme" created with no address on file

  invoice_pdf { number: "INV-2026-0001" }
  -> /Users/you/.../invoice/pdf/INV-2026-0001.pdf

Assistant: Created INV-2026-0001 for Acme.
  API work    12 h  x  EUR 90.00   =  EUR 1080.00
  Setup fee    1    x  EUR 300.00  =  EUR 300.00
  Subtotal                            EUR 1380.00
  Tax 23% on EUR 1380.00               EUR 317.40
  Total                                EUR 1697.40
Note: Acme was created from a bare name with no address. Add one with
client_add before you send this. PDF: INV-2026-0001.pdf

计算过程:12 x 90 = 1080.00,再加上 300.00,得出小计 1380.00;1380.00 的 23% = 317.40;总计 1697.40 EUR。PDF 上和文本响应中的每个金额都带有货币代码,不会只显示一个没有货币标识的数字。

免费版与 Pro

免费版Pro
发票每个日历月 3 张不限
overdue_report是,不限是,不限
PDF带有“由 mcp-invoice(theluckystrike)生成”一行无品牌标识
PDF 上的徽标否是
自定义发票前缀否,固定为 INV是
客户端、税额明细、折扣、付款、多币种是是

Pro 一次性付费 $19;若要用于集合中的每个服务,则为 $39,均为终身使用。

数字与金额

发票编号格式为 PREFIX-YYYY-NNNN。计数器按前缀和年份持久化,并在保存发票前写入,因此即使发生崩溃,也只会造成一个编号作废,而不会重复使用;系统还会扫描已有编号,因此恢复数据文件时,绝不会再次分配已出现在已发送单据上的编号。

任何位置显示的每笔金额——行项目单价、行金额、小计、折扣、每条税费、总额和应付余额,无论是在文本响应中还是在 PDF 上——都会带有货币代码,例如 EUR 1080.00。金额绝不会以裸数字形式显示。

所有金额都以整数最小货币单位存储。一个主单位对应多少个最小单位,取自 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-expense-tracker 中的表完全一致,因为两个服务会交换金额;如果某种货币在一个服务中按 3 位小数处理,在另一个服务中按 2 位处理,金额就会缩放十倍。HUF 按 2 位小数处理:ISO 4217 规定它有两位最小货币单位数字,尽管通常报价时不带小数。舍入按行进行,然后求和:先舍入每行的含税总额,再应用发票级别的 discount_percent 并按行舍入,再计算税额并按行舍入,随后按税率合并为每个税率一行;总额则直接对这些已舍入的数值求整数和。因此,打印出的总额绝不会与打印出的各行金额不一致。日期采用 ISO YYYY-MM-DD 格式。

数据存储方式

业务资料、客户、发票和编号计数器分别存储在 ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/invoice/ 下的 JSON 文件中,此外还有一个 pdf/ 子文件夹,用于存放已生成的 PDF。每个会修改数据的调用(business_set、client_add、invoice_create、 invoice_from_hours、invoice_mark_paid)都会在 locked() 中运行;该函数会在调用期间对 .../invoice/.lock 加 advisory 锁,这能确保即使两张发票在同一秒内创建,编号分配也安全,因为计数器的读取、递增和发票写入都在同一把锁下完成。数据先保存到临时文件,再重命名到目标位置。要备份开票数据,请复制整个 invoice/ 数据目录;如果也需要已生成的文件,请一并复制 pdf/。随时都可以通过 invoice_pdf 根据已存储的记录重新生成这些文件。

如果某个 JSON 文件无法读取或不是有效 JSON,系统绝不会将其视为“空文件”。文件会逐字节移至 <name>.json.corrupt-<timestamp>,并写入 <name>.json.corrupt 标记;在恢复有效副本并删除该标记之前,每个工具都会返回 data file is corrupt; moved to ...; nothing was written。截断的 clients.json 不会再被悄悄替换成空客户列表。

限制与如实说明

  • 免费套餐每个自然月最多可开具 3 张发票;计数器会在每月 1 日重置。overdue_report 以及其他所有功能(客户、税项、折扣、付款、多币种)在免费套餐中均不受限制。
  • 客户数量永不设限:免费套餐和 Pro 套餐中的客户列表均不设上限。client_add 仍会拒绝与已有记录完全相同的记录,client_delete 则会删除未被使用的客户,因此即使没有许可证密钥,输入错误或重复的记录也始终可以撤销。任何文档引用的客户都无法删除。
  • 免费版 PDF 会带有一行小字页脚“Generated with mcp-invoice”;Pro 版会移除这行文字并添加徽标。
  • 为服务器从未见过的客户名称创建发票时,系统会创建一个没有地址的客户;响应会说明这一点,并指出可通过 client_add 修正,但如果你忽略提示,仍可发送 BILL TO 区块只有姓名的 PDF。
  • 此服务不提供邮件发送、付款链接和会计软件同步功能:它只生成 PDF 和记录;如何将其交付给客户由你决定。
  • 系统不会在任何地方进行货币转换;发票的货币在创建时即固定,每一项都必须使用该货币下的金额。

故障排除

  • npx 卡住或无法找到软件包:此软件包的 npm 发布仍在等待中。在发布完成之前,请使用 .mcpb 捆绑包或上述克隆并构建的方式。
  • 使用 .mcpb 捆绑包:它会直接安装到 Claude Desktop 中;无需单独进行配置。
  • 使用克隆方式:运行 npm run build 后,服务器二进制文件位于 servers/invoice/dist/index.js。将客户端的 command 指向 node,并将该绝对路径作为唯一参数。
  • Node 版本:需要 Node >= 18。使用 node -v 检查。
  • 混合货币:项目可以带有自己的 currency。同一张发票上的每一项都必须与发票货币一致;如果混用货币,系统会拒绝并提示需要调用的转换工具(expense_to_invoice,并指定 target_currency 和 fx_rates),而不会在 USD 标题下悄悄开具 EUR 项目。如果发票没有设置 currency,则所有项目一致的单一货币会成为发票货币。
  • 尚未设置企业资料:这不会阻止开具发票。invoice_create 和 invoice_from_hours 会使用占位发行方“Your business”签发文档,并用一行文字说明;运行 business_set {name, address, vat_id, iban} 并重新生成 PDF,即可替换占位信息。
  • PDF 渲染失败或显示异常:invoice_pdf 使用 pdfkit,这是一个纯 JS 渲染器,没有原生依赖,因此故障几乎总是由 business_set 字段缺失或格式错误导致(请先检查 invoice_get),而非环境问题。
  • 意外触发“本月 3 张发票”的限制:免费版上限按自然月计算,适用于所有客户,而非单个客户。invoice_list 可显示已计入上限的发票。
  • 没有内容显示 / 静默失败:日志只会写入 stderr,绝不会写入 stdout。在 Claude Desktop 中,检查 Settings -> Developer -> 服务器的日志文件;在 Claude Code 中,检查终端或 --mcp-debug。

隐私

所有数据都保存在本地,路径为 ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/invoice/。系统不会进行网络调用:许可证密钥由编译进软件包的公钥离线验证,PDF 也在你的计算机上生成。

搭配使用

FAQ

可以。税率按行项目计算。总计部分会为每个不同的税率打印一行税费,因此,23% 的行项目 和 0% 的反向征税行项目会分别显示,最终总额也会正确相加。

这是单页 A4 发票,包含开具方和客户信息区块、日期、含逐行税费的明细表、小计、 税费明细、总计,以及含 IBAN 和付款参考号的付款详情。请先用 client_add 添加客户地址,否则「账单接收方」只会显示姓名。

INV-YYYY-NNNN,按顺序分配且绝不重复使用。前缀可通过 business_set 配置;使用 INV 以外的前缀需要 Pro 功能。

不需要。PDF 在本地使用 pdfkit 生成,发票记录保存在 ~/.local/share/mcp-servers/invoice/。该服务完全不会发起网络请求。

金额以整数最小货币单位存储。每行只舍入一次,然后再将各行相加,因此,12 小时 × 90 EUR 加上 300 EUR,按 23% VAT 计算,结果为 1380.00 + 317.40 = 1697.40,不会出现浮点数误差。

由 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 上的发票服务是免费的发票 MCP 服务:您可以通过 Claude 或任何 MCP 客户端创建含税费和 VAT 明细的行项目发票、生成专业 PDF 并跟踪付款状态。每个日历月可免费创建 3 张发票,无需安装——只需将托管 URL 粘贴到您的客户端中。

如何通过 Claude 生成发票?

连接托管端点 https://mcp.zovo.one/mcp/invoice(从 mcp.zovo.one/mcp/connect 复制带令牌的 URL),然后输入:「为 Acme 开具发票,12 小时,每小时 90 EUR,VAT 税率为 23%,14 天后到期。」Claude 会创建带编号的发票并返回 PDF。

将这些文档用作 MCP 服务

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

评论

支持 Markdown

第一次接触 MCP?

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

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