Skip to content

Indonesian Holiday Calendar MCP server

Indonesian public holidays and cuti bersama (collective leave), taken from the SKB 3 Menteri decrees, for Claude and any other assistant that speaks the Model Context Protocol. Public and read-only, with no account or sign-in.

Connect

Server URL, over Streamable HTTP:

https://husniadil.com/calendar/mcp
  • Claude: add a custom connector with the URL above. Leave the authentication settings empty; the server needs no sign-in.
  • Claude Code:
    claude mcp add --transport http indonesian-holidays https://husniadil.com/calendar/mcp
  • Other clients: any client that supports remote MCP servers over Streamable HTTP connects to the same URL. Clients from before the 2026-07-28 protocol revision and clients that use it are both served.

What to ask

  • "Which long weekends in 2027 need at most one day of leave?"
  • "Is 18 August 2025 a holiday in Indonesia?"
  • "How many working days are there in Indonesia between 1 and 30 April 2026?"
  • "When is Idul Fitri next year, and what cuti bersama goes with it?"

Tools

8 tools, all read-only: none of them changes anything, and none reaches a service outside this site. Every result has a short text answer and the same data as structured content.

calendar_info · Calendar Coverage

Describe what this calendar knows: today's date in Jakarta, which years have holiday data and whether each is an official decree or a prediction, the holiday categories in use, and how many national holidays and cuti bersama days each year holds. It takes no arguments.

No parameters.

show_calendar · Show Calendar

List Indonesian holidays across a range of months (YYYY-MM), spanning year boundaries. On hosts supporting MCP Apps this also renders the matching calendar view. Defaults to the current month in Jakarta. Covered years: 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029.

  • from (optional): First month to show, YYYY-MM. Defaults to the current month.
  • to (optional): Last month to show, YYYY-MM (inclusive). Defaults to from.

In hosts that support MCP Apps, the result also opens an interactive view.

get_holiday · Get Holiday

Get one Indonesian holiday by its slug, including every date it spans and how far away each is. Omit year to get every year the holiday occurs in; pass it to narrow to one. An unknown slug returns the slugs that exist. On hosts supporting MCP Apps this also renders the months it falls in, for year or else for its next occurrence.

  • year (optional): Four-digit year. Omit to return every year it occurs in.
  • slug (required): Holiday slug, e.g. 'idul-fitri', 'natal', 'kemerdekaan'. Everyday names such as 'lebaran' work too.

In hosts that support MCP Apps, the result also opens an interactive view.

find_holidays · Find Holidays

Find Indonesian holidays matching any combination of a name keyword, a category, and a date range. Every filter is optional; with none, it returns holidays from every covered year. Results are a flat list in date order, capped by limit; truncated is true when more holidays match than were returned. Covered years: 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029.

  • query (optional): Case-insensitive keyword matched against the holiday name. Everyday names such as 'lebaran' or '17 agustus' work too.
  • category (optional): Restrict to one category. The permitted values are listed in this schema.
  • from (optional): Earliest date to include, YYYY-MM-DD (inclusive)
  • to (optional): Latest date to include, YYYY-MM-DD (inclusive)
  • limit (optional): Maximum results to return, 1-200. Defaults to 50.

check_date · Check Date

Check whether a specific date is an Indonesian holiday, a weekend, or a working day. Defaults to today in Jakarta when no date is given. Cuti bersama (collective leave) counts as a holiday and is flagged with is_collective_leave: civil servants are off, while a private employer decides and the day comes out of annual leave.

  • date (optional): Calendar date in YYYY-MM-DD format

next_holiday · Next Holiday

Find the next Indonesian holiday strictly after a date, crossing into the following year when needed. Defaults to today in Jakarta and to one holiday; count returns up to ten.

  • from (optional): Search strictly after this date, YYYY-MM-DD. Defaults to today.
  • count (optional): How many upcoming holidays to return, 1–10.

In hosts that support MCP Apps, the result also opens an interactive view.

find_long_weekends · Find Long Weekends

Find long-weekend opportunities in a date range, with how many leave days each one costs. Weekends, national holidays and cuti bersama count as days off. A stretch of three or more days off comes back with no leave (type no_leave), and the stretch that a few leave days join it to comes back too (type bridge), so the two can overlap. Defaults to the twelve months starting today, so a question asked in December still reaches into next year. Where an employer works cuti bersama, a stretch that relies on it costs more: collectiveLeaveDays counts the cuti bersama days in it, and leaveDaysIfCollectiveLeaveWorked is its cost there. max_leave_days keeps only those costing at most that many leave days with cuti bersama off. Covered years: 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029.

  • from (optional): Earliest date to consider, YYYY-MM-DD. Defaults to today.
  • to (optional): Latest date to consider, YYYY-MM-DD. Defaults to one year after from.
  • max_leave_days (optional): Keep only opportunities costing at most this many leave days. A bridge never costs more than 4, so anything above 4 keeps them all.

In hosts that support MCP Apps, the result also opens an interactive view.

count_workdays · Count Workdays

Count working days between two dates (inclusive), excluding weekends and Indonesian national holidays. Whether cuti bersama (collective leave) is a working day depends on the employer: civil servants and employers that follow it take the day off, and it comes out of annual leave, while other employers work it. Results give both counts: workdays treats cuti bersama as a day off, workdaysIfCollectiveLeaveWorked as a working day, and collectiveLeaveDays is the difference.

  • start (required): Start date, YYYY-MM-DD (inclusive)
  • end (required): End date, YYYY-MM-DD (inclusive)

Data and sources

  • 2020–2027: official, from the SKB 3 Menteri decree for each year, including every amendment. The holidays follow the last amendment.
  • 2028–2029: predictions from earlier years' patterns, until the decree is issued. Results mark them as predictions.
  • Outside these years there is no holiday data, and results say so.
  • Every result carries a coverage field that says which years it rests on, whether they are official, and links the decree PDFs.
  • "Today" is the date in Jakarta (UTC+7).
  • Cuti bersama is a day off for civil servants and for employers that follow it, and it comes out of annual leave; other employers work it. count_workdays and find_long_weekends give the figures for both.

The same data drives the holiday calendar on this site, which also offers every decree as a PDF.

In the browser

Every page on this site also offers the same tools to browser agents through WebMCP. There the tools run in the browser and send nothing to the server.

Privacy

The server receives only the tool name and its arguments, such as a date, a range of months or a holiday name. It does not store them, link them to anyone, or send them to analytics. Like every request to this site, requests are kept briefly in Cloudflare's server logs and deleted automatically after a few days. The full policy, in Indonesian, is at /privacy.

Support

Questions, wrong dates or a decree the calendar has not caught up with: email info@husniadil.com.