关于 bizdays
bizdays 是面向需要跨国工作日计算的 Agent 的 TypeScript 库和 MCP 服务。它依据公共假日历及各国周末规则计算,并说明排除了哪些日期。
主要功能
- 01增加或扣减工作日
- 02统计日期区间内的工作日
- 03检查某日是否为工作日
- 04查找下一个或上一个工作日
- 05查询国家的周末规则
适用场景
- 01计算跨越公共假日的截止日期
- 02统计日期范围内的工作日
- 03确认沙特阿拉伯的星期五是否为工作日
MCP 相关
通过 stdio 和托管的 Cloudflare Worker 端点,向 MCP 客户端提供六种工作日及国家规则工具。同一套工具定义也可作为 TypeScript 库使用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
6收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| days | integer | 是 | 要增加的工作日数;负数表示减去。 |
| start | string | 是 | 开始日期,YYYY-MM-DD。 |
| country | string | 是 | ISO 3166-1 alpha-2 国家/地区代码,例如 US、GB、AE、SA、ZA。 |
| extraHolidays | array | 否 | 可选的额外非工作日期(YYYY-MM-DD),例如公司停工日。 |
详细介绍
bizdays
为 AI Agent 提供经过验证的工作日计算——包含节假日和各国周末规则,而非猜测。
为 AI Agent 提供经过验证、值得信赖的数据工具。“Qiniso”在祖鲁语中意为“真相”。
网站 · npm · MCP 端点 · MCP Registry
大模型自信地回答“英国从 12 月 22 日起 5 个工作日后是几号?”“这个月有多少个工作日?”以及“沙特阿拉伯的星期五是工作日吗?”,但往往答错——它们会数错天数、忘记公共节假日,还会假设每个国家的周末都是星期六和星期日。bizdays 根据真实的公共节假日日历和各国周末规则,为 Agent 提供确定的答案,并列出周末规则以及跳过的具体节假日。
有两个问题会导致朴素的工作日计算出错,bizdays 会同时解决这两个问题:并非所有地方的周末都是星期六和星期日(沙特阿拉伯、埃及和以色列是星期五和星期六;伊朗是星期五;印度是星期日;阿联酋自 2022 年起是星期六和星期日),而且**“节假日”必须指真正的休息日**——现成数据会将情人节和圣诞前夜等并非休息日的纪念日也计算在内。
计算一个月中的工作日时,不使用工具的前沿大模型冷启动时有 63% 的概率答错;在所有工作日问题中,答错率为 23%。bizdays:0%。
添加到 Claude
设置 → 连接器 → 添加自定义连接器,然后粘贴以下内容——无需登录,无需密钥:
https://bizdays.qinisolabs.workers.dev/mcp
无状态,不读取用户数据,也不需要任何密钥。想通过 stdio 在本地运行?在客户端配置的 mcpServers 下添加 { "command": "npx", "args": ["-y", "@qinisolabs/bizdays"] }。
将其用作库
每个工具也都是一个带类型的函数——无需 MCP:
npm i @qinisolabs/bizdays
import { addBusinessDays, countBusinessDays, isBusinessDay } from "@qinisolabs/bizdays";
addBusinessDays("2025-12-22", 5, "GB").result; // "2025-12-31" (skips Christmas + Boxing Day)
countBusinessDays("2025-12-01", "2025-12-31", "US"); // { businessDays: 22, ... }
isBusinessDay("2025-06-13", "SA").isBusinessDay; // false — Friday is weekend in Saudi Arabia
isBusinessDay("2025-02-14", "US").isBusinessDay; // true — Valentine's Day is not a public holiday
每个函数都会返回丰富的结果:答案、星期几、具体跳过了哪些周末和命名节假日、周末规则及其来源,以及置信度标记。
功能 — 6 个工具
| 工具 | 可回答的问题 |
|---|---|
| add_business_days | 从起始日期起,N 个工作日后是哪一天?(N 可以为负数) |
| count_business_days | 两个日期之间有多少个工作日?(默认包含起止日期) |
| is_business_day | 该日期是工作日吗?如果不是,原因是什么(周末/公共节假日及其名称)? |
| next_business_day | 某日期之后严格意义上的第一个工作日 |
| previous_business_day | 某日期之前严格意义上的最后一个工作日 |
| country_rule | 周末规则及其来源、是否适用节假日,以及置信度标记 |
206 个国家(及其行政区划)的公共节假日数据来自 date-holidays,并筛选 type: "public"。周末数据来自运行时 Intl API 中的 Unicode CLDR,并通过精心整理的 data/weekend-overrides.json 修正层进行更正(例如孟加拉国为星期五和星期六,尼泊尔仅星期六)——持续维护的数据正是我们的护城河。
它不是什么
- 并非包含所有节假日。 它只计算周末和公共节假日,不包括地区性或可选纪念日。公司停工日或地区性日期可通过
extraHolidays传入。 - 并非所有数据都经过同等验证。 约 65 个 Tier-1 国家已通过验证;其他国家也可用,但会标记为
unverified。如果某个国家没有节假日日历(例如卡塔尔、科威特、阿曼),仍会采用正确的周末规则,并在响应中说明(holidaysApplied: false)。 - 不依赖在线服务。 该库不会发出网络请求;日期均为 UTC 时区下的
YYYY-MM-DD。
架构
一个 TypeScript 包通过两种传输方式提供同一个 MCP 服务——stdio(本地/npx)和 Cloudflare Worker(托管的边缘端点)——二者均由同一组 core.ts 工具定义驱动,这些定义也为可导入的库提供支持。
npm install
npm run build
npm test
隐私
此工具在您的设备上本地运行,设计上不会收集、存储或传输您的数据——没有分析、没有遥测,也无需账户。所有参考数据均已打包——不会发起网络请求,也不会有任何数据离开您的设备。完整政策:https://qinisolabs.github.io/privacy.html。
许可证
Apache-2.0。打包的节假日数据来自 date-holidays(ISC AND CC-BY-3.0);请参阅 NOTICE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。