swiss-school-calendar-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for HTTP transports (also MCP_PORT) | 8000 |
| MCP_HOST | No | Bind address for HTTP transports. Loopback by default; 0.0.0.0 is opt-in. | 127.0.0.1 |
| MCP_PORT | No | Port for HTTP transports (alternative to PORT) | 8000 |
| MCP_TRANSPORT | No | Transport: stdio, sse, streamable-http (aka http) | stdio |
| MCP_CORS_ORIGINS | No | Comma-separated extra CORS origins for browser clients (audit SDK-004). Loopback origins are always allowed. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_cantonsA | List the 26 Swiss cantons with their ISO subdivision codes. Resolve a canton name to the CH-XX code every other tool needs; call this first when the user gives a canton by name. Use this first to resolve a canton name to the |
| list_school_typesA | List the Schularten (school types) that publish separate holiday tables. Discover whether a canton differentiates school holidays by Schulart before querying, so VS/MS/BS/EO filters are used only where they exist. Only a minority of cantons differentiate. For Zurich the codes are
|
| get_school_holidaysA | Return school holiday periods for one canton in a date range. Look up a canton's school holidays for planning within an explicit from/to window (term breaks, parent events, campaigns). Apparent duplicates are the same period per Schulart; set school_type to collapse them. Cantons that do not differentiate return one table. Args:
canton: ISO subdivision code, e.g. Records that look duplicated are usually the same period published for a
different Schulart. Set |
| get_public_holidaysA | Return public holidays for one canton and calendar year. Get a canton's official public holidays for a whole year — cantonal holidays (Berchtoldstag, Fronleichnam) differ, so always pass the canton. Cantonal holidays such as Berchtoldstag differ substantially across Switzerland, so always pass the canton rather than assuming the federal set. |
| get_local_holidaysA | Public holidays for a single municipality or district, incl. local specifics. Answer the locality question the canton-level tools flatten away: which holidays are observed only in this town (e.g. Zurich's Sechselaeuten)? scope is 'local' (specific here), 'regional' (canton/district) or 'national' (inherited). Accepts a name or a full subdivision code. Answers the local question the canton-level tools flatten away: which holidays are observed only here? The city of Zurich, for example, keeps Sechseläuten and Knabenschiessen (both half-day), which the rest of the canton does not.
|
| check_dateA | Check whether a given date falls into school holidays or a public holiday. The everyday scheduling question: can we hold the parents' evening on that Thursday? Checks one date against both school and public holidays. The everyday question behind this tool: "Can we schedule the parents' evening on that Thursday?" |
| compare_school_holidaysA | Compare school holiday overlap between cantons for a calendar year. Quantify inter-cantonal school-holiday overlap (pairwise day counts) for coordinating events or campaigns across cantonal borders. Returns a pairwise matrix of overlapping holiday days. Defaults to |
| find_common_free_windowA | Find date ranges in which all listed cantons are simultaneously on holiday. Find a common free window across several cantons — joint events, maintenance or campaigns when every listed canton is on holiday. Useful for planning campaigns, joint events or maintenance windows across cantonal borders. |
| next_school_holidaysA | Return the next upcoming school holiday periods for a canton. Forward-looking planning: the next N school-holiday periods for a canton from today, without computing a date range by hand. |
| get_long_weekendsA | Return Swiss long weekends and the bridge days needed to create them. Plan bridge days: which long weekends exist this year and which working days must be taken off to extend them. Computed from federal public holidays (Nager.Date); cantonal-only holidays are not considered. Sourced from Nager.Date, which computes these from federal public holidays; cantonal-only holidays are not considered. |
| source_statusA | Report reachability and latency of both upstream sources. Health check before a batch of queries, or to distinguish 'no data' from 'source down' — always returns an evaluable status. Always returns an evaluable status rather than an empty result set, so that "no data" can be distinguished from "source down". |
| export_holidays_icsA | Export a canton's holidays for a year as an iCalendar (.ics) document. Produce a ready-to-import .ics calendar of a canton's holidays for a year, filtered by public/school and Schulart. Returns a ready-to-save |
| is_holiday_todayA | Is today a school or public holiday in the given canton? One-call convenience for the everyday 'are we off today?' question in a given canton. Convenience wrapper over |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/malkreide/swiss-holidays-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server