Lex — Temporal Luxembourg and EU Law is a remote MCP server that gives an AI agent 10 tools, among them article_history, as_of, changes_in_period. It answers at https://law.soufien.lu/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 8 of 10 times since 5 September 2026; the last check, on 18 October 2026, succeeded.
Temporal search and comparison for official Luxembourg and reviewed EU law, with provenance.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
article_history | Every distinct text ONE provision (article/annex) has had on its publisher timeline, plus lifecycle events (inserted/removed/renumbered, renumbering detected mechanically by identical text hash). Read timeline_semantics before calling an in Inputs: work, publisher, anchor, language, from_date, to_date |
as_of | The state of one document as it stood on one date. Pure lookup, no ranking. mode=outline lists provisions without text and may be narrowed with anchors; mode=select returns only the named anchors' text; mode=full (default) returns the whole Inputs: work, date, version_key, publisher, language, mode |
changes_in_period | ACROSS the corpus: which works gained new versions between two dates, how many each, and when — the aggregate counterpart of diff/timeline (which cover ONE work). Use for "what changed between 2025 and 2026", "which laws changed most during Inputs: from_date, to_date, publisher, jurisdiction, document_type, source_class |
cited_by | Which held provision versions contain captured publisher cross-references to this work. This reverse lookup reports the publisher references Lex captured; it does not classify their relationship type or assess current legal effect. Inputs: work, limit |
coverage | What we hold and what we lack, tier by tier: counts, date ranges, history_begins, known gaps. This tool exists to say what we do NOT have. Inputs: publisher |
diff | What changed between two dates for one work: which publisher versions cover the selected dates and, where both texts are held, retrieve them via as_of to compare. An optional held article anchor scopes the typed comparison workspace. Read t Inputs: work, from_date, to_date, from_version_key, to_version_key, publisher |
in_force_on | Compatibility name for publisher states covering a date, computed from timeline intervals and deduplicated by work. Legilux states describe applicability; EUR-Lex states are official consolidated wording states and must not be called entry Inputs: date, publisher, jurisdiction, document_type, source_class, hierarchy |
provenance | Proof chain for one lex_id: source URI, retrieval time, record/body hashes, event chain, corpus commit, index build, stamp signature. Inputs: lex_id, language |
search | Filtered legal search. keyword is deterministic FTS5/BM25; hybrid adds the pinned local encoder and fixed RRF when verified vectors are mounted. No generative model participates. The response query_plan separates resolved work constraints, Inputs: query, publisher, jurisdiction, document_type, source_class, hierarchy |
timeline | Every publisher state a document has been in: timeline intervals, version keys, and explicit timeline_semantics. Legilux intervals describe applicability; EUR-Lex intervals describe official consolidated wording states, not entry into force Inputs: work, publisher, limit, offset |
Every block below points at https://law.soufien.lu/mcp. Pick your client and copy.
claude mcp add --transport http lex-temporal-luxembourg-and-eu-l https://law.soufien.lu/mcp
{
"mcpServers": {
"lex-temporal-luxembourg-and-eu-l": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://law.soufien.lu/mcp"]
}
}
}{
"mcpServers": {
"lex-temporal-luxembourg-and-eu-l": {
"url": "https://law.soufien.lu/mcp"
}
}
}{
"servers": {
"lex-temporal-luxembourg-and-eu-l": {
"type": "http",
"url": "https://law.soufien.lu/mcp"
}
}
}{
"context_servers": {
"lex-temporal-luxembourg-and-eu-l": {
"url": "https://law.soufien.lu/mcp"
}
}
}{
"mcpServers": {
"lex-temporal-luxembourg-and-eu-l": {
"serverUrl": "https://law.soufien.lu/mcp"
}
}
}{
"mcpServers": {
"lex-temporal-luxembourg-and-eu-l": {
"url": "https://law.soufien.lu/mcp"
}
}
}name: Lex — Temporal Luxembourg and EU Law
version: 0.0.1
schema: v1
mcpServers:
- name: Lex — Temporal Luxembourg and EU Law
type: streamable-http
url: https://law.soufien.lu/mcp{
"mcpServers": {
"lex-temporal-luxembourg-and-eu-l": {
"httpUrl": "https://law.soufien.lu/mcp"
}
}
}{
"mcpServers": {
"lex-temporal-luxembourg-and-eu-l": {
"type": "http",
"url": "https://law.soufien.lu/mcp"
}
}
}{
"mcpServers": {
"lex-temporal-luxembourg-and-eu-l": {
"url": "https://law.soufien.lu/mcp"
}
}
}goose://extension?url=https%3A%2F%2Flaw.soufien.lu%2Fmcp&type=streamable_http&id=lex-temporal-luxembourg-and-eu-l&name=Lex%20%E2%80%94%20Temporal%20Luxembourg%20and%20EU%20Law
It answered our last check on 18 October 2026 in 106 ms. Over 10 checks since 5 September 2026 it answered 8. Status here comes from Neuronto's own probes, not from the publisher.
10, as returned by the server's own tools/list on 31 August 2026: article_history, as_of, changes_in_period, cited_by, coverage, diff, in_force_on, provenance, and 2 more.
It answered our last check on 18 October 2026 in 106 ms. Over 10 checks since 5 September 2026 it answered 8.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://law.soufien.lu/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.sfhajji. Endpoint host: law.soufien.lu. ARD identifier: urn:air:io.github.sfhajji:mcp:lex.
First indexed 31 August 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.