← Back to search

io.github.malkreide/parlament-mcp

malkreide Scanned 1d ago

Swiss Federal Parliament Curia Vista OData API

C
65.8 / 100

Versions

0.3.3latest
first seen Jun 30, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 21

sprich
annotations: none low

ctx Context
oparl_list_bodies
annotations: none low

Kantone und Gemeindeparlamente auflisten und deren body_key ermitteln. Erster Schritt jeder Recherche: liefert die gültigen ``body_key``-Werte für alle anderen Tools. Deckt 26 Kantone und ~70 Gemeindeparlamente ab; die Bundesebene ist nicht enthalten. <example>search="Zürich" liefert u.a. '261' (Stadt Zürich, city), 'ZH' (Kanton Zürich, canton) und '230' (Winterthur, city).</example>

ctx string params ListBodiesInput
oparl_search_affairs
annotations: none low

Parlamentarische Geschäfte/Vorstösse einer Körperschaft durchsuchen. <use_case>Politische Recherche auf Kantons-/Gemeindeebene: hängige oder erledigte Vorstösse zu einem Thema finden.</use_case> <important_notes>``search_scope='texts'`` durchsucht den PDF-Volltext (nicht nur Titel/Metadaten). Ergebnisse standardmässig neueste zuerst (``sort_by='-begin_date'``).</important_notes> <example>body_key="261", search="Tagesschule", date_from="2024-01-01" → Vorstösse zu Tagesschulen im Gemeinderat der Stadt Zürich seit 2024.</example>

ctx string params SearchAffairsInput
oparl_get_affair
annotations: none low

Vollständige Details eines Geschäfts nach ID abrufen. <use_case>Nach einer Suche verwenden, um Langtitel, Status und – via ``expand`` – zugehörige Abstimmungen oder Personen zu erhalten.</use_case> <example>affair_id=334542, expand="votings" für ein Geschäft der Stadt Zürich samt Abstimmungen.</example>

ctx string params GetAffairInput
oparl_get_affair_documents
annotations: none low

Dokumente eines Geschäfts inkl. extrahiertem PDF-Volltext abrufen. Das Feld ``text`` enthält den extrahierten Volltext – das wertvollste Feld dieses Servers. Bei Überlänge wird NICHT stillschweigend gekürzt, sondern explizit mit ``text_truncated=true`` und ``text_total_chars`` markiert. <example>affair_id=334542, include_text=true → Weisungstext zu einem Tagesschul-Umbau der Stadt Zürich im Volltext.</example>

ctx string params GetAffairDocumentsInput
oparl_compare_bodies
annotations: none low

Ein Thema über viele Körperschaften hinweg vergleichen (Themenpräsenz). Zählt pro Körperschaft, wie viele Geschäfte zum Suchbegriff existieren, und gibt eine nach Trefferzahl sortierte Rangliste zurück – ideal, um zu sehen, wo ein Thema politisch aktiv ist. <example>search="Tagesschule", body_type="municipality" → In welchen Schweizer Städten (neben Zürich) sind Tagesschulen ebenfalls Thema?</example>

ctx string params CompareBodiesInput
oparl_search_persons
annotations: none low

Mandatsträger·innen einer Körperschaft suchen. <example>body_key="261", party="GLP", active=true → aktive GLP-Mitglieder im Gemeinderat der Stadt Zürich.</example>

ctx string params SearchPersonsInput
oparl_get_person
annotations: none low

Vollständiges Profil einer Person nach ID abrufen. <example>person_id=17429, expand="interests" für ein Mitglied des Kantons- rats Zürich samt Interessenbindungen.</example>

ctx string params GetPersonInput
oparl_get_person_interests
annotations: none low

Interessenbindungen einer bestimmten Person abrufen. Achtung Datenqualität: Rohdaten mit Parsing-Artefakten; ``type``, ``role_name`` und ``group`` sind häufig leer. Antwort trägt daher ``data_quality="unverified_source_data"``. <example>person_id=17429 → deklarierte Bindungen eines Zürcher Kantonsrats- mitglieds.</example>

ctx string params GetPersonInterestsInput
oparl_search_interests
annotations: none low

Interessenbindungen einer Körperschaft durchsuchen (Organisation → Personen). Für die Bundesebene (``body_key='CHE'``) ist stattdessen ``lobbywatch-mcp`` die geeignete Quelle (redaktionell geprüft, mit Branchen-Taxonomie). Achtung Datenqualität: Rohdaten mit Parsing-Artefakten (realer ZH-Datensatz enthält z.B. Jahreszahlen im Organisationsfeld). Antwort trägt ``data_quality="unverified_source_data"``. <example>body_key="ZH", search="Krankenkasse" → wer im Kanton Zürich eine Bindung zu einer Krankenkasse deklariert hat.</example>

ctx string params SearchInterestsInput
oparl_get_votings
annotations: none low

Abstimmungen zu einem Geschäft oder einer Körperschaft abrufen. Liefert je Abstimmung die Ergebnisse (Ja/Nein/Enthaltung/Abwesend), den Entscheid sowie – wichtig zur Interpretation – die Bedeutung von Ja/Nein. Einzelstimmen liefert ``oparl_get_voting_results`` (benötigt ``voting_id``). <example>body_key="261" für Abstimmungen im Gemeinderat der Stadt Zürich, oder affair_id=334542 für die Abstimmungen zu einem konkreten Geschäft.</example>

ctx string params GetVotingsInput
oparl_get_voting_results
annotations: none low

Individuelle Stimmen (Namensabstimmung) zu EINER Abstimmung abrufen. Skalierungs-Guardrail: Die Gesamttabelle enthält >47 Mio. Einzelstimmen – deshalb ist ``voting_id`` Pflicht und ``limit`` hart auf 500 gedeckelt. <example>voting_id=105130 → wie die einzelnen Mitglieder der Stadt Zürich abgestimmt haben (mit Fraktion und Partei).</example>

ctx string params GetVotingResultsInput
oparl_search_meetings
annotations: none low

Sitzungen einer Körperschaft in einem Zeitraum finden. <example>body_key="261", date_from="2024-01-01", date_to="2024-12-31" → Sitzungen des Gemeinderats der Stadt Zürich im Jahr 2024.</example>

ctx string params SearchMeetingsInput
oparl_source_status
annotations: none low

Erreichbarkeit der OpenParlData-API und Zustand des Body-Cache prüfen. Liefert Latenz, Zeitpunkt des letzten erfolgreichen Abrufs sowie Alter und Umfang des Body-Cache – nützlich zur Diagnose vor grösseren Recherchen.

ctx string params SourceStatusInput
parlament_search_business
annotations: none low

Parlamentarische Vorstösse suchen (Motionen, Interpellationen, Postulate usw.). Durchsucht Curia Vista Geschäftsdaten von ws.parlament.ch. <use_case>Politische Recherche zu Bildungs-, Datenschutz- oder Verwaltungsthemen; hängige Vorstösse zu KI in der Bildung, Digitalisierungsinitiativen oder beliebigen Politikthemen finden.</use_case> <important_notes>Titel-Suche via OData substringof() (gross-/klein-sensitiv). Maximal 100 Treffer pro Aufruf; mit `offset` paginieren.</important_notes> <example>keyword='KI', keyword2='Schule', status='Eingereicht'</example>

ctx string params SearchBusinessInput
parlament_get_business
annotations: none low

Vollständige Details eines parlamentarischen Vorstosses nach Curia Vista ID abrufen. <use_case>Nach einer Suche verwenden, um vollständige Informationen inkl. Ausgangslage, Vorstosstext und Antwort des Bundesrats zu erhalten.</use_case> <important_notes>Benötigt die numerische Geschäfts-ID (aus parlament_search_business). `found=false` bei unbekannter ID.</important_notes>

ctx string params GetBusinessInput
parlament_search_members
annotations: none low

National- und Ständeräte suchen. <use_case>Alle Zürcher Ratsmitglieder ('ZH') oder Mitglieder einer bestimmten Partei finden. Synergie: mit parlament_search_business kombinieren, um Urheber von Vorstössen zu identifizieren.</use_case> <important_notes>`active_only=True` (Default) liefert nur amtierende Mitglieder. Kanton als 2-Buchstaben-Kürzel.</important_notes>

ctx string params SearchMembersInput
parlament_get_votes
annotations: none low

Parlamentarische Abstimmungen (im Rat) mit Ja/Nein-Bedeutung abrufen. <use_case>Zeigt, wie der Rat über Themen wie KI-Regulierung, Bildungsfinanzierung oder Digitalisierungsprojekte abgestimmt hat.</use_case> <important_notes>`meaning_yes`/`meaning_no` erklären, was ein Ja/Nein im konkreten Geschäft bedeutet – wichtig zur korrekten Interpretation.</important_notes>

ctx string params GetVotesInput
parlament_get_sessions
annotations: none low

Aktuelle parlamentarische Sessionen mit Daten auflisten. <use_case>Session-IDs aus dieser Liste zum Filtern von Abstimmungen oder Transkripten verwenden.</use_case> <important_notes>Session-Namen können für sehr aktuelle Sessionen `null` sein – dann die Session-ID verwenden.</important_notes>

ctx string params GetSessionsInput
parlament_search_transcripts
annotations: none low

Wörtliche Wortmeldungen aus den Ratsdebatten durchsuchen (Amtliches Bulletin). Liefert **kurze, zitierfähige Auszüge** (kein Volltext) mit korrekter AB-Zitation und stabiler Quell-URL. Für den Wortlaut eines einzelnen Votums danach `parlament_get_transcript(transcript_id=…)` verwenden. <use_case>«Was hat Nationalrätin X in der Frühjahrssession 2024 zur Volksschule gesagt?» – Sprecher, Session, Rat, Geschäft oder Datumsfenster kombinieren. Synergie mit fedlex-mcp: vom Gesetzestext zur Debatte.</use_case> <important_notes>Nur echte Wortmeldungen (keine Abstimmungszeilen). Der `Language`-Filter dedupliziert die Editionen und blendet keine französisch-/italienischsprachigen Voten aus – die reale Sprache steht in `language`. Abdeckung ab 1999-12-06. Für beste Latenz `session_id`, `business_number` oder ein Datumsfenster mit einem freien `keyword` kombinieren.</important_notes> <example>speaker_name='Munz', session_id=5202, keyword='Volksschule'</example>

ctx string params SearchTranscriptsInput
parlament_get_transcript
annotations: none low

Den vollen Wortlaut **eines einzelnen** Votums nach Transkript-ID abrufen. <use_case>Nach einer Suche mit parlament_search_transcripts den kompletten Wortlaut eines konkreten Votums holen – zitierfähig, mit stabiler URL.</use_case> <important_notes>Ausgabe ist gedeckelt (`max_chars`); bei Kürzung ist `is_excerpt=True` gesetzt und `note`/`next_offset` erklären, wie die Fortsetzung zu laden ist. Kein stilles Kürzen. Der Wortlaut wird nie durch eine Zusammenfassung ersetzt.</important_notes>

ctx string params GetTranscriptInput

Permissions 4

network medium
Server uses network capabilities via: httpx, urllib
filesystem low
Server uses filesystem capabilities via: open(), os, pathlib, shutil, tempfile
shell high
Server uses shell capabilities via: subprocess
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 56

low
Tool 'sprich' has no annotations annotation_checker · 100%
low
Tool 'oparl_list_bodies' has no annotations annotation_checker · 100%
low
Tool 'oparl_search_affairs' has no annotations annotation_checker · 100%
low
Tool 'oparl_get_affair' has no annotations annotation_checker · 100%
low
Tool 'oparl_get_affair_documents' has no annotations annotation_checker · 100%
low
Tool 'oparl_compare_bodies' has no annotations annotation_checker · 100%
low
Tool 'oparl_search_persons' has no annotations annotation_checker · 100%
low
Tool 'oparl_get_person' has no annotations annotation_checker · 100%
low
Tool 'oparl_get_person_interests' has no annotations annotation_checker · 100%
low
Tool 'oparl_search_interests' has no annotations annotation_checker · 100%
low
Tool 'oparl_get_votings' has no annotations annotation_checker · 100%
low
Tool 'oparl_get_voting_results' has no annotations annotation_checker · 100%
low
Tool 'oparl_search_meetings' has no annotations annotation_checker · 100%
low
Tool 'oparl_source_status' has no annotations annotation_checker · 100%
low
Tool 'parlament_search_business' has no annotations annotation_checker · 100%
low
Tool 'parlament_get_business' has no annotations annotation_checker · 100%
low
Tool 'parlament_search_members' has no annotations annotation_checker · 100%
low
Tool 'parlament_get_votes' has no annotations annotation_checker · 100%
low
Tool 'parlament_get_sessions' has no annotations annotation_checker · 100%
low
Tool 'parlament_search_transcripts' has no annotations annotation_checker · 100%
low
Tool 'parlament_get_transcript' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: pydantic@2.0.0 (GHSA-mr82-8j83-vxmv) dependency_analyzer · 95%
medium
Vulnerable dependency: pydantic@2.0.0 (PYSEC-2026-1812) dependency_analyzer · 95%
medium
Vulnerable dependency: opentelemetry-api@1.21.0 (GHSA-xcq7-p3pf-p88h) dependency_analyzer · 95%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: sprich manifest_parser · 90%
info
Tool: oparl_list_bodies manifest_parser · 90%
info
Tool: oparl_search_affairs manifest_parser · 90%
info
Tool: oparl_get_affair manifest_parser · 90%
info
Tool: oparl_get_affair_documents manifest_parser · 90%
info
Tool: oparl_compare_bodies manifest_parser · 90%
info
Tool: oparl_search_persons manifest_parser · 90%
info
Tool: oparl_get_person manifest_parser · 90%
info
Tool: oparl_get_person_interests manifest_parser · 90%
info
Tool: oparl_search_interests manifest_parser · 90%
info
Tool: oparl_get_votings manifest_parser · 90%
info
Tool: oparl_get_voting_results manifest_parser · 90%
info
Tool: oparl_search_meetings manifest_parser · 90%
info
Tool: oparl_source_status manifest_parser · 90%
info
Tool: parlament_search_business manifest_parser · 90%
info
Tool: parlament_get_business manifest_parser · 90%
info
Tool: parlament_search_members manifest_parser · 90%
info
Tool: parlament_get_votes manifest_parser · 90%
info
Tool: parlament_get_sessions manifest_parser · 90%
info
Tool: parlament_search_transcripts manifest_parser · 90%
info
Tool: parlament_get_transcript manifest_parser · 90%
info
Transport: streamable-http manifest_parser · 80%
info
Required env vars (12) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 90%
low
Permission: filesystem access detected permission_analyzer · 90%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%