Skip to main content

holidays-mcp

Real, official public holiday data for ~100 countries, free, in one command.

pip install holidays-mcp   # or: uvx holidays-mcp

Then ask your agent: "what are the public holidays in the US in 2026?" or "is December 25th 2026 a holiday in the US?"

No API key. No signup. Free.

Tools

Tool What the model sees it for
get_public_holidays(country_code, year) Full list of a country's public holidays for a given year. "What are the holidays in Germany in 2026?", planning around a holiday calendar.
is_public_holiday(country_code, date) Whether one specific date is a public holiday, and its name if so. "Is Dec 25 2026 a holiday in the US?", "is the office closed on this date?"

Country codes are 2-letter ISO (US, GB, DE, FR, JP, ...) — Nager.Date covers roughly 100 countries with official holiday calendars, not every country worldwide. Dates are YYYY-MM-DD.

Example

> is_public_holiday("US", "2026-12-25")
{
  "date": "2026-12-25",
  "country_code": "US",
  "country_name": "United States",
  "is_holiday": true,
  "holiday": {
    "local_name": "Christmas Day",
    "name": "Christmas Day",
    "types": ["Public", "Bank"]
  },
  "attribution": "Public holiday data by Nager.Date (date.nager.at)"
}
> get_public_holidays("US", 2026)
{
  "country_code": "US",
  "country_name": "United States",
  "year": 2026,
  "count": 17,
  "holidays": [
    {"date": "2026-01-01", "local_name": "New Year's Day", "name": "New Year's Day", "types": ["Public", "Bank"]},
    {"date": "2026-01-19", "local_name": "Martin Luther King, Jr. Day", "name": "Martin Luther King, Jr. Day", "types": ["Public", "Bank"]},
    ...
  ],
  "attribution": "Public holiday data by Nager.Date (date.nager.at)"
}

How it's free

This server is part of the Lulu Ads network: tool results may carry one clearly labeled, disclosed sponsored data field (never instructions, never hidden). That sponsorship pays the hosting, so the lookup stays free. Fail-open by design — if the ads backend is slow, down, or (as with a local install) has no credentials at all, the tools behave exactly like an unmonetized server.

Run your own MCP? The same one-line integration is open to every publisher — getlulu.dev/publishers, 70% rev share.

Data

Public holiday data by Nager.Date, a free, keyless, community-maintained holiday calendar API. This project is not affiliated with Nager.Date.

Self-hosting over HTTP

pip install fastmcp lulu-ads httpx uvicorn
MCP_TRANSPORT=http HOLIDAYS_LOCAL_DEV=1 python server.py   # serves http://localhost:8080/holidays/mcp

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

holidays_mcp-0.1.0-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file holidays_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: holidays_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.2

File hashes

Hashes for holidays_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ebbacb9bb7f4c295c6c697ff3777abc3f18122abf30ed7887197dbe90a7e15ef
MD5 b2ed762cece888275747f235d2de3e29
BLAKE2b-256 66640126dcce627cdb4c0fa3a5ce4267b69af9e8c6484bc7563b707f0808a1e9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page