关于 invoice-maker
invoice-maker 是面向自由职业者和小型企业的 MCP 服务,可管理客户资料、创建编号发票并生成 A4 PDF。数据保存在本地 JSON 文件中,并计算折扣、增值税和总额。
主要功能
- 01创建带增值税和折扣的编号发票
- 02生成 A4 发票 PDF
- 03管理客户记录和企业资料
- 04记录部分或全额付款
- 05查看未付及逾期发票
适用场景
- 01通过聊天创建增值税发票
- 02按小时向客户计费
- 03记录付款并查看余额
- 04查找已逾期发票
MCP 相关
向 MCP 客户端提供发票工具、`invoices://open` 资源和 `monthly_invoicing` 提示词。发票与客户数据保存在本地。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.zovo.one/mcp/invoice-makerclaude mcp add --transport http theluckystrike-invoice-maker https://mcp.zovo.one/mcp/invoice-maker{"mcpServers":{"theluckystrike-invoice-maker":{"type":"http","url":"https://mcp.zovo.one/mcp/invoice-maker"}}}在 Cursor 中打开{"servers":{"theluckystrike-invoice-maker":{"type":"http","url":"https://mcp.zovo.one/mcp/invoice-maker"}}}在 VS Code 中打开{"mcpServers":{"theluckystrike-invoice-maker":{"type":"http","url":"https://mcp.zovo.one/mcp/invoice-maker"}}}{"mcpServers":{"theluckystrike-invoice-maker":{"serverUrl":"https://mcp.zovo.one/mcp/invoice-maker"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://mcp.zovo.one/mcp/invoice-maker需要授权工具
13| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| vat | number | 否 | default_tax_rate 的别名 |
| bank | string | 否 | 银行名称 / BIC |
| iban | string | 否 | 用于收款的 IBAN 或账号 |
| name | string | 是 | 您的企业或自由职业者名称 |
| string | 否 | 您自己的电子邮件地址。除非用户提供了该地址,否则请勿填写:任何服务都不会从此资料或显式参数以外的来源填入电子邮件地址 | |
| phone | string | 否 | 您自己的电话号码。与电子邮件地址规则相同:仅在用户提供时填写 |
| vat_id | string | 否 | VAT / 税务登记号 |
| address | string | 否 | 邮寄地址,可包含换行符 |
| tax_rate | number | 否 | default_tax_rate 的别名 |
| timezone | string | 否 | 您所在的 IANA 时区,例如 Europe/Warsaw。与 time-tracker(条目会使用该时区标记时间)和 timezone(您的本拠时区)共享 |
| vat_rate | number | 否 | default_tax_rate 的别名 |
| logo_path | string | 否 | PNG 或 JPG 格式徽标的路径(Pro) |
| invoice_prefix | string | 否 | 发票编号前缀,默认为 INV(自定义前缀需 Pro) |
| default_currency | string | 否 | ISO 代码,例如 EUR、USD、JPY。默认为 EUR |
| default_tax_rate | number | 否 | 适用于未单独设置税率项目的默认 VAT 百分比 |
| payment_terms_days | number | 否 | 默认到期天数。默认为 14 |
详细介绍
使用免费 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 | 是,不限 | 是,不限 |
| 带有“由 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 也在你的计算机上生成。
搭配使用
- mcp-time-tracker,其中的
invoice_summary输出可直接映射为此处invoice_create的项目。 - mcp-spreadsheet,开具发票前可从表格中提取项目或客户列表。
- mcp-price-tracker,可就你追踪过价格的商品向客户开具发票。
- office-suite,一次安装、一个配置项即可使用所有同系列服务。
- 指南:使用 MCP 服务根据聊天消息创建发票 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 直接读取此代码库的文档,无需安装:
- 文档 MCP URL:https://gitmcp.io/theluckystrike/mcp-invoice
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。