MCP Server for Swiss road mobility: shared vehicles, EV charging, DATEX II traffic & road counters, Park & Rail, and multimodal trip planning (car → train → destination). 12 tools, open data first.
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 13 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
road_charger_status
-
road_check_status
-
road_counter_sites
-
road_find_charger
-
road_find_sharing
-
road_mobility_snapshot
-
road_multimodal_plan
-
road_park_rail
-
road_reverse_geocode
-
road_search_sharing
-
road_sharing_providers
-
road_traffic_counters
-
road_traffic_situations
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 639d190 · analyzer v30 · 2w ago
danger signals1
- suspicious endpoint 169.254.169.254 (cloud metadata) malkreide-swiss-road-mobility-mcp-639d190/tests/test_egress.py :19
METADATA = "http://169.254.169.254/latest/meta-data/"
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 30
filesystem 2
- fs (weak) malkreide-swiss-road-mobility-mcp-639d190/scripts/check_version_sync.py :35
from pathlib import Path - fs (weak) malkreide-swiss-road-mobility-mcp-639d190/tests/test_version.py :12
from pathlib import Path
network 9
- net malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/api_infrastructure.py :22
import httpx - net malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/egress.py :14
- ``async_client(...)`` is a drop-in ``httpx.AsyncClient`` factory that wires - net malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/multimodal.py :27
import httpx - net malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/park_rail.py :35
import httpx - net malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/tracing.py :52
"""Set up the tracer provider and instrument httpx. Idempotent. - net malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/traffic_counters.py :24
import httpx - net malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/traffic_situations.py :19
import httpx - net (weak) malkreide-swiss-road-mobility-mcp-639d190/tests/test_tracing.py :7
import httpx - net (weak) malkreide-swiss-road-mobility-mcp-639d190/tests/test_unit.py :216
# geo_admin (uses per-call httpx.AsyncClient — respx intercepts globally)
secrets 2
- secrets malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/security.py :164
token = os.environ.get("MCP_AUTH_TOKEN") or None - secrets malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :131
return os.environ.get("OPENTRANSPORTDATA_API_KEY")
tool registrations 13
- road_find_sharing malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :299
- road_search_sharing malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :347
- road_sharing_providers malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :387
- road_find_charger malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :422
- road_charger_status malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :477
- road_check_status malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :517
- road_traffic_situations malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :746
- road_traffic_counters malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :803
- road_counter_sites malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :920
- road_park_rail malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :1135
- road_mobility_snapshot malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :1181
- road_multimodal_plan malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :1248
- road_reverse_geocode malkreide-swiss-road-mobility-mcp-639d190/src/swiss_road_mobility_mcp/server.py :1455
declared dependencies 11
- mcp@>=2.0.0,<3
- httpx@>=0.28.1,<1.0.0
- pydantic@>=2.13.4,<3.0.0
- pytest@>=9.0.3
- pytest-asyncio@>=1.4.0
- respx@>=0.23.1
- ruff@>=0.15.15
- opentelemetry-sdk@>=1.42.1
- opentelemetry-exporter-otlp-proto-http@>=1.42.1
- opentelemetry-instrumentation-httpx@>=0.63b1
- opentelemetry-instrumentation-asgi@>=0.63b1