{"_id":"mcp-time-workdays-node","name":"mcp-time-workdays-node","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"mcp-time-workdays-node","version":"1.0.0","type":"module","description":"MCP server (Node) providing current time and workdays with Timor API integration","main":"mcp_time_workdays_node.mjs","scripts":{"start":"node mcp_time_workdays_node.mjs"},"bin":{"mcp-time-workdays-node":"mcp_time_workdays_node.mjs"},"dependencies":{"@modelcontextprotocol/sdk":"^1.17.5"},"engines":{"node":">=18.17"},"keywords":["mcp","time","workdays","model-context-protocol"],"author":{"name":"tanran"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/tanranv5/mcp_time_workdays_node.git"},"_id":"mcp-time-workdays-node@1.0.0","bugs":{"url":"https://github.com/tanranv5/mcp_time_workdays_node/issues"},"homepage":"https://github.com/tanranv5/mcp_time_workdays_node#readme","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-XaVc0c48DcUf0768s/M5Nx/SvpqrU0RpRA0rEtSo7maNSzPKjgfxk4zKVd7R0xASbV3F7LjsaFYHHAOszOyY5w==","shasum":"be6151b1116147a0a3326338d035972180b8c667","tarball":"https://registry.npmjs.org/mcp-time-workdays-node/-/mcp-time-workdays-node-1.0.0.tgz","fileCount":3,"unpackedSize":17606,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIH2IYA7ZY/fngXqbSumWge3YQFQ5/WFCPJuUv+LwtbFvAiBwXLu+GEMk2BgwbQtw95uhoI8LQCuYToAeE32pqhInrw=="}]},"_npmUser":{"name":"tanran","email":"tanran2025@outlook.com"},"directories":{},"maintainers":[{"name":"tanran","email":"tanran2025@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-time-workdays-node_1.0.0_1757662863602_0.3106018972958686"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-12T07:41:03.601Z","1.0.0":"2025-09-12T07:41:03.773Z","modified":"2025-09-12T07:41:04.015Z"},"maintainers":[{"name":"tanran","email":"tanran2025@outlook.com"}],"description":"MCP server (Node) providing current time and workdays with Timor API integration","homepage":"https://github.com/tanranv5/mcp_time_workdays_node#readme","keywords":["mcp","time","workdays","model-context-protocol"],"repository":{"type":"git","url":"git+https://github.com/tanranv5/mcp_time_workdays_node.git"},"author":{"name":"tanran"},"bugs":{"url":"https://github.com/tanranv5/mcp_time_workdays_node/issues"},"license":"MIT","readme":"# MCP Time & Workdays (Node)\n\n提供一个基于 Model Context Protocol (MCP) 的 Node 服务器：\n- 获取指定时区的当前时间（可自定义格式）\n- 获取某年某月的官方工作日、假期与补班（多数据源）\n\n默认在线数据源为 Timor 年聚合接口，额外支持 NateScarlet holiday-cn（GitHub Raw）作为免费备选，无需 API Key。\n\n---\n\n## 特性\n- 在线数据源（免费）：\n  - Timor 年聚合接口（默认）\n  - NateScarlet holiday-cn（GitHub Raw，内置 CDN 兜底）\n- 统一输出：工作日(`workdays`)、假期(`holidays`)、补班(`makeup_workdays`)\n- 工具输出统一封装为 MCP `text` 内容，兼容严格客户端\n- Node 18+ 原生运行，无需额外依赖（除 MCP SDK）\n\n\n\n\n## 环境与安装\n- 要求：Node.js >= 18.17\n\n本地安装依赖：\n```bash\nnpm install\n```\n\n运行（MCP 服务器）：\n```bash\n# 方式一：Node 直接运行\nnode mcp_time_workdays_node.mjs\n\n# 方式二：NPM 脚本\nnpm start\n```\n\n> 提示：本项目 `package.json` 已设定 `type: module` 与最小依赖 `@modelcontextprotocol/sdk`。\n\n## MCP 工具\n服务器启动后会通过 stdio 暴露以下工具：\n\n1) `get_current_time`\n- 输入：\n  - `tz`：IANA 时区名或 `local`（默认 `local`）\n  - `fmt`：时间格式，默认`%Y-%m-%d %H:%M:%S%z`\n- 输出：`text`（字符串）\n- 示例输出：`2025-09-10 10:30:45+08:00`\n\n2) `get_workdays_from_api`\n- 输入：\n  - `year`：整数（默认当前年）\n  - `month`：1-12（默认当前月）\n  - `tz`：`local` 或 IANA 时区名（默认 `local`，仅用于获取“当前年月”）\n  - `provider`：`timor`（默认）或 `nate`\n  - `timeout`：超时秒数（默认 `8.0`）\n- 输出：`text`（JSON 字符串）：\n  - `provider, year, month, workdays[], holidays[], makeup_workdays[]`\n- 逻辑：\n  - 工作日 = “当月所有周一至周五 - 官方假期 + 官方补班周末”\n\n### 例：手动调用（模拟 MCP 客户端逻辑）\n以下展示从命令行模拟调用的方式（仅示例）：\n```bash\n# 获取 2025-10 月（Timor）\nnode -e \"(async()=>{const s=await import('./mcp_time_workdays_node.mjs');})();\" \\\n| echo '{\"method\":\"tools/call\",\"params\":{\"name\":\"get_workdays_from_api\",\"arguments\":{\"year\":2025,\"month\":10,\"provider\":\"timor\"}}}'\n```\n\n> 实际使用中，请让 MCP 兼容的客户端（如 Claude Desktop）通过 stdio 连接。\n\n## 客户端配置示例（Claude Desktop）\n在 `claude_desktop_config.json`（或等效位置）中添加：\n```json\n{\n  \"mcpServers\": {\n    \"time-and-workdays-node\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mcp_time_workdays_node.mjs\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\n## 数据源说明\n- `timor`（默认）：\n  - 年聚合接口：`https://timor.tech/api/holiday/year/{year}`\n  - 响应字段包含 `holiday` 映射：`{ 'MM-DD': { date, holiday, name, ... } }`\n  - 使用方式：从映射中过滤当月项；`holiday=true` 视为放假；`holiday=false` 且 `name` 包含“补班”视为补班\n\n- `nate`：\n  - 年文件（GitHub Raw）：`https://raw.githubusercontent.com/NateScarlet/holiday-cn/master/{year}.json`\n  - 内置 CDN 兜底：`https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{year}.json`\n  - `days[]` 内 `isOffDay=true` 为放假；`isOffDay=false` 若对应周末则视为补班\n\n> 备注：不推荐用于“补班”判断的数据源（例如 Nager.Date）未内置。\n\n\n## 常见问题\n- 输出是 `text`：为提升 MCP 客户端兼容性，本服务统一返回 `text` 类型内容（JSON 字符串或纯文本）。\n- 时区参数 `tz`：仅影响“默认年月”的判定，不影响工作日计算（工作日按本地/官方规则计算）。\n- 超时 `timeout`：单位秒。网络波动时可适当增大。\n\n## 致谢\n- Timor 年聚合接口：https://timor.tech/\n- NateScarlet holiday-cn：https://github.com/NateScarlet/holiday-cn\n- Model Context Protocol：https://github.com/modelcontextprotocol\n\n---\n\n如需把 CLI 也加入 `npm bin` 或增加更多数据源（例如带 Key 的商业 API），欢迎提 Issue/PR。\n\n","readmeFilename":"README.md","_rev":"1-0b0824139458d21c3c26c2606a7fa631"}