mcpField
D
duplicate-invoice-check

duplicate-invoice-check

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

关于 duplicate-invoice-check

duplicate-invoice-check 是本地 MCP 服务,用于按批次记录检查供应商发票的重复候选项,并返回分组证据及匹配原因。它只提供待审核线索,不确认重复或作出付款决定,也不连接 ERP 或读取 PDF。

主要功能

  1. 01按发票编号匹配候选项
  2. 02识别有限格式差异
  3. 03按金额和日期分组
  4. 04保存、分页查看和导出报告
  5. 05数据与报告保存在本地

适用场景

  1. 01审查供应商发票批次中的重复候选项
  2. 02查看每组匹配的具体原因与记录
  3. 03分页查看证据或导出 CSV
  4. 04在本地处理发票记录

MCP 相关

该服务通过本地 stdio 向 MCP 客户端提供 8 个工具,包括检查记录、查看与导出报告及许可证状态操作。没有托管端点。

配置

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

暂未收录安装方式

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

代码仓库
安装包
mcpbduplicate-invoice-check.mcpb0.22.8

工具

还没有获取到工具列表

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

详细介绍

重复供应商发票检查 MCP 服务

检查所提供的一批供应商发票,查找重复的发票编号、保守格式差异,或金额和发票日期完全相同的记录。此本地 MCP 服务会返回完整的分组证据,以及每条记录需要审核的确切原因。不同的合法发票可能金额和日期相同。候选记录并非已确认的重复发票、欺诈评分、可追回资金或付款决策。它不会连接 ERP、读取 PDF、使用 OCR 或检索缺失的历史记录。

由 theluckystrike 构建。MIT。支持邮箱:[email protected]。

安装

Claude Desktop:下载 duplicate-invoice-check.mcpb v0.22.8 并打开。SHA-256:181379eb6dcff3d90b55e080dd9c180f6c96802e991872865a6b0ce422b3aaea。其他客户端可按照下方的源代码说明操作。

需要 Node.js 18 或更高版本,以及一个 MCP 客户端。免费使用无需 API 密钥或账户。此 npm 包未发布:请构建源代码检出版本,然后使用绝对本地路径。

git clone https://github.com/theluckystrike/mcp-servers.git
cd mcp-servers
npm install
node scripts/bootstrap-timezone.mjs
npm run build --workspace @theluckystrike/mcp-license
npm run build --workspace @theluckystrike/mcp-duplicate-invoice-check

Claude Desktop:在 macOS 上,将此条目合并到 ~/Library/Application Support/Claude/claude_desktop_config.json 的 mcpServers 中;在 Windows 上,合并到 %APPDATA%\Claude\claude_desktop_config.json。将 /absolute/path 替换为检出版本所在位置。

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

Claude Code:

claude mcp add duplicate-invoice-check -- node /absolute/path/mcp-servers/servers/duplicate-invoice-check/dist/index.js

Cursor:将此本地条目放入项目中的 .cursor/mcp.json 或 ~/.cursor/mcp.json:

{"mcpServers":{"duplicate-invoice-check":{"type":"stdio","command":"node","args":["/absolute/path/mcp-servers/servers/duplicate-invoice-check/dist/index.js"]}}}

VS Code:使用 .vscode/mcp.json,并将顶层键设为 servers:

{"servers":{"duplicate-invoice-check":{"type":"stdio","command":"node","args":["/absolute/path/mcp-servers/servers/duplicate-invoice-check/dist/index.js"]}}}

Windsurf 的旧版 Cascade Agent:将 Claude Desktop 的 mcpServers JSON 合并到 ~/.codeium/windsurf/mcp_config.json。此文件适用于 Cascade;其较新的 Devin Local Agent 使用不同的配置方式。独立服务提供八个工具。

Cline:打开其 MCP Servers 面板,选择 Configure 标签页,然后选择 Configure MCP Servers。将此条目添加到设置 JSON 中(对于 Cline CLI,文件为 ~/.cline/mcp.json):

{"mcpServers":{"duplicate-invoice-check":{"type":"stdio","command":"node","args":["/absolute/path/mcp-servers/servers/duplicate-invoice-check/dist/index.js"],"disabled":false,"autoApprove":[]}}}

这些是本项目使用的六种本地 stdio 客户端配置。没有托管端点或浏览器聊天连接器。如果客户端找不到 node,请将其替换为 which node 输出的绝对路径。保存后,重新连接服务(完全退出并重启 Claude Desktop),调用 license_status,然后运行下方示例。仅有 tools/list 结果并不能验证候选检查功能。

工具

工具输入和结果
duplicate_invoice_checkrecords,可选的 save(false);完整的候选分组、唯一记录计数、来源证据和免费预览 ID。
report_list可选的 offset(0)、limit(20,最大 100);已保存的 UUID 和计数摘要。
report_get已保存的 id;来源记录、分组和原因。
report_page已保存或预览的 id、section,可选的 offset、limit(最大 100)、group_id;完整的证据分页内容。
report_delete已保存的 id;删除一份报告并重复使用其存储槽位。
report_export_csv已保存或预览的 id,可选的 offset、limit(最大 1000);每条来源记录各占一行,包含候选原因和分组 ID。
license_status无参数;离线层级和结账链接。
license_activatekey;验证并存储离线 Pro 许可证。

重复编号与合法的相同总额

使用合成记录调用 duplicate_invoice_check:

{
  "records": [
    {"record_id":"A","entity_id":"UK-1","supplier_id":"S-9","document_type":"invoice","invoice_number":"INV-001","invoice_date":"2026-10-01","currency":"USD","total_minor":12500},
    {"record_id":"B","entity_id":"UK-1","supplier_id":"S-9","document_type":"invoice","invoice_number":"INV-001","invoice_date":"2026-10-02","currency":"USD","total_minor":13000},
    {"record_id":"C","entity_id":"UK-1","supplier_id":"S-9","document_type":"invoice","invoice_number":"inv /001","invoice_date":"2026-10-03","currency":"USD","total_minor":12500},
    {"record_id":"D","entity_id":"UK-1","supplier_id":"S-9","document_type":"invoice","invoice_number":"SERVICE-02","invoice_date":"2026-10-01","currency":"USD","total_minor":12500}
  ],
  "save": false
}

结果包含四条唯一候选记录和三个分组。exact_reference 包含 A/B,尽管它们的日期和总额不同。normalized_reference 包含 A/B/C,并列出所有冲突字段。same_amount_date 包含 A/D:两项不同的合法服务可能具有相同的日期和总额,因此此分组仅提示进行审核。A 出现在三个分组中,但只计数一次。不会计算可能损失的总额。将 C 改为 INV-1 后,它将不再纳入 INV001 的标准化分组,因为前导零仍有意义。

精确输入约定

提供 1–1000 条记录,每条记录都必须包含唯一的 record_id、精确的 entity_id 和 supplier_id、document_type(invoice 或 credit_note)、invoice_number、真实的 YYYY-MM-DD 格式 invoice_date、大写的三字母 currency,以及正安全整数 total_minor。ID 和发票编号长度为 1–160 个字符,且不得带有首尾空白或控制字符。可选的 entity_label 和 supplier_label 仅用于显示,最多 200 个字符,且不得包含控制字符。未知字段会被拒绝。

金额以整数货币最小单位表示,绝不使用浮点金额:USD 12500 表示 $125.00。货币代码只检查是否符合大写三字母格式,不会与外部货币注册表核对。贷项通知单使用正的绝对金额,且只与其他贷项通知单比较。不会对金额求和、换算或将其解释为财务损失。年份为 0000、日历日期无效、记录 ID 重复、金额为零/负数/小数/超出安全整数范围,以及批次超出上限,均属于输入错误。

每条规则只对 (entity_id, supplier_id, document_type, currency) 完全相同的记录分组。实体和供应商 ID 区分大小写:名称相似、ID 不同或实体不同的记录绝不会合并。一个批次中可以包含多个实体,但每个实体仍是独立范围。显示标签不会影响匹配。

三条相等性规则独立运行:

  1. exact_reference:原始发票编号完全匹配,即使金额/日期不同也是如此。
  2. normalized_reference:ASCII a-z 转为 A-Z;仅移除 ASCII 空格、连字符、斜杠和句点。前导零、重音符号、所有 Unicode 字符、下划线、不换行空格、Unicode 破折号以及形似字母/数字的字符均保持不变。规范化后的空键不会产生冲突。
  3. same_amount_date:正金额和发票日期都完全匹配。这种情况通常有合理的解释。

分组包含完整成员列表、精确范围和匹配键、说明以及存在差异的源字段。这些是彼此独立且可能重叠的匹配理由,并非传递性确认的重复项集群。candidate_record_count 对并集中的记录只计数一次。no_candidates_in_supplied_batch 表示这些有限规则在所提供的记录中未发现候选项;这并不意味着可以放心付款。缺失历史记录,以及编号、日期或金额的变更,都可能绕过这些规则。已保存的报告不会自动成为跨调用历史记录:每次都要包含你希望进行比较的所有记录。

源记录和报告分组均按确定性顺序排序;对相同输入记录重新排序,会得到相同的诊断证据。计算过程按键分组,而不是生成所有记录对:对于 1000 条记录,成员关系最多为 3000 项,包括重叠项。服务不会进行遥测或发起网络请求。

免费证据、分页和 CSV

每次检查都会返回 retrieval.report_id,包括未保存的检查。预览 ID 格式为 preview:<UUID>,仅在当前服务进程中有效。最近两次预览会保留 30 分钟。第三次检查、重启或过期都可能导致预览被清除;请重新提交原始的免费诊断。已保存的 UUID 会持久化到磁盘。

report_page 的分区包括 records、groups、record_summaries 和 group_members。持续读取 next_offset,直到其值为 null;limit 为 1–100。分组页面会返回摘要元数据和 member_count;使用 section: "group_members" 和准确的 group_id 读取所有成员。成员页面包含完整的原始记录。记录在报告中只存储一次;分组通过准确的记录 ID 引用这些记录。所有页面和 CSV 导出均免费,包括达到已保存报告上限后。

编码后的传入 stdio 消息必须符合 SDK 的 10 MiB 接收缓冲区限制。响应使用 8 MiB 的转义文本封套预算;如果报告更大,则会返回明确的分页概览,并提供相同的免费检索说明。目前 1000 行/文本限制在传输测试中符合该预算,包括最坏情况下的引号转义。CSV 每条记录占一行,不会针对每个分组重复记录。CSV 包含原始来源字段、候选标记、原因代码和分组 ID。类似公式的前导文本会进行转义。导出以文本形式返回;绝不会写入调用方提供的文件名。如果引号转义会导致响应超出预算,CSV 页面可能包含少于请求限制的行数。请遵循实际的 next_offset,直到其值为 null;returned 始终统计该页面的行数。每个 CSV 页面都会重复表头;合并页面时请保留一个表头。

免费版和 Pro

功能免费版Pro
所有检查、来源记录、分组原因包含,每次调用最多 1000 条记录相同
预览页面和 CSV包含相同
并发已保存报告数3不限报告数量
已保存内容总量64 MiB64 MiB
输入/输出、文本和预览安全限制与文档所述限制相同相同

免费版达到上限时,save: true 仍会返回完整诊断和免费预览,并附带 saved: false、save_error: "free_saved_report_cap" 和升级链接。删除已保存的报告即可腾出名额。存储失败也会保留诊断结果。Pro 仅移除已保存报告数量上限;不会提高输入、传输、预览或存储总量限制。

获取 Pro:一次性支付 $19。所有服务:$39 套装。设置 MCP_LICENSE_KEY 或调用 license_activate。密钥可离线验证。

所有数据都保留在本地。报告存储在 ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/duplicate-invoice-check/ 下。XDG_DATA_HOME 必须是绝对路径,目录祖先路径中不得包含符号链接。私有 JSON 文件使用原子写入和跨进程修改锁;读取时会重新验证来源记录并重新计算证据,而不会信任被编辑过的派生结果。许可证激活会写入共享的本地许可证配置。请自行管理对本地会计数据的访问和备份。

开发

npm run build --workspace @theluckystrike/mcp-duplicate-invoice-check
npm test --workspace @theluckystrike/mcp-duplicate-invoice-check

从仓库根目录构建 Docker:docker build -f servers/duplicate-invoice-check/Dockerfile .。测试涵盖实际 stdio 调用、架构拒绝、范围/Unicode/零值负例、独立的 2000 批次成对比对基准、分组 1000 条记录的传输、页面和 CSV、跨进程保存数量上限、重新计算、符号链接/路径拒绝以及总存储量限制。一个本地签名密钥 stdio 测试会在操作员已有签名器时使用该签名器;如果不存在该私有签名器,则会跳过测试。

评论

支持 Markdown

第一次接触 MCP?

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

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