
Mycal
io.github.Junhui20Published by GitHub account Junhui20v0.1.4Updated Oct 24, 2026
Malaysia public holidays, school terms, business days & a leave optimizer (13 tools).
Overview
Local MCP server giving assistants Malaysian public holidays, school terms, exams, business-day counts and leave planning across all states.
- What you can do
- Look up Malaysian public holidays by year, state, type or month, and check whether a date is a holiday, weekend, working day or school day
- Find the next upcoming holiday, holidays in a range, long weekends and recent data changes
- Count business days between dates or add a number of business days to a date
- Plan leave with a leave optimizer that suggests the most efficient days to take for the longest break
- List states and resolve aliases such as KL or JB to canonical state codes
- Retrieve school terms, school holidays and SPM, STPM, MUET and PT3 exam schedules
- When to use it
- Useful when you work with Malaysian dates: scheduling meetings or deadlines around state-specific holidays and weekend patterns, planning leave around long weekends, or checking school terms and exam periods for planning.
- Requirements
- Runs as a local process via npx from the npm package @catlabtech/mycal-mcp-server, so Node.js and network access to the project's hosted API are needed. No API key or environment variables are declared.
Installation
In SourceWeft
- Open Mycal in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Malaysia Calendar API
Malaysia's most complete calendar API — public holidays, school calendar, exam schedules, and MCP server for AI tools.
[npm: mycal-core] [npm: mycal-sdk] [npm: mycal-mcp-server] [License: MIT] [Deploys on Cloudflare]
Data source: Official government gazette (JPM BKPP), JAKIM, KPM, MPM. Not scraped from third-party websites.
Links
- Website + demo: https://mycal-web.pages.dev
- Developer docs: https://mycal-web.pages.dev/docs
- API base URL: https://mycal-api.huijun00100101.workers.dev/v1
- GitHub: https://github.com/Junhui20/malaysia-calendar-api
Packages
Published to npm under the @catlabtech scope:
Features
- 50 public holidays for 2026 from official gazette (Warta Kerajaan) — federal + state-specific
- 13 states + 3 Federal Territories with aliases (KL, JB, Penang, etc.)
- Weekend-aware — Kedah/Kelantan/Terengganu use Fri-Sat (Kumpulan A), all others use Sat-Sun (Kumpulan B), with Johor's historical switch tracked
- Cuti ganti (replacement holiday) auto-calculation per state weekend config
- Business day calculator — per-state, holiday-aware
- School calendar — terms, holidays, KPM cuti perayaan (Lampiran A/B/C)
- Exam schedules — SPM, STPM, MUET, PT3
- iCal subscription feeds — per-state
.icsfeeds - MCP Server for AI agents — 13 tools for Claude, ChatGPT, and other assistants
- TypeScript SDK (
@catlabtech/mycal-sdk) with typed responses - OpenAPI 3.1 spec + interactive docs
- Trilingual — Bahasa Melayu, English, Chinese names (三语支持)
Quick Start
API Examples
Base URL: https://mycal-api.huijun00100101.workers.dev/v1
List holidays
Check a date
Response:
Business days
School calendar
Next holiday
State resolution
Full API Reference
See the full OpenAPI 3.1 spec for request/response schemas.
SDK Usage
MCP Server
Connect the Malaysia Calendar API to Claude, ChatGPT, or any MCP-compatible AI assistant.
Setup with Claude Desktop / Claude Code
Add to your MCP configuration:
Available Tools (13)
State Codes
State aliases are case-insensitive. Use GET /v1/states/resolve?q=kl to resolve any alias to the canonical code.
Project Structure
Data Sources
All data is sourced from official Malaysian government publications:
Holiday data includes gazette references (e.g., P.U.(B) 305/2025) for traceability.
Deploy
Two parts deploy independently:
API → Cloudflare Workers
Website → Cloudflare Pages
First-time Pages setup:
- Create a Pages project named
mycal-webin the Cloudflare dashboard. - Either connect the GitHub repo for automatic builds, or rely on the GitHub Actions workflow (
.github/workflows/deploy.yml) to push viawrangler pages deploy. - Required GitHub secrets:
CLOUDFLARE_API_TOKEN,CLOUDFLARE_ACCOUNT_ID.
CI/CD
GitHub Actions handles:
- PR gate — Zod schema validation + cross-source checks on every PR
- Deploy — On merge to
main: build and deploy API to Workers + Web to Pages in parallel - Daily scrape — Government portal monitoring for updates
- Rukyah monitor — Islamic date confirmation tracking
Contributing
See CONTRIBUTING.md for how to:
- Report a missing holiday or cuti peristiwa
- Fix data errors
- Add new features
License
MIT
Source: README.md at commit 975b7a0
Tools
0Version history
1- v0.1.4LatestSep 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 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 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