Openworkdays

io.github.SolvoHQ由 GitHub 帳號 SolvoHQ 發布v0.1.0更新於 Oct 24, 2026

Zero-signup business-day date-math API: add days, count days between dates, is-business-day.

已驗證Streamable HTTP可網頁執行效率與工作流開發者工具

概覽

AI 產生的概覽

遠端、免註冊的 MCP 伺服器,提供一個工作日日期計算工具:加減工作日、計算兩日期之間的工作日數、判斷某天是否為工作日。

可以做什麼
  • 從起始日期加減工作日,負值代表往前推算
  • 計算兩個日期之間的工作日數量,包含頭尾兩天
  • 判斷指定日期是否為工作日,並回傳週末、假日或無的原因
  • 三種模式都可自訂週末定義與呼叫端提供的假日清單
適用情境
適合需要確定性工作日計算的情境,例如截止日、SLA 或合約日期、衝刺與交付排程,避免模型自行猜測行事曆運算。也適合無法完成註冊或保存 API 金鑰的自動化代理。
執行需求
需要連線遠端 Streamable HTTP 端點;不需帳號、API 金鑰、OAuth 或環境變數。需要能連上該託管服務的網路。服務為無狀態,僅提供一個工具。
安裝前請注意
僅做純 UTC 的日期運算,不含時刻、時區或日光節約時間。沒有內建各國假日資料庫,假日須由呼叫端自行提供。限流為依執行個體的盡力而為機制,可能回傳 429。請求內容(包括傳入的假日日期)會送到第三方託管服務。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Openworkdays,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.SolvoHQ%2Fopenworkdays/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "openworkdays": {
      "type": "http",
      "url": "https://openworkdays.vercel.app/api/mcp"
    }
  }
}

README

OpenWorkdays

A zero-signup business-day / working-day date-arithmetic API. No account, no API key — one GET request.

Add or subtract working days, count business days between two dates, or test whether a date is a business day — with your own holiday list. Pure UTC date math, returned as JSON. Built so autonomous AI agents get a deterministic date endpoint — an agent has no human to do a signup, and LLMs are measurably unreliable at date arithmetic.

Live: https://openworkdays.vercel.app

Quick start

sh
curl "https://openworkdays.vercel.app/api/businessdays?start=2026-05-15&days=5"

Sample response:

json
{  "mode": "add",  "start": "2026-05-15",  "days": 5,  "result": "2026-05-22",  "resultWeekday": "fri",  "startIsBusinessDay": true,  "weekend": ["sat", "sun"],  "holidaysApplied": 0,  "engine": "date-utc-v0.1",  "computedAt": "2026-05-17T00:00:00.000Z"}

Any error returns JSON with an error key and an appropriate HTTP status (400 bad params, 429 rate limited, 405 wrong method).

The three modes

The endpoint is always GET /api/businessdays. The mode is inferred from the params you pass.

add — add/subtract working days

Params: start=YYYY-MM-DD, days=N (integer, +/- ok, |N| <= 10000), optional weekend=, optional holidays=.

sh
curl "https://openworkdays.vercel.app/api/businessdays?start=2026-05-15&days=5"

N=0 returns start unchanged (even if start is itself non-working).

diff — count business days between two dates

Params: start=YYYY-MM-DD, end=YYYY-MM-DD, optional weekend=, optional holidays=. Inclusive of both endpoints. Result is negative if end < start.

sh
curl "https://openworkdays.vercel.app/api/businessdays?start=2026-05-15&end=2026-06-15&holidays=2026-05-25"

is — is this date a business day?

Params: date=YYYY-MM-DD, optional weekend=, optional holidays=.

sh
curl "https://openworkdays.vercel.app/api/businessdays?date=2026-05-16"

Returns isBusinessDay plus a reason of "weekend", "holiday", or null.

Shared params

  • weekend (default sat,sun) — comma list. Tokens are case-insensitive from {sun,mon,tue,wed,thu,fri,sat}, or numeric 0-6 where 0=Sunday … 6=Saturday (matches JS getUTCDay()). Cannot mark all 7 days as weekend.
  • holidays — comma list of YYYY-MM-DD dates treated as non-working (max 1000). Strictly validated.

Errors

Errors are JSON with an error key:

  • 400 — bad/missing params (missing start, invalid days (must be integer), invalid weekend token, invalid holiday date, invalid date, specify a mode (includes a usage object), …)
  • 429 — rate limited (Retry-After header + retryAfterSec)
  • 405 — wrong HTTP method (only GET/OPTIONS allowed)

JavaScript

js
const base = "https://openworkdays.vercel.app";const r = await fetch(  base + "/api/businessdays?start=2026-05-15&days=5");const out = await r.json(); // { mode:"add", result:"2026-05-22", resultWeekday:"fri", ... }

Use as an MCP tool (AI agents / Claude / Cursor / LLM clients)

OpenWorkdays is also a remote MCP server, so an agent can call it as a tool with no signup, no API key, no OAuth.

  • Endpoint: https://openworkdays.vercel.app/api/mcp
  • Transport: Streamable HTTP, stateless (POST JSON-RPC 2.0, single application/json response — no sessions, no SSE)
  • Exposes exactly one tool: businessdays — the mode (add / diff / is) is inferred from which args you pass, returning the same JSON as the REST endpoint (also as structuredContent)

Drop this into any MCP client config (Claude Desktop, Cursor, or any client that speaks the Streamable HTTP transport):

json
{ "mcpServers": { "openworkdays": { "url": "https://openworkdays.vercel.app/api/mcp" } } }

Quick smoke test:

sh
curl -s -X POST https://openworkdays.vercel.app/api/mcp \  -H 'Content-Type: application/json' \  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"businessdays","arguments":{"start":"2026-05-15","days":5}}}'

Over MCP, an upstream error comes back as a tool result with isError: true.

Why

Every public business-day API gates behind an account or API key: workingdays.org is test-only / subscription; API Ninjas and Holiday API need keys; timeanddate is a $299 product; the RapidAPI business-day APIs need a RapidAPI key; Microsoft's "Calculate Working Day" connector is Power-Platform-framework-gated and UK-bank-holidays only. OpenWorkdays is a single anonymous GET — no signup, no key. That is especially useful to autonomous agents, which have no human in the loop to complete a signup. And because LLMs are measurably unreliable at date arithmetic, an agent needs a deterministic endpoint rather than guessing.

Limitations

  • Date-only, pure UTC arithmetic — no time-of-day, no DST, no timezones (that is recurrence-rule territory, intentionally out of scope for v0.1).
  • Caller-supplied holidays only — there is no built-in country holiday database. This is deliberate: we do not fake-compete on the 7000-holiday-DB axis where funded incumbents win. You pass the holidays= list you care about.
  • Best-effort per-instance IP rate limit — a soft abuse brake, not a guarantee (serverless instances are ephemeral and not shared).
  • MIT licensed and self-hostable — see below.

Self-host — it's zero-dependency files

The entire API is two single zero-dependency Node serverless functions: api/businessdays.js (REST) and api/mcp.js (remote MCP). No npm install, no deps at all. Deploy the folder to Vercel (zero-config /api detection) or drop the handlers into any Node serverless runtime.

sh
git clone https://github.com/SolvoHQ/openworkdayscd openworkdaysnpx vercel --prod

License

MIT — see LICENSE.

來源:README.md,提交 1ae5e04

工具

1

businessdays

Business-day date math. Three modes inferred from params: add (start+days -> the date N business days away, negative days = before), diff (start+end -> count of business days between, inclusive of both endpoints), is (date -> is it a business day). Optional weekend (default sat,sun) and holidays (comma list of YYYY-MM-DD you supply). No signup, no API key. Pure UTC date-only math; no time-of-day/DST/timezone.

輸入參數enddatedaysstartweekendholidays

版本歷史

1
  1. v0.1.0最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分