Start now

Requirements:

  • Rust (stable via rustup) and Git; every command runs from the root of the corpus checkout.
cargo run --locked --manifest-path mcp/gateway/Cargo.toml -- --root . --http 8700 --fedlex-fixtures mcp/servers/fedlex/tests/fixtures --lindas-fixtures mcp/servers/lindas/tests/fixtures

Expected: gateway on 127.0.0.1:8700

The server speaks MCP over stdin/stdout and has no network address of its own; the simplest start is behind the gateway with fixtures. Directly: cargo run --locked --manifest-path mcp/servers/fedlex/Cargo.toml -- --fixtures mcp/servers/fedlex/tests/fixtures, then an MCP client connects over stdio.

Download

Source
https://github.com/OpenHelvetia/mcp-fedlex-oh · mcp/servers/fedlex
Release
not yet No tagged release yet; the first follows the publication lane.
Container image
not yet No container image published yet.
Crate
not applicable — the module is not a library crate
Fetch the source
git clone https://github.com/OpenHelvetia/mcp-fedlex-oh

Dependencies

Needs
none
Needed by
MCP-Gateway prepared
Documentation
the page in the documentation

State and evidence

prepared — built and tested, not publicly served.

Every piece of evidence carries its source. Values marked «recounted» are counted from the source at every build; if the figure differs, the build fails.

Measure Value Source
Tools 35
35 (der 8er-Spine von TOOLSET-v0.md, 12 Navigator-Werkzeuge, 13 der zweiten Welle, dazu das Zitat-Paar)
recounted: jq '[getpath([])[] | select(.domain == "fedlex")] | length' mcp/gateway/tool-inventory.json
mcp/gateway/tool-inventory.json
Tests 114 run (31 in lib, 76 e2e, 7 rule gate); 15 more are deliberate recording runs marked #[ignore] that go live to the Confederation mcp/servers/fedlex
Rulebook and conformance table docs/reference/fedlex-data-rules.md: 123 rules (80 JOLux rules J…, 43 Akoma Ntoso rules X…) — 99 honoured, 15 untested, 3 violated, 6 not_applicable mcp/servers/fedlex
The gate over the table mcp/servers/fedlex/tests/rules_table.rs, 7 running tests: an «honoured» row must name a function marked #[test]/#[tokio::test] without #[ignore], an «untested» row may not carry a dead name, and a status outside the five permitted ones is an error mcp/servers/fedlex
Fixture mechanism 102 recorded files (94 JSON SPARQL answers, 8 Akoma Ntoso XML) under SEMANTIC keys — tool plus parameters, never query bytes; INDEX.txt holds exactly 102 lines with key and recording date, so a rewritten query has to be re-recorded instead of silently missing the fixture mcp/servers/fedlex
Vendored upstream crates Three: fedlex-akn, fedlex-jolux, fedlex-core under third_party/mcp-fedlex, Apache-2.0, byte-identical at pin 64e0ec3fdce3cc6841fa9f659456a520c1e21083 (upstream commit of 09.07.2026), with a SHA-256 per crate in PROVENANCE.md mcp/servers/fedlex

What is missing

  • until in operation: Three rules stand open as «violated» rather than as a green tick: find_treaties still searches a treaty as one contiguous string and misses it under its official multi-word title (J3.5); get_article_history does not see impacts that hang as a mere comment at act level (J6.3); and the vendored text writer produces nothing at all for a <br/> — the census over the eight recorded versions finds 74 line breaks, 21 of which run two words together (X6.1). A further 15 rules are untested, there is no public endpoint, and the semantic tier above the base has not been built.

History

  • 2026-09-03 Source published as its own repository on GitHub (publication lane, wave 1).

Documentation