mcp-jp-calendar

ๆฅๆฌ่ช็ใฏใใกใ (Japanese README)
Give your AI agent correct answers about Japanese business days. An MCP server that tells Claude (or any MCP client) whether a date is a working day in Japan, what date payment is actually due, and which fiscal quarter you're in โ accounting for national holidays, substitute holidays, and conventions no simple weekday check gets right. No API keys, no network calls: all holiday data (2020โ2030) is embedded in the package.
Contents
Why this exists
A naive "is it a weekday" check gets Japanese business dates wrong more often than you'd expect. A few real examples this server handles correctly:
| Situation | Naive weekday check | What actually happens |
|---|
| Substitute holiday (ๆฏๆฟไผๆฅ) | Children's Day, May 5 2026, falls on a Sunday โ looks like the next day (Mon May 6) is a normal business day | May 6 2026 is also a public holiday โ Japanese law shifts the holiday to the next non-holiday day |
| Citizens' holiday (ๅฝๆฐใฎไผๆฅ) | Sep 22 2026 is a Tuesday, sandwiched between two holidays โ looks like a business day | It's a holiday too: when a weekday falls between two national holidays, it automatically becomes one |
| Gotobi settlement days (ไบๅๆฅ) | Japanese invoices and payments conventionally settle on the 5th/10th/15th/20th/25th/month-end โ irrelevant in most other countries | next_gotobi finds the next one and, if it lands on a holiday, tells you the actual (pushed-back) business day payment will clear |
| Fiscal year (ๅนดๅบฆ) | December looks like Q4 if you assume a January-start year | Most Japanese companies run an AprilโMarch fiscal year, so December is actually Q3 |
Get any of these wrong in a scheduling or invoicing agent and you'll pick a bank holiday as a due date, or misreport a quarter. This server encodes the actual rules so your agent doesn't have to guess.
Install
Option 1 โ npx (recommended)
No install step required. Add this to your Claude Desktop config (claude_desktop_config.json):
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"jp-calendar": {
"command": "npx",
"args": ["-y", "mcp-jp-calendar"]
}
}
}
Restart Claude Desktop and the tools become available. You can also run it directly:
Or install it globally:
npm install -g mcp-jp-calendar
Option 2 โ .mcpb bundle (one-click install for Claude Desktop)
MCP Bundles let you install a local MCP server with a single double-click, no terminal required. Build one from source:
git clone https://github.com/skypier-jp-works/mcp-jp-calendar.git
cd mcp-jp-calendar
npm install
npm run build
mkdir -p mcpb-dist/server && cp build/*.js mcpb-dist/server/
cd mcpb-dist
npm install --omit=dev
npm install -g @anthropic-ai/mcpb
mcpb pack . mcp-jp-calendar.mcpb
Then double-click the resulting mcp-jp-calendar.mcpb file to install it in Claude for macOS/Windows.
All dates are given and returned in YYYY-MM-DD format (e.g. 2026-08-15). month_end_info takes a YYYY-MM month string (e.g. 2026-08).
| Tool | Description |
|---|
is_business_day | Check whether a given date is a business day |
add_business_days | Get the date N business days after/before a given date |
count_business_days | Count business days between two dates (inclusive) |
next_gotobi | Get the next "gotobi" settlement day (5th, 10th, 15th, 20th, 25th, or last day of month), plus the actual business day if that date is a holiday |
month_end_info | Get the last day of a given month, and the effective closing date if that day is a holiday |
fiscal_period | Determine which fiscal year and quarter a date falls in (fiscal year start month is configurable; defaults to April) |
list_holidays | List Japan's national holidays for a given year |
All of is_business_day, add_business_days, count_business_days, next_gotobi, and month_end_info accept two optional parameters:
weekendDays: array of weekday numbers to treat as non-working days. 0=Sun โฆ 6=Sat. Defaults to [0, 6].
customHolidays: array of YYYY-MM-DD strings for company-specific closures (e.g. a year-end shutdown).
Examples
is_business_day โ a Saturday:
{ "date": "2026-08-15", "isBusinessDay": false, "reason": "ๅๆๆฅ" }
add_business_days โ 1 business day after a Friday:
{ "startDate": "2026-07-24", "businessDays": 1, "resultDate": "2026-07-27" }
count_business_days โ a full MonโSun week:
{ "startDate": "2026-07-27", "endDate": "2026-08-02", "businessDays": 5 }
next_gotobi โ the 15th falls on a Saturday, so it's pushed back:
{ "gotobiDate": "2026-08-15", "isBusinessDay": false, "actualDate": "2026-08-14" }
month_end_info โ month-end falls on a Sunday:
{ "yearMonth": "2027-01", "monthEndDate": "2027-01-31", "isBusinessDay": false, "actualClosingDate": "2027-01-29" }
fiscal_period โ December, under Japan's standard April-start fiscal year:
{ "date": "2026-12-01", "fiscalYearStartMonth": 4, "fiscalYear": 2026, "quarter": 3 }
list_holidays โ excerpt showing a citizens' holiday (ๅฝๆฐใฎไผๆฅ):
{
"year": 2026,
"holidays": [
{ "date": "2026-09-21", "name": "ๆฌ่ใฎๆฅ" },
{ "date": "2026-09-22", "name": "ๅฝๆฐใฎไผๆฅ" },
{ "date": "2026-09-23", "name": "็งๅใฎๆฅ" }
]
}
Supported range & data source
Only dates from 2020 to 2030 are supported. Dates outside this range return an error.
- Holiday data for 2020โ2027 is confirmed, sourced directly from Japan's Cabinet Office (ๅ
้ฃๅบ) official holiday CSV: https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html
- Holiday data for 2028โ2030 is a computed estimate: the vernal/autumnal equinox holidays (ๆฅๅใฎๆฅ / ็งๅใฎๆฅ) aren't officially announced that far ahead, so they're calculated with the standard astronomical approximation formula and may differ from the eventual official announcement by up to a day.
- The 2020/2021 Tokyo Olympics special holiday moves (Marine Day, Sports Day, Mountain Day) are included.
- Substitute holidays (ๆฏๆฟไผๆฅ) and citizens' holidays (ๅฝๆฐใฎไผๆฅ) are computed automatically and have been cross-checked against the official Cabinet Office data for 2020โ2027.
Disclaimer
- The accuracy of this tool's calculations is not guaranteed.
- Actual business days and closing dates are governed by each company's own work rules and by agreements with business partners, which always take precedence over this tool's output.
- If you are using this tool for any important business decision, you must independently verify the results yourself.
Development
Clone and build from source if you want to modify the server:
git clone https://github.com/skypier-jp-works/mcp-jp-calendar.git
cd mcp-jp-calendar
npm install
npm run build
npm test
Claude Desktop config for a locally built copy:
{
"mcpServers": {
"jp-calendar": {
"command": "node",
"args": ["/absolute/path/to/mcp-jp-calendar/build/index.js"]
}
}
}
Project structure
mcp-jp-calendar/
โโโ src/
โ โโโ holidays.ts # Embedded holiday data for 2020-2030 (Cabinet Office data + estimates)
โ โโโ dateUtils.ts # Core logic: business days, closing dates, fiscal periods, etc.
โ โโโ index.ts # MCP server entry point (exposes the 7 tools)
โโโ tests/
โ โโโ dateUtils.test.ts
โโโ mcpb-dist/
โ โโโ manifest.json # MCP Bundle (.mcpb) manifest โ see Install, Option 2
โโโ package.json
โโโ tsconfig.json
โโโ LICENSE
โโโ README.md # this file
โโโ README.ja.md # Japanese version
If a holiday law changes, this server's embedded data will not update automatically โ src/holidays.ts needs to be updated manually.
License
MIT