lookup-holiday

io.github.encodiPublished by GitHub account encodiv1.0.0Updated Sep 30, 2026

Real public holiday lookup for 206 countries via a rule-based calendar engine. Paid via x402.

VerifiedStreamable HTTPWeb executableLocation & LifestyleProductivity & Workflow

Overview

AI-generated overview

Remote MCP server with one tool that looks up real public holidays for 206 countries by country, subdivision and year, billed per call in USDC.

What you can do
  • Look up public holidays for a country, optionally narrowed by state/subdivision and region, for a given year
  • Get holiday names and dates computed by a rule-based calendar engine, including moveable holidays such as Easter and lunar-calendar dates
  • Receive a payment request in the error response when a call is unpaid, then retry with payment
When to use it
Useful when an assistant needs accurate holiday dates for scheduling, planning deadlines, or answering questions about public holidays in a specific country and year, especially near-term years.
Requirements
Remote streamable HTTP endpoint; no account or API key declared. Each tool call costs $0.01 USDC on Base mainnet via x402, so the client must be able to pay and retry. Network access required.
Before you install
Calls spend real money: $0.01 USDC per lookup on Base mainnet, paid through the x402 flow inside the JSON-RPC request. The client needs a funded wallet and payment capability. Holiday data comes from the date-holidays project under CC BY-SA 3.0 and should be attributed accordingly. Rules are applied to any requested year, so historical accuracy is not guaranteed.

Installation

In SourceWeft

  1. Open lookup-holiday in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.encodi%2Flookup-holiday/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "lookup-holiday": {
      "type": "http",
      "url": "https://lookup-holiday.encodari.workers.dev/mcp"
    }
  }
}

README

lookup-holiday

[lookup-holiday MCP server]

Remote MCP server (Cloudflare Workers) with one tool that looks up real public holidays:

  • lookup_holiday — real holidays for a country (and optionally a state/subdivision and region) and year, from a rule-based calendar engine covering 206 countries. Moveable holidays (Easter, lunar calendars, "nth weekday of month" rules, etc.) are computed with real date arithmetic, not guessed by the model.

No database, no persistent state: each call builds a fresh McpServer (see createServer() in src/index.ts). The calendar engine is date-holidays, bundled directly into the Worker.

Data attribution

The holiday data (which dates are holidays, their names) comes from the date-holidays project and is licensed CC BY-SA 3.0, since it's compiled from Wikipedia articles — see NOTICE and their LICENSE file for the full per-country attribution list. Only the code in this repository is MIT; see LICENSE.

Billing (x402)

Charges per call via x402 — real USDC payment on Base mainnet, against the Coinbase Developer Platform (CDP) facilitator. The payment travels inside the MCP JSON-RPC itself (_meta), not as an HTTP header; see src/payments.ts.

ToolPrice
lookup_holiday$0.01 USDC

An unpaid tools/call returns isError: true with the accepts (network, amount, payTo) the client needs to pay and retry — not an unexplained exception.

Structure

src/  index.ts          # registers the tool in the McpServer and exposes the MCP HTTP handler  payments.ts       # x402 billing on Base mainnet via the CDP facilitator  tools/    holiday.ts         # pure logic for lookup_holiday (testable without Workers)    holiday.test.tsscripts/  dev-node.ts       # dev server that runs the handler in plain Node, no wrangler

Running it locally

⚠️ Note on wrangler dev: the real Cloudflare Workers runtime (workerd) requires macOS 13.5+. If your Mac has an older version, wrangler dev (and npm run dev) will fail. This project includes a plain-Node shim that runs the exact same fetch() handler without needing workerd.

1. Install dependencies

bash
npm install

2. Run the unit tests

bash
npm test

3a. If your wrangler dev works (macOS 13.5+, Linux, Windows)

bash
npm run dev

3b. If wrangler dev fails because of the macOS version

bash
npm run dev:node

Starts at http://localhost:8787/mcp, reading CDP credentials from ~/.mcp-tools-factory-credentials.env (shared across all tools in this factory).

4. Test with curl

bash
# 1) initializecurl -s -X POST http://localhost:8787/mcp \  -H "Content-Type: application/json" \  -H "Accept: application/json, text/event-stream" \  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl-test","version":"0.0.1"}}}'
# 2) tools/listcurl -s -X POST http://localhost:8787/mcp \  -H "Content-Type: application/json" \  -H "Accept: application/json, text/event-stream" \  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
# 3) tools/call — lookup_holidaycurl -s -X POST http://localhost:8787/mcp \  -H "Content-Type: application/json" \  -H "Accept: application/json, text/event-stream" \  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"lookup_holiday","arguments":{"country":"US","state":"TX","year":2026}}}'

Responses come as Server-Sent Events (event: message + data: {...}); the data: line is the usual JSON-RPC response.

Deploy and listings

Deployed at https://lookup-holiday.encodari.workers.dev/mcp (Cloudflare Workers). Published on the official MCP registry, Smithery, mcp.so, Glama, and with an open PR to awesome-mcp-servers.

What it doesn't do (yet)

  • Charges on Base mainnet with real money. To switch back to testnet (Base Sepolia, eip155:84532) during development, change NETWORK in src/payments.ts.
  • No database or persistent state between calls (beyond the billing config, cached in memory per isolate — see src/payments.ts).
  • Doesn't model when a holiday was first introduced — a rule like "3rd Monday in January" is applied to any requested year even if the holiday didn't exist yet historically. Fine for scheduling near-term years; not a historical record.

Source: README.md at commit 7f7163f

Tools

0
SourceWeft has not read this server's tools yet.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declaredRequired10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts