MCP server for education statistics of Canton and City of Zurich (BISTA)
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 8 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
zh_edu_list_schulgemeinden
-
zh_edu_maturitaetsquote
-
zh_edu_mittelschulen
-
zh_edu_overview
-
zh_edu_schulkreis_trend
-
zh_edu_sek1_profil
-
zh_edu_staatsangehoerigkeiten
-
zh_edu_wohnort_trend
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit a873d95 · analyzer v33 · 1w ago
skills & prompt files 1
- agent-rules malkreide-zh-education-mcp-a873d95/CLAUDE.md
danger signals1
- suspicious endpoint 169.254.169.254 (cloud metadata) malkreide-zh-education-mcp-a873d95/tests/test_server.py :194
req = httpx.Request("GET", "https://169.254.169.254/latest/meta-data/")
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 31
filesystem 11
- fs malkreide-zh-education-mcp-a873d95/audits/2026-05-29T193607-Z-zh-education-mcp/gen_findings.py :11
from pathlib import Path - fs malkreide-zh-education-mcp-a873d95/audits/2026-05-30T070451-Z-zh-education-mcp/gen_findings.py :11
from pathlib import Path - fs malkreide-zh-education-mcp-a873d95/audits/2026-05-30T072745-Z-zh-education-mcp/gen_findings.py :11
from pathlib import Path - fs (weak) malkreide-zh-education-mcp-a873d95/scripts/check_release_artifacts.py :24
from pathlib import Path - fs (weak) malkreide-zh-education-mcp-a873d95/scripts/check_ruff_pin.py :35
import shutil - fs (weak) malkreide-zh-education-mcp-a873d95/scripts/check_version_sync.py :35
from pathlib import Path - fs (weak) malkreide-zh-education-mcp-a873d95/scripts/classify_live_run.py :55
from pathlib import Path - fs (weak) malkreide-zh-education-mcp-a873d95/scripts/record_fixtures.py :38
from pathlib import Path - fs (weak) malkreide-zh-education-mcp-a873d95/tests/fixture_data.py :18
from pathlib import Path - fs (weak) malkreide-zh-education-mcp-a873d95/tests/test_classify_live_run.py :21
from pathlib import Path - fs (weak) malkreide-zh-education-mcp-a873d95/tests/test_read_fields.py :29
from pathlib import Path
shell / exec 1
- shell (weak) malkreide-zh-education-mcp-a873d95/scripts/check_ruff_pin.py :36
import subprocess
network 11
- net (weak) malkreide-zh-education-mcp-a873d95/scripts/record_fixtures.py :40
import httpx - net (weak) malkreide-zh-education-mcp-a873d95/scripts/tls_import_probe.py :71
import httpx - net malkreide-zh-education-mcp-a873d95/src/zh_education_mcp/data.py :9
import httpx - net malkreide-zh-education-mcp-a873d95/src/zh_education_mcp/http_client.py :8
import socket - net (weak) malkreide-zh-education-mcp-a873d95/tests/_resolver_guard.py :24
import socket - net (weak) malkreide-zh-education-mcp-a873d95/tests/conftest.py :43
# Verschärfend: ``http_client`` macht ``import socket``, also IST - net (weak) malkreide-zh-education-mcp-a873d95/tests/test_live_resolver_guard.py :22
import socket - net (weak) malkreide-zh-education-mcp-a873d95/tests/test_read_fields.py :31
import httpx - net (weak) malkreide-zh-education-mcp-a873d95/tests/test_retry_policy.py :10
import socket - net (weak) malkreide-zh-education-mcp-a873d95/tests/test_schema_drift.py :11
import httpx - net (weak) malkreide-zh-education-mcp-a873d95/tests/test_server.py :5
import httpx
tool registrations 8
- zh_edu_list_schulgemeinden malkreide-zh-education-mcp-a873d95/src/zh_education_mcp/tools.py :109
- zh_edu_schulkreis_trend malkreide-zh-education-mcp-a873d95/src/zh_education_mcp/tools.py :173
- zh_edu_overview malkreide-zh-education-mcp-a873d95/src/zh_education_mcp/tools.py :278
- zh_edu_sek1_profil malkreide-zh-education-mcp-a873d95/src/zh_education_mcp/tools.py :362
- zh_edu_staatsangehoerigkeiten malkreide-zh-education-mcp-a873d95/src/zh_education_mcp/tools.py :448
- zh_edu_maturitaetsquote malkreide-zh-education-mcp-a873d95/src/zh_education_mcp/tools.py :542
- zh_edu_wohnort_trend malkreide-zh-education-mcp-a873d95/src/zh_education_mcp/tools.py :640
- zh_edu_mittelschulen malkreide-zh-education-mcp-a873d95/src/zh_education_mcp/tools.py :739
declared dependencies 15
- mcp@>=2.0.0,<3
- httpx@>=0.27.0
- pydantic@>=2.0.0
- pydantic-settings@>=2.0.0
- starlette@>=0.37.0,<2
- uvicorn@>=0.30.0
- structlog@>=24.1.0,<27
- pytest@>=8.0.0
- pytest-asyncio@>=0.23.0
- pytest-cov@>=5.0.0
- respx@>=0.21.0
- ruff@==0.16.1
- opentelemetry-sdk@>=1.20.0
- opentelemetry-exporter-otlp-proto-http@>=1.20.0
- opentelemetry-instrumentation-httpx@>=0.40b0