Documentation

Overview

Tutorials
How-to guides
Infrastructure
Reference
Explanation
On this page

What it does

The fedlex server reads federal law where the Confederation publishes it: over the public SPARQL endpoint fedlex.data.admin.ch/sparqlendpoint and the Akoma Ntoso versions in the same filestore. 35 tools — resolve an SR number, list the versions of an act, read an article in its wording, check a quote against the norm text that was read, build the canonical citation — and every answer carries its provenance and the moment it was really retrieved. The data knowledge came before the server: 123 rules from two rulebooks, and for each one a conformance table says whether this server honours it, contradicts it or merely happens not to be tested. A test parses that table: a row claiming «honoured» must name a test that exists and actually runs — «it looks right» is untested, never honoured. What it refuses to do: it invents no text, a cached act is never served in place of an answer the graph refused, and it makes at most one polite request at a time to the federal host — two a second, beyond that a typed refusal rather than a queue.

Run it yourself

You need:

  • Rust (stable via rustup) and Git; every command runs from the root of the corpus checkout.

From the root of the corpus checkout, line by line:

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

Then you should see:

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.

Test

cargo test --locked --manifest-path mcp/servers/fedlex/Cargo.toml
  • Recorded fixtures: mcp/servers/fedlex/tests/fixtures
  • Runs without network: every answer comes from the repository, the result is the same every run.

Call

  • Public: not yet — No public endpoint: zone, route and deployment are not switched on.
  • Local: über das Gateway: POST http://127.0.0.1:8700/tool/fedlex.

Contracts

  • Tool contract v1 mcp/servers/fedlex/TOOLSET-v1.md
  • Rulebook docs/reference/fedlex-data-rules.md
  • Engine manifest mcp/servers/fedlex/engine.manifest.json

The fedlex rows of the tool list

curl -s http://127.0.0.1:8700/tools

Response (excerpt):

[{"id":"directory.get","domain":"directory","summary":"The directory envelope (v0.2, authority: manifest). …","weight":1}, … 52 rows]

Contribute

Changes go through merge requests and the same gates as the association's own: formatting, Clippy without warnings, tests, seal and drift checks. Security reports, in confidence, to [email protected].

The base tier costs nothing; what the operation lives on is under About us, Financing.

Module card

State, evidence, download and dependencies are on the infrastructure page: fedlex-Engine.