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

With the fixture flags both interfaces answer from recorded files, without network. Without them the gateway asks the federal public endpoints.

Download

Source
not yet The source becomes public with the publication lane; the repository is not yet switched public. · mcp/gateway
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

Dependencies

Needs
fedlex-Engine prepared · Politikdaten-Engine prepared · API-Spine prepared
Needed by
A2A-Agent 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
Capabilities in the inventory 52
52, aufgeteilt auf 8 Domänen: 35 fedlex, 8 lindas, 3 meta, 2 facts, je 1 directory, manifest, publish, standard
recounted: jq 'getpath([]) | length' mcp/gateway/tool-inventory.json
mcp/gateway/tool-inventory.json
Tests 48, none of them skipped (5 in lib, 14 e2e, 14 http_shell, 6 inventory, 3 policy, 6 resource) mcp/gateway
What holds the inventory from drifting Three surfaces, one source: the tool router, the committed tool-inventory.json and the API spine's REST endpoint must be identical — as a test and again as a diff in the check gate mcp/gateway
What the budget does A hard weighted cap per session (--budget n): a local register read weighs 1, every call into a mounted domain (fedlex.*, lindas.*) weighs 2; it never recovers, and without the flag it is unlimited mcp/gateway
What the rate limit does A token bucket per client, in the same weight units: 60 per minute by default with a burst of 20 (never below 2, or no domain call would get through); it recovers on its own, the refusal names retry_after_ms, and the counters live in process memory only mcp/gateway
Public endpoint Not served. The identifier mcp.openhelvetia.swiss/mcp is in the code; the two own entries have been in the register since 02.09.2026 and carry the verification state «never checked» until the endpoint answers mcp/gateway

What is missing

  • until in operation: The public endpoint is missing: the streamable-HTTP door exists in the code, but there is no zone, no route and no deployment — and the daily liveness probe as well as the publication of both prepared entries hang on exactly that. Budget and rate counters live in process memory only, no authorization server exists for the declared RFC 9728 chain, and the orchestrator whose first step two-stage discovery is has not been built.

Documentation