openlex-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Host to bind the HTTP server (default: 127.0.0.1). | 127.0.0.1 |
| MCP_PORT | No | Port to bind the HTTP server (default: 8000). | 8000 |
| MCP_CORS_ORIGINS | No | Comma-separated list of allowed CORS origins (e.g., https://claude.ai). Defaults to empty (no cross-origin access). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| openlex__zhlaw_search_lawsA | Volltextsuche in allen Zürcher Gesetzen mit FTS5-Ranking. Allgemeine Suche nach einem Rechtsbegriff über alle ~970 kantonalen Gesetze. Wähle dieses Tool wenn das Rechtsgebiet unbekannt ist. Für das Bildungsrecht (412.x) ist openlex__zhlaw_find_education_laws schneller und präziser. Um Artikel innerhalb eines bekannten Gesetzes zu finden, nutze openlex__zhlaw_search_articles. FTS5-Syntax: AND, OR, NOT, Phrasensuche "...". Ergebnisse nach BM25-Relevanz sortiert. Max 50 Treffer pro Aufruf (limit-Parameter). sr_prefix filtert nach Rechtsgebiet (412=Bildung, 331=Steuern, 700=Bau). Sucht im lokalen Cache — Aktualität der Metadaten via openlex__zhlaw_get_law_metadata prüfen. query='Elternrat OR Elternmitwirkung', sr_prefix='412', limit=10 |
| openlex__zhlaw_get_lawA | Ruft ein Zürcher Gesetz anhand der Ordnungsnummer oder Abkürzung ab. Wenn die Ordnungsnummer oder Abkürzung eines Gesetzes bereits bekannt ist und Metadaten oder Volltext abgerufen werden sollen. Um ein Gesetz erst zu finden, openlex__zhlaw_search_laws oder openlex__zhlaw_find_education_laws vorschalten. Unterstützt LS-Nummern ('412.100') und Abkürzungen ('VSG'). include_content=True liefert den Volltext (bis 5000 Zeichen, dann truncated=True). Bei Truncation: openlex__zhlaw_get_article für einzelne Artikel verwenden. Wichtige Gesetze: VSG, LPG, PBG, StG, KV. identifier='VSG', include_content=False |
| openlex__zhlaw_get_articleA | Extrahiert einen einzelnen Artikel aus einem Zürcher Gesetz. Wenn der genaue Wortlaut eines bestimmten Artikels benötigt wird. Voraussetzung: Gesetz und Artikelnummer sind bekannt. Um zuerst relevante Artikel zu finden: openlex__zhlaw_search_articles nutzen. Unterstützt Standard-Artikelnummern (28), Buchstaben-Artikel (28a) und Bis-Artikel (28bis). Liefert Titel, alle Absätze und Volltext des Artikels. Gibt count=0 zurück wenn der Artikel nicht existiert — Artikelnummer ohne 'Art.' angeben (nur die Zahl). law_identifier='VSG', article_number='28' |
| openlex__zhlaw_list_lawsA | Listet Zürcher Gesetze auf mit optionalem Filter nach Rechtsgebiet. Wenn eine strukturierte Übersicht aller Gesetze eines Rechtsgebiets benötigt wird (z.B. alle aktiven Bildungsgesetze). Für gezielte Textsuche ist openlex__zhlaw_search_laws besser; für reines Bildungsrecht openlex__zhlaw_find_education_laws. sr_prefix filtert nach Ordnungsnummer-Prefix (412=Bildung, 331=Steuern, 700=Bau, 131=Verfassung, 810=Gesundheit). active_only=True blendet aufgehobene Gesetze aus. Unterstützt Paginierung via offset. Gibt Titel, Abkürzung, SR-Nummer und Status zurück — keinen Volltext. sr_prefix='412', active_only=True, limit=50 |
| openlex__zhlaw_find_education_lawsA | Sucht gezielt im Zürcher Bildungsrecht (Ordnungsnummern 412.x). Bevorzuge dieses Tool gegenüber openlex__zhlaw_search_laws wenn die Anfrage klar im Bildungsbereich liegt (Schule, Lehrpersonen, Kindergarten, Sonderpädagogik, Tagesstrukturen). Schneller und präziser als die allgemeine Suche, da nur die 412.x-Serie (VSG, VSV, LPG, LPVO, VSM u.a.) durchsucht wird. Sucht ausschliesslich in aktiven 412.x-Gesetzen. Bei keinen Treffern: automatischer Fallback auf alle Rechtsgebiete mit Hinweis im message- Feld. Für Artikel innerhalb eines gefundenen Gesetzes: openlex__zhlaw_search_articles. Synergie: Fundstelle + swiss-courts-mcp → Rechtsprechung finden. query='Elternrat', limit=10 |
| openlex__zhlaw_search_articlesA | Durchsucht alle Artikel eines bestimmten Gesetzes nach einem Begriff. Wenn bekannt ist, in welchem Gesetz gesucht werden soll, aber nicht welcher Artikel relevant ist. Liefert alle Treffer-Artikel mit Inhalt. Für einen einzelnen Artikel mit bekannter Nummer: openlex__zhlaw_get_article. Parst das Gesetz in einzelne Artikel und durchsucht Titel und Inhalt. Suche ist case-insensitive, kein FTS5 (einfaches Substring-Match). Gibt count=0 wenn kein Artikel den Begriff enthält. Benötigt Volltext im Cache — bei fehlendem Inhalt: Hinweis im message-Feld. law_identifier='VSG', query='Elternrat' |
| openlex__zhlaw_get_law_metadataA | Ruft aktuelle Metadaten eines Gesetzes live von zh.ch ab. Wenn der aktuelle Stand eines Gesetzes auf zh.ch geprüft werden soll — z.B. ob es kürzlich geändert wurde, welche PDF-Version aktuell gilt oder welche ZH-Lex URL direkt verlinkt werden kann. Einziges Tool mit Live-HTTP-Aufruf; alle anderen Tools lesen den lokalen Cache. Macht einen echten HTTP-Request an www.zh.ch (ca. 1–3 s). Erfordert Netzwerkzugang. Liefert: Seitentitel, PDF-Links, Änderungsdatum, ZH-Lex URL. Bei 404 oder Timeout: found=False mit Fehlerdetail im error-Feld. Nur Ordnungsnummern akzeptiert (kein Abkürzungs-Lookup). sr_number='412.100' |
| openlex__zhlaw_update_cacheA | Aktualisiert den lokalen Cache der Zürcher Gesetzesdaten. Nur aufrufen wenn der Cache explizit neu geladen werden soll. Der Cache wird automatisch beim Start befüllt und ist 24 Stunden gültig — manuelles Update ist selten nötig. Lädt ~970 Gesetze von HuggingFace (rcds/swiss_legislation) in die lokale SQLite-DB mit FTS5-Index (~25 s erster Lauf). force=False überspringt den Download wenn Cache <24h alt (gibt status='cache_fresh' zurück). force=True erzwingt Neudownload. Erfordert Internetzugang zu HuggingFace. ACHTUNG — dieses Werkzeug macht die GESETZE nicht aktueller. Es lädt denselben Datensatz erneut, und der ist eingefroren: Die jüngste Fassung darin stammt vom 2023-01-01 (gemessen am 2026-08-08; der Datensatz selbst wurde zuletzt am 2024-10-10 angefasst). Bei Zweifeln an der Aktualität eines Wortlauts hilft nur der ZH-Lex-Permalink, nicht dieses Werkzeug. force=False |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool targets a distinct action (list, search, get, update cache), but find_education_laws and search_laws (especially with sr_prefix='412') overlap, as do get_law and get_law_metadata in returning metadata. Descriptions explicitly guide selection, reducing practical confusion.
All names use snake_case with a consistent zhlaw_ prefix and verb_noun pattern, making them predictable. The only minor inconsistency is using 'find' for one search operation while others use 'search'.
Eight tools are well-scoped for Zurich legal research, covering listing, searching, retrieving, and cache maintenance without redundancy. Each tool earns its place.
The surface covers core legal research workflows: list laws, search laws/articles, retrieve laws/articles, live metadata, and cache update. A minor gap is the lack of bulk article retrieval for large laws (get_law truncates at 5000 chars), though get_article works around this.