io.github.matematicsolutions/legalize-mcp
Legislation for 32 jurisdictions (21 EU) as law-as-git, keyless, with ELI-style citations.
Open source Open in the app JSON README (API)
About
Legislation for 32 jurisdictions (21 EU) as law-as-git, keyless, with ELI-style citations.
Details
- Kind
- MCP servers
- Topic
- Government & public data
- Publisher
- matematicsolutions
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.2.4
- Last push
- 2026-08-26T10:03:29Z
- Repository state
- ativo
- Language
- Python
- License
- Apache-2.0
- Added
- 2026-08-29 04:00:29
- Updated
- 2026-08-29 04:00:29
- Origin id
io.github.matematicsolutions/legalize-mcp
README
# legalize-mcp
> **Unofficial.** Not affiliated with, or endorsed by, the legalize-dev project.
> An official legalize-dev MCP server is in development against the legalize.dev API;
> this one reads the public git corpus instead.
<!-- mcp-name: io.github.matematicsolutions/legalize-mcp -->
**One MCP server, 32 jurisdictions (21 EU).** A read-only [Model Context Protocol](https://modelcontextprotocol.io)
server over the [legalize-dev](https://github.com/legalize-dev) corpus — national legislation stored
as **law-as-git**: one law per Markdown file, every reform a Git commit, each with an 8-field
ELI-style frontmatter (Legalize Format Spec v0.2). This connector is
Apache-2.0.
Built by [Matematic Solutions](https://matematic.co) as part of the `eu-legal-mcp` line. Unlike the
single-country `*-eli-mcp` connectors, this one serves **many jurisdictions from a single server**,
because the underlying corpus is already normalised to one format.
## Why this exists
Every response carries the **citation contract** the rest of the line uses:
- `source_url` — the **official** government source from the law's own frontmatter
(e.g. `boe.es`, `riigiteataja.ee`, `legifrance.gouv.fr`). Never invented.
- `github_url` — the verifiable legalize-dev copy actually read.
- `human_readable_citation` — `"<title> (<identifier>)"`.
It is **RODO/GDPR-safe and self-hostable**: nothing leaves the user's machine except read-only GETs
to GitHub.
## Jurisdictions
EU: `at be cz de ee es eu fi fr gr ie it lt lu lv nl pl pt ro se sk`
· Other: `ad ar ch cl co kr li no uk us uy`
Call `legalize_list_countries` for the live list (add `eu_only=true` to filter).
## Tools
| Tool | Keyless? | Purpose |
| --- | --- | --- |
| `legalize_list_countries` | ✅ | List jurisdictions (code, name, EU flag, repo). |
| `legalize_search_laws` | needs `GITHUB_TOKEN` | Keyword search inside a country's laws → `law_id` + snippet. |
| `legalize_get_meta` | ✅ | Frontmatter only (cheap citation check). |
| `legalize_get_law` | ✅ | Full metadata + text by `law_id`; pass `sha=` for a historical version. |
| `legalize_list_reforms` | ✅ | Reform timeline (commits) for a law; SHAs feed `legalize_get_law`. |
| `legalize_coverage` | Declare what this connector covers, when each family was captured, and - explicitly - what it does NOT cover. Every gap carries a fallback. |
`law_id` is the Markdown **filename stem** (e.g. `BOE-A-1978-31229` for the Spanish Constitution, a
numeric id for Estonia). Get it from `legalize_search_laws` or an official citation — there is no
fuzzy title lookup.
## Install
```bash
uvx legalize-mcp # run directly
# or
pip install legalize-mcp
```
Claude Code (`.mcp.json`):
```json
{
"mcpServers": {
"legalize": { "command": "uvx", "args": ["legalize-mcp"] }
}
}
```
### Windows 11 with Smart App Control
Smart App Control blocks unsigned executables, which covers `uvx.exe`, `pip.exe`
and the `legalize-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:
```bash
python -m pip install legalize-mcp
python -m legalize_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 legalize_mcp`.
```json
{ "mcpServers": { "legalize-mcp": { "command": "python", "args": ["-m", "legalize_mcp"] } } }
```
Do not turn Smart App Control off to work around this - it cannot be re-enabled
without reinstalling Windows.
`GITHUB_TOKEN` (or `GH_TOKEN`) is **optional** — required only for `legalize_search_laws`, and it
lifts the GitHub rate limit on `legalize_list_reforms`.
## Configuration
| Env var | Default | Purpose |
| --- | --- | --- |
| `GITHUB_TOKEN` / `GH_TOKEN` | — | Enables code search; lifts rate limits. |
| `LEGALIZE_AUDIT_DIR` | `~/.matematic/audit` | JSONL audit log location (AI Act art. 12). |
## Governance
Every tool call appends one line to `~/.matematic/audit/legalize-mcp.jsonl` (input hash, duration,
status — no payloads). All tools are read-only and idempotent. See `CONSTITUTION.md`.
## Development
```bash
python -m venv .venv && .venv/Scripts/python -m pip install -e ".[dev]"
.venv/Scripts/python -m pytest -q # offline unit tests
.venv/Scripts/python -m ruff check src tests
```
## Attribution
Legislative data © the respective national authorities (see each law's `source`). Corpus
normalisation by the [legalize-dev](https://github.com/legalize-dev) project.
**Licence of the corpus is per country, not MIT.** The MIT licence covers legalize-dev's
pipeline and tooling. Each country repository carries terms inherited from its own official
source - `legalize-es` follows the BOE reuse conditions, which make citing the source
mandatory; `legalize-at` is CC BY 4.0; others differ. **Check the country repository before
you rely on, quote or redistribute a text.** Treating the corpus as MIT would skip an
attribution obligation you actually have.
*Correction supplied by Enrique Lop (legalize-dev) in issue #18, 2026-08-24.*
This connector does not redistribute the corpus; it reads it on demand.