MCP server for openholidaysapi.org — Swiss school and public holidays for all 26 cantons
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http · http · sse
verified
reported
listed in the official MCP registry counts 13 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
check_date
-
compare_school_holidays
-
export_holidays_ics
-
find_common_free_window
-
get_local_holidays
-
get_long_weekends
-
get_public_holidays
-
get_school_holidays
-
is_holiday_today
-
list_cantons
-
list_school_types
-
next_school_holidays
-
source_status
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 35d3929 · analyzer v33 · 1w ago
skills & prompt files 1
- agent-rules malkreide-swiss-holidays-mcp-35d3929/CLAUDE.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 31
filesystem 8
- fs (weak) malkreide-swiss-holidays-mcp-35d3929/scripts/check_ruff_pin.py :35
import shutil - fs (weak) malkreide-swiss-holidays-mcp-35d3929/scripts/check_version_sync.py :49
from pathlib import Path - fs (weak) malkreide-swiss-holidays-mcp-35d3929/scripts/classify_live_run.py :55
from pathlib import Path - fs (weak) malkreide-swiss-holidays-mcp-35d3929/scripts/record_fixtures.py :24
from pathlib import Path - fs (weak) malkreide-swiss-holidays-mcp-35d3929/tests/fixture_data.py :18
from pathlib import Path - fs (weak) malkreide-swiss-holidays-mcp-35d3929/tests/test_classify_live_run.py :21
from pathlib import Path - fs (weak) malkreide-swiss-holidays-mcp-35d3929/tests/test_pinning.py :95
from pathlib import Path - fs (weak) malkreide-swiss-holidays-mcp-35d3929/tests/test_recorded_fixtures.py :250
from pathlib import Path
shell / exec 1
- shell (weak) malkreide-swiss-holidays-mcp-35d3929/scripts/check_ruff_pin.py :36
import subprocess
network 13
- net (weak) malkreide-swiss-holidays-mcp-35d3929/scripts/record_fixtures.py :26
from urllib.parse import urlencode - net malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/client.py :14
in the server lifespan with a shared ``httpx.AsyncClient`` and a persistent - net malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/guard.py :20
import socket - net malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/pinning.py :23
import httpx - net malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :4
holding one ``httpx.AsyncClient`` and a persistent 12h cache -- is created in the - net (weak) malkreide-swiss-holidays-mcp-35d3929/tests/conftest.py :1
import httpx - net (weak) malkreide-swiss-holidays-mcp-35d3929/tests/test_feed.py :3
import httpx - net (weak) malkreide-swiss-holidays-mcp-35d3929/tests/test_local.py :3
import httpx - net (weak) malkreide-swiss-holidays-mcp-35d3929/tests/test_pinning.py :13
import socket - net (weak) malkreide-swiss-holidays-mcp-35d3929/tests/test_recorded_fixtures.py :20
import httpx - net (weak) malkreide-swiss-holidays-mcp-35d3929/tests/test_resilience.py :3
import httpx - net (weak) malkreide-swiss-holidays-mcp-35d3929/tests/test_retry_policy.py :14
import httpx - net (weak) malkreide-swiss-holidays-mcp-35d3929/tests/test_tools.py :3
import httpx
tool registrations 13
- list_cantons malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :798
- list_school_types malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :812
- get_school_holidays malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :830
- get_public_holidays malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :863
- get_local_holidays malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :879
- check_date malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :907
- compare_school_holidays malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :927
- find_common_free_window malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :948
- next_school_holidays malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :971
- get_long_weekends malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :988
- source_status malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :1004
- export_holidays_ics malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :1018
- is_holiday_today malkreide-swiss-holidays-mcp-35d3929/src/swiss_holidays_mcp/server.py :1068
declared dependencies 8
- mcp@>=2.0.0,<3
- httpx@>=0.27
- pydantic@>=2.7
- pydantic-settings@>=2.2
- pytest@>=8.0
- pytest-asyncio@>=0.23
- respx@>=0.21
- ruff@==0.16.1