mcpField
P
per-diem

per-diem

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

关于 per-diem

per-diem 使用内置的波兰、HMRC 和 GSA CONUS 费率表计算并记录商务差旅津贴,适用于需要明细计算和费率来源信息的差旅与财务流程。行程数据保存在本地。

主要功能

  1. 01波兰、HMRC 和 GSA 费率
  2. 02计算每日及行程总额
  3. 03处理部分日期和餐食扣减
  4. 04保存、列出和汇总行程
  5. 05导出费用参数

适用场景

  1. 01计算商务行程津贴
  2. 02核对费率来源和生效日期
  3. 03按月跟踪已保存行程
  4. 04准备行程数据供费用跟踪器使用

MCP 相关

这是一个 MCP 服务,提供费率查询、津贴计算、行程管理和费用导出参数准备工具。可在本地使用,也可连接托管端点。

配置

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

服务地址https://mcp.zovo.one/mcp/per-diem
一键复制安装命令
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/per-diem需要授权
安装包
mcpbper-diem.mcpb0.22.5

工具

9
参数类型必填说明
citystring否城市或地区名称,适用于公布城市级费率的方案
schemeenum否"pl" 波兰代表团法规,"uk" HMRC 基准定额,"us" GSA CONUS 标准。省略则查询所有方案pl | uk | us
countrystring否国家名称或 ISO 代码,例如 Germany 或 DE。优先进行完全匹配,然后按子字符串匹配

详细介绍

mcp-per-diem

根据税务机关实际发布的费率表,计算商务差旅的每日津贴,并保存已核算的行程。提供目的地、出发和返回时间,以及由他人支付的餐食,就能得到每天的金额和总额,均使用对应方案的货币;部分日期规则和每项餐食扣减都会与计算结果一同显示。该工具包含三种方案:波兰派遣条例(国内及各国费率)、HMRC 英国境内旅行基准费率,以及美国 GSA CONUS 标准 M&IE 和住宿费率。费率表以文件形式打包,不是实时数据,因此同一行程重复核算会得到相同结果;每项费率都附有条例、来源 URL 和生效日期。所有数据都不会离开你的设备。

由 theluckystrike 构建。

已收录于官方 MCP Registry(io.github.theluckystrike/per-diem)。

per-diem 演示

安装

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

托管服务,无需安装:将基于 URL 的客户端指向 https://mcp.zovo.one/mcp/per-diem。GET https://mcp.zovo.one/mcp/connect 会生成令牌并打印可直接使用的 URL。

@theluckystrike/mcp-per-diem 的 npm 发布尚未完成,因此下面的 npx 命令目前会返回 404。

Claude Desktop(~/Library/Application Support/Claude/claude_desktop_config.json):

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

Claude Code:

claude mcp add per-diem -- npx -y @theluckystrike/mcp-per-diem

Cursor(~/.cursor/mcp.json 或 .cursor/mcp.json):使用与 Claude Desktop 相同的配置项。

工具

工具功能
perdiem_rates列出某项方案打包的费率,包含主管机关、法规文件、来源 URL 和生效日期。可按国家或城市筛选。
perdiem_calc核算一趟行程:每日津贴和总额,以及部分日期的比例和该方案规则所规定的餐食扣减。
trip_record核算行程并以指定名称保存,同时使用共享商务资料中的旅行者信息。
trip_list列出已保存的行程,并按币种显示总额。
trip_delete删除尚未导出且未记入任何费用的已保存行程,并释放其占用的免费版名额。
trip_export为已保存的行程生成精确的 expense_add 参数,每种币种对应一个 payload,供费用跟踪服务使用。
perdiem_report按方案和日历月份汇总金额,使用各方案对应的货币。
license_status查看免费版或 Pro 版状态,以及升级方式。
license_activate激活 Pro 密钥。离线验证。

免费版与 Pro 版

免费版Pro 版
perdiem_rates、perdiem_calc是,无限制是
每个日历月保存的行程数5,按开始日期计算无限制
trip_list是,无限制是
trip_delete是,无限制是
trip_export否是
perdiem_report否是

获取 Pro:一次性支付 $19,或支付 $39 购买套装。

表格中有什么,以及刻意没有放入什么

src/tables/ 下的每张表都有一个 header,其中包含主管机构、法规、来源 URL、费率生效日期和读取日期。perdiem_rates 会在返回费率的同时返回该 header,因此费率的来源信息会伴随数值一起提供。

纳入表格的规则是:凡是无法根据公开法规文本有把握地确定的数值,都不会纳入,而不是靠猜测。 每日津贴金额最终会填入纳税申报表。一个看似权威却错误的金额比缺失金额更糟,因为缺失金额会明确告知你该金额不可用,你可以自行查找。

表格已纳入未纳入
波兰,国内45.00 PLN 的每日津贴、150% 的住宿定额补贴,以及部分时段和餐食规则列出了 20% 的本地交通定额补贴,但不会支付:它不属于生活津贴
波兰,国外附录中的 34 个国家,以及每日津贴和对应货币其余约 90 个国家,以及每个国家的住宿限额。缺少某个国家表示“此处未经核实”,而不是“不存在费率”
英国,国内HMRC 的全部四档基准费率(5、10 和 15 小时档,以及深夜补贴)无
英国,海外**无。**该文件附带的费率列表为空,并在 header 中说明了这一点完整的按城市划分的海外标准费率表:约 250 个城市,每个城市有 8 项金额,使用目的地货币。此构建无法有把握地给出这些金额,因此一个也未纳入。perdiem_calc {scheme:"uk"} 会明确拒绝海外目的地,并指向 HMRC 页面
美国,GSAFY2025 和 FY2026 的 CONUS 标准 M&IE 和住宿上限,以及公布的餐食明细约 300 个非标准地区(纽约市、旧金山等)。目的地若不在这些地区之列,仍适用标准费率;这正是此表提供的内容

费率会变化。请先查看任何答案中的 effective_date,再决定是否依赖该答案;如果行程时间较近,请阅读 source_url。

计算器采用的规则

  • **开始和结束时间都是时间点,而不是墙上时钟时间。**请传入带时区偏移的 ISO 8601 格式(2026-03-28T22:00:00+01:00),或本地日期时间加上 IANA timezone。经过的小时数按 Unix 时间戳之差计算,因此跨越夏令时切换的行程可能是 23 或 25 小时,而不是 24 小时。
  • 波兰从出发时间起按每 24 小时为一个时段计算。国内行程不足 24 小时:不足 8 小时不计,8 至 12 小时计半份,每日津贴超过 12 小时计一整份。超过 24 小时:每个时段计一整份,剩余时间不超过 8 小时计半份,超过 8 小时计一整份。国外行程按阶梯计算:不超过 8 小时计三分之一,超过 8 小时且不超过 12 小时计半份,超过 12 小时计一整份。免费餐食会使国内每日津贴扣减 25%/50%/25%,国外每日津贴扣减 15%/30%/30%。
  • 英国按时长档支付:离开 5 小时支付 5.00 GBP,离开 10 小时支付 10.00 GBP,离开 15 小时且行程在晚上 8 点仍未结束时支付 25.00 GBP;不足 5 小时不支付。若提供了餐食,会按比例扣除对应档位的餐食份额。HMRC 说明了这一原则(“已提供的餐食不予支付相应费率”);按比例计算是此服务对此原则的解读,答案中也会说明这一点。
  • 美国按目的地时区的日历日计算,首日和末日按 M&IE 的 75% 计。提供的餐食按其公布金额扣除,而 5.00 USD 的杂费永不扣除。住宿费用是有收据报销的上限,而不是直接支付的津贴;答案每次都会说明这一点。
  • **不同货币绝不相加。**此服务没有汇率,因此 PLN 每日津贴和 EUR 每日津贴会分别保留为两个数值。

导出到费用跟踪器

trip_export 会返回 expense-tracker 服务所需的确切 expense_add 参数,每种货币对应一个负载,并且不会自行写入任何内容。这是有意为之:expense-tracker 没有提供库入口,其 ID 计数器、类别规则、增值税拆分和货币默认值都位于它自己的 expense_add 处理程序中,并受其自身的锁保护。直接向其 data.json 追加一行,会生成一笔未应用上述规则的费用:看起来是原生记录,实际上并非如此。返回这些参数,与 kanban 为 time-tracker 的 timer_start 返回参数遵循同一约定。

负载中不会设置 vat_rate。法定每日津贴是一种补助,而非购买,因此没有可申报抵扣的进项增值税。

一个值得留意的发现

通过子字符串匹配国家名称,会让每日津贴悄无声息地按另一个国家的费率计算。

第一个版本先按完全匹配的名称解析目的地,再匹配 ISO 代码,最后使用 country.includes(destination)。一次前往阿曼的行程返回了以欧元计价的结果,没有任何警告:"romania".includes("oman") 的结果是 true,所以它采用了罗马尼亚的 42.00 EUR 津贴。阿曼不在此版本内置的 34 个国家之列,因此正确做法应该是拒绝计算并指出缺失的国家。结果却是,调用方得到了一个看似可信、但币种错误且来自 3,000 km 外国家的数字。

修复只需一行代码,回退匹配改为至少匹配四个字符的前缀,并在 test/adversarial.test.mjs 中加入了断言。这个一般性原则比修复本身更值得注意:漏配后果轻微时,模糊匹配是安全的;漏配悄无声息时,代价就很高。这里的漏配会产生税务数字,因此回退机制必须在无法确定时拒绝计算。刻意只包含部分国家的费率表,正是子字符串回退如此危险的原因:费率表完整时,错误行只是一个近似匹配;费率表不完整时,它匹配到的行本不该被匹配到。

隐私

所有数据都保留在你的机器上。行程以 JSON 格式存储在 ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/per-diem/ 下。费率表是软件包中的文件。此服务不会进行任何网络调用,无需账户或 API 密钥。许可证密钥会离线验证。

许可证

MIT。支持邮箱:[email protected]

将这些文档用作 MCP 服务

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

评论

支持 Markdown

第一次接触 MCP?

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

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