Published on PyPI + MCP Registry (io.github.matematicsolutions/lu-eli-mcp). Run without cloning:
uvx lu-eli-mcpConfigure your MCP client (stdio):
{ "mcpServers": { "lu-eli-mcp": { "command": "uvx", "args": ["lu-eli-mcp"] } } }Smart App Control blocks unsigned executables, which covers uvx.exe, pip.exe
and the lu-eli-mcp.exe launcher that pip writes at install time. The python.exe and
py.exe from the python.org installer are signed by the Python Software
Foundation, so running the module through the interpreter works:
python -m pip install lu-eli-mcp
python -m lu_eli_mcppip.exe is blocked for the same reason, so install with python -m pip, not
pip install. If python is not on PATH, use the Windows launcher: py -3 -m lu_eli_mcp.
{ "mcpServers": { "lu-eli-mcp": { "command": "python", "args": ["-m", "lu_eli_mcp"] } } }Do not turn Smart App Control off to work around this - it cannot be re-enabled without reinstalling Windows.
Building from source: see Install.
An MCP server for Luxembourg legislation via Legilux open data
(data.legilux.public.lu). It fetches act metadata and full Akoma Ntoso text with verifiable
citations. Part of the eu-legal-mcp line of national legal connectors by
MateMatic.
Legilux is genuinely ELI-native: every act is addressed by its ELI and described as jolux RDF
over a FRBR model (Work / Expression / Manifestation), with full text as Akoma Ntoso XML. Every
response carries a native eli_uri, a human_readable_citation and a resolvable source_url.
Read-only. The server only queries Legilux and writes a local audit log. It never modifies official text.
| Tool | What it does |
|---|---|
lu_get_act(eli) |
Metadata for an act by its ELI (full URI or bare eli/... path). Returns the native eli_uri, title, dates, in-force status, available languages / manifestations, and the act's cites / modifies / repeals links. |
lu_get_text(eli, language, file_format) |
Verbatim text in one language (default fr) and file_format (default xml, Akoma Ntoso). |
There is no free-text search: Legilux exposes no HTTP search endpoint. Discover acts by ELI
coordinates (from legilux.public.lu) or by following the cites / modifies / repeals ELIs that
lu_get_act returns. Luxembourg is multilingual, so titles and text may be French or German; the
languages field shows what exists for a given act.
Legilux is keyless. Configuration is optional:
| Variable | Meaning |
|---|---|
LU_ELI_BASE_URL |
Legilux data host (default https://data.legilux.public.lu). |
LU_ELI_CACHE_DIR |
Disk cache dir (default ~/.matematic/cache/lu-eli). |
LU_ELI_AUDIT_DIR |
Audit log dir (default ~/.matematic/audit). |
Copy .mcp.json.example to your MCP client config.
py -3.13 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]" # Windows
# or: python -m pip install -e ".[dev]" # POSIXpytest tests/test_instructions_drift.py tests/test_parse.py # offline
pytest tests/test_smoke.py -v # live, hits LegiluxApache-2.0. Legilux content is © the Grand Duchy of Luxembourg; this software only retrieves and cites it.