mcpField
B
be-eli-mcp

be-eli-mcp

Local
github.com/matematicsolutionsLegal & Government1Updated 5w ago

About be-eli-mcp

be-eli-mcp is a read-only MCP server for retrieving Belgian legislation from the official Moniteur Belge. It uses ELI coordinates and returns act metadata, verbatim consolidated text, and citation details; acts can be discovered by year listing rather than free-text search.

Key features

  1. 01Retrieve act metadata by ELI coordinates
  2. 02Fetch consolidated text in French, Dutch, or German
  3. 03Browse annual listings by act type
  4. 04Return ELI URI and source citation
  5. 05Declare coverage and documented gaps

Use cases

  1. 01Verify details for a cited Belgian act
  2. 02Retrieve a specific act's consolidated text
  3. 03Browse legislation from a selected year
  4. 04Provide source-linked citations for legal research

MCP support

The MCP server exposes tools for retrieving Belgian act metadata and text, browsing annual listings, and checking coverage. It queries the official ejustice.just.fgov.be source and does not modify legislation.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"matematicsolutions-be-eli": {
"command": "uvx",
"args": [
"be-eli-mcp"
]
}
}
}
Run commanduvx be-eli-mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypibe-eli-mcp0.2.4

Tools

4

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
dayintegerYespublication day, 1-31.
yearintegerYespublication year, e.g. ``2020``.
monthintegerYespublication month, 1-12.
numacstringYesthe NUMAC identifier (Belgian legislative numbering system), e.g. ``2020040054``.
doc_typeenumYesone of ``loi``, ``decret``, ``ordonnance``, ``arrete``, ``constitution``.loi | decret | ordonnance | arrete | constitution

Details

From the project README

be-eli-mcp

An MCP server for Belgian legislation via [Moniteur Belge / Belgisch Staatsblad] (https://www.ejustice.just.fgov.be), the official gazette of the Belgian Federal Public Service Justice. It fetches act metadata and full text by ELI coordinates, with verifiable citations. Part of the eu-legal-mcp line of national legal connectors by MateMatic.

Belgian legislation is addressed by ELI coordinates - type / year / month / day / numac (the Belgian legislative numbering system) - at https://www.ejustice.just.fgov.be/eli/{type}/{yyyy}/{mm}/{dd}/{numac}/justel. Every response carries a native eli_uri, a human_readable_citation and a source_url.

Read-only. The server only queries ejustice.just.fgov.be and writes a local audit log. It never modifies official text.

Belgium is trilingual (French / Dutch / German). human_readable_citation defaults to the French form by LDH convention; use be_get_text(language=...) for Dutch (Belgisch Staatsblad) or German. See CONSTITUTION.md Art. 4 for the full caveat.

Tools

ToolWhat it does
be_get_act(doc_type, year, month, day, numac)Metadata for an act by its ELI coordinates. doc_type is one of loi, decret, ordonnance, arrete, constitution. Returns the native eli_uri, title, source authority, publication date, entry-into-force date, table of contents, and the citation contract.
be_get_text(doc_type, year, month, day, numac, language="fr")The verbatim consolidated text ("Texte"/"Tekst" section) in fr (default), nl or de.
be_list_year(doc_type, year)Browse a year's listing for one doc_type, to discover NUMAC coordinates. Titles in this listing are best-effort (may be None); call be_get_act for the authoritative title.
be_coverage()Declare what this connector covers, when each family was captured, and - explicitly - what it does NOT cover. Every gap carries a fallback.

There is no free-text search: ejustice.just.fgov.be exposes no keyword-search API. Discover acts by ELI coordinates (from a citation you already hold) or by browsing be_list_year.

Configuration

ejustice.just.fgov.be is keyless. Configuration is optional:

VariableMeaning
BE_ELI_BASE_URLejustice host (default https://www.ejustice.just.fgov.be).
BE_ELI_CACHE_DIRDisk cache dir (default ~/.matematic/cache/be-eli).
BE_ELI_AUDIT_DIRAudit log dir (default ~/.matematic/audit).

Copy .mcp.json.example to your MCP client config.

Install

py -3.13 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"   # Windows
# or: python -m pip install -e ".[dev]"                  # POSIX
Windows 11 with Smart App Control

Smart App Control blocks unsigned executables, which covers uvx.exe, pip.exe and the be-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 be-eli-mcp
python -m be_eli_mcp

pip.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 be_eli_mcp.

{ "mcpServers": { "be-eli-mcp": { "command": "python", "args": ["-m", "be_eli_mcp"] } } }

Do not turn Smart App Control off to work around this - it cannot be re-enabled without reinstalling Windows.

Tests

pytest tests/test_instructions_drift.py tests/test_parse.py   # offline
pytest tests/test_smoke.py -v                                 # live, hits ejustice.just.fgov.be

Licence

Apache-2.0. Moniteur Belge / Belgisch Staatsblad content is © the Belgian federal state; this software only retrieves and cites it. See CONSTITUTION.md Art. 1 for a note on the licence status of the source data (widely described as CC0 by third-party catalogs; not independently re-verified against ejustice.just.fgov.be's own terms page in this project).

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.