MCP server for Swiss labor market data – unemployment, job seekers, open positions & occupational accidents (SECO/AMSTAT, SSUV)
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http · sse
verified
reported
listed in the official MCP registry counts 8 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
seco_get_dataset
-
seco_get_job_seekers
-
seco_get_monthly_report_url
-
seco_get_unemployment_by_occupation
-
seco_get_unemployment_overview
-
seco_get_youth_unemployment
-
seco_list_cantons
-
seco_search_datasets
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit ca1f7bf · analyzer v33 · 1w ago
skills & prompt files 1
- agent-rules malkreide-seco-labor-mcp-ca1f7bf/CLAUDE.md
danger signals1
- suspicious endpoint 169.254.169.254 (cloud metadata) malkreide-seco-labor-mcp-ca1f7bf/tests/test_unit.py :657
await _validate_external_url("https://169.254.169.254/latest/meta-data/")
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 20
filesystem 10
- fs (weak) malkreide-seco-labor-mcp-ca1f7bf/scripts/check_ruff_pin.py :35
import shutil - fs (weak) malkreide-seco-labor-mcp-ca1f7bf/scripts/check_version_sync.py :35
from pathlib import Path - fs (weak) malkreide-seco-labor-mcp-ca1f7bf/scripts/classify_live_run.py :55
from pathlib import Path - fs (weak) malkreide-seco-labor-mcp-ca1f7bf/scripts/record_fixtures.py :40
from pathlib import Path - fs (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/fixture_data.py :18
from pathlib import Path - fs (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/test_classify_live_run.py :21
from pathlib import Path - fs (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/test_recorded_fixtures.py :801
from pathlib import Path - fs (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/test_response_shape.py :155
from pathlib import Path - fs (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/test_retry_policy.py :127
from pathlib import Path - fs (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/test_werkzeug_versionen.py :16
import pathlib
shell / exec 2
- shell (weak) malkreide-seco-labor-mcp-ca1f7bf/scripts/check_ruff_pin.py :36
import subprocess - shell (weak) malkreide-seco-labor-mcp-ca1f7bf/scripts/record_fixtures.py :36
import subprocess
network 9
- net (weak) malkreide-seco-labor-mcp-ca1f7bf/scripts/record_fixtures.py :43
import httpx - net malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/retry_policy.py :22
import httpx - net malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/server.py :28
import socket - net malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/uvg.py :35
from urllib.parse import urlsplit - net (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/test_recorded_fixtures.py :24
import httpx - net (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/test_response_shape.py :22
import httpx - net (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/test_retry_policy.py :19
import httpx - net (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/test_unit.py :10
import httpx - net (weak) malkreide-seco-labor-mcp-ca1f7bf/tests/test_uvg.py :15
import httpx
tool registrations 8
- seco_search_datasets malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/server.py :725
- seco_get_dataset malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/server.py :816
- seco_get_unemployment_overview malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/server.py :923
- seco_get_youth_unemployment malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/server.py :1384
- seco_get_job_seekers malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/server.py :1563
- seco_get_monthly_report_url malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/server.py :1788
- seco_get_unemployment_by_occupation malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/server.py :1882
- seco_list_cantons malkreide-seco-labor-mcp-ca1f7bf/src/seco_labor_mcp/server.py :2002
declared dependencies 11
- fastmcp@>=1.0.0,<4
- httpx@>=0.27.0,<1
- pydantic@>=2.0.0,<3
- pypdf@>=5.0.0,<7
- openpyxl@>=3.1.0,<4
- pytest@>=8.0.0
- pytest-asyncio@>=0.24.0
- pytest-cov@>=5.0.0
- respx@>=0.21.0
- .@*
- ruff@==0.16.1