关于 rate-card
用于管理带生效日期的商品价格和岗位时薪的 MCP 服务。它可将目录条目转换为适用于发票和报价单的明细,并区分两种格式及其价格单位。
主要功能
- 01按日期管理 SKU 价格记录
- 02设置各岗位的时薪
- 03生成发票和报价单明细
- 04以文本或 PDF 列出价格
- 05统计目录价格覆盖情况
适用场景
- 01按目录 SKU 为发票定价
- 02使用岗位费率生成报价明细
- 03查询过去某日生效的价格
- 04检查各币种缺失的价格
MCP 相关
向 MCP 客户端提供目录和费率卡工具,包括生成符合 invoice_create 和 quote_create 参数格式的明细。该服务不会创建发票或报价单。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-catalogue
位于官方 MCP Registry(io.github.theluckystrike/catalogue)。
一份价目表和一份费率表,放在发票和报价单都能读取的地方。
为产品指定代码、名称、单位和以最小货币单位表示的价格,以及价格生效日期。为角色指定小时费率,方式相同。然后将客户购买的项目列表交给目录,它就会返回已定价的明细:数量、描述、单价和 VAT 税率,参数结构与 invoice_create 和 quote_create 接受的完全一致。
不凭空编造,也不重复存储。一个 SKU 保存其价格行,每行都有生效日期;价格会在调用时按日期计算,因此 7 月涨价不会改写 6 月工作的报价。遇到未知代码时,系统会拒绝并指出该代码,绝不会猜测价格。
@theluckystrike/mcp-catalogue 的 npm 发布尚未完成,因此今天运行 npx -y @theluckystrike/mcp-catalogue 会返回 404。在此之前,可使用 .mcpb 一键安装包,或通过克隆并构建来运行。
安装
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或
%APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"catalogue": {
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-catalogue"]
}
}
}
Claude Code
claude mcp add catalogue -- npx -y @theluckystrike/mcp-catalogue
Cursor
~/.cursor/mcp.json(全局)或 .cursor/mcp.json(项目),使用与 Claude Desktop 相同的配置项。
工具
| 工具 | 功能 |
|---|---|
sku_set | 添加目录条目或重新定价:代码、名称、单位、可选的 VAT 税率,以及适用于一种货币、价格层级和生效日期的最小货币单位价格 |
sku_get | 查询某个 SKU 截至指定日期的价格,指出价格来源行及已登记的后续价格 |
sku_list | 列出目录及当前生效价格,可按代码前缀、货币和价格层级筛选 |
sku_delete | 删除误添加且没有任何依赖项的条目。所有价格层级均可免费使用 |
rate_set | 为角色的费率表设置小时费率,并指定生效日期;也可选择关联 SKU |
rate_get | 查询某个角色截至指定日期的小时费率,或查看所有费率表 |
lines_resolve | 为 SKU 和角色明细列表定价,生成可直接用于 invoice_create 和 quote_create 的条目 |
price_list_text | 以纯文本显示价目表:当前生效价格、生效日期,然后是人工费率 |
price_list_pdf | 按货币和价格层级生成 A4 PDF 价目表 |
catalogue_report | 查看 SKU、当前生效的价格行、已被后续行替代的价格行,以及默认货币中没有价格的条目 |
license_status / license_activate | 查看 Free 或 Pro 许可,以及升级方式 |
Free 与 Pro
| Free | Pro | |
|---|---|---|
| 目录中的 SKU 数量 | 25 | 不限 |
| 每个 SKU 的价格行数 | 100 | 100 |
| 费率表 | 不限 | 不限 |
| 设置、定价、列出、解析明细 | 是 | 是 |
| 价目表(文本) | 是 | 是 |
| 删除未使用的 SKU | 是 | 是 |
standard 以外的价格层级 | 否 | 是 |
| 价目表(PDF) | 否 | 是 |
| 目录报告 | 否 | 是 |
获取 Pro:https://mcp.zovo.one/buy/catalogue(此服务一次性支付 $19,全部服务一次性支付 $39,终身使用)。密钥会在本地离线验证;不会向任何地方发送数据。
价格的来源
价格行是 (currency, tier, valid_from, amount)。对于指定货币和价格层级,某个日期的价格是 valid_from 不晚于该日期的最新一行。在已存在的键上设置价格行会替换原有行,因此不会有两行共享同一个键,“当天的价格”也绝非掷硬币决定。若指定日期早于所有价格行,则没有价格并会被拒绝;尚未生效的价格不算价格。
此处不会进行货币换算。若在 PLN 标题下显示 EUR 价格,就等于编造数字。因此,对于所请求货币中没有价格的 SKU,系统会将其列为无价格,并由 catalogue_report 统计。
经过验证的洞察
本目录接入的两个服务使用不同的计价单位表示相同的价格,差距正好是 100 倍。 invoice_create 的项目使用以主要货币单位表示的 unit_price(“每单位的价格,以主要货币单位表示,例如 90 表示 90 EUR”,servers/invoice/src/index.ts);quote_create 的项目使用以次要货币单位表示的 unit_price_minor(“9000 = 90.00 EUR,90 = JPY 90。不能使用小数”,servers/quotes/src/index.ts)。两个字段都叫单位价格,都接受普通数字,而且两个工具都无法判断传入的数字是否按另一个工具的单位换算过:将 45000 作为 unit_price 传入,是一条有效的发票项目,金额为 EUR 45,000.00。
在 test/unit.test.mjs 中的实际案例中,正确的负载合计为 EUR 2,613.63;将相同项目的报价服务字段传入发票服务的引擎,合计为 EUR 261,363.00,测试套件断言这恰好是 100 倍。对于 KWD 这类 3 位小数的货币,差距则是 1000 倍。因此,本目录以次要货币单位存储价格,因为这是唯一无损的形式,并在一次调用中自行构建两个负载,同时标明各自的单位。这就是 lines_resolve 返回两个负载,而不是返回一个由调用方重新调整的“价格”的全部原因。
除此之外,每个存储的价格都是次要货币单位的整数,因此 invoice_create 自己的 computeTotals 会将主要货币单位形式直接舍入回原来的整数。解析结果中的 rounding_drift_minor 按设计始终为零,测试套件也会对此进行断言;这就是“发票显示的金额与价目表一致”的可机器验证形式。
隐私
所有数据都保存在本地:${XDG_DATA_HOME:-~/.local/share}/mcp-servers/catalogue/。任何工具都不会进行网络调用。此服务唯一会访问该目录之外的文件是共享业务资料;它以只读方式读取默认货币、默认 VAT 税率以及价目表顶部的名称。它不会创建发票或报价。
由 theluckystrike 构建。
将这些文档用作 MCP 服务
任何 MCP 客户端(Claude、Cursor、Windsurf、VS Code)都可以通过 GitMCP 直接读取此仓库的文档,无需安装:
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。