Metadata-Version: 2.4
Name: at-eli-mcp
Version: 0.3.2
Summary: MCP server for the Austrian RIS API (data.bka.gv.at) — search and fetch federal legislation with ELI identifiers and verifiable citations.
Project-URL: Repository, https://github.com/matematicsolutions/at-eli-mcp
Project-URL: Issues, https://github.com/matematicsolutions/at-eli-mcp/issues
Project-URL: Homepage, https://matematic.co
Author-email: Matematic Solutions <kontakt@matematic.co>, Wieslaw Mazur <mazur.wieslaw2022@gmail.com>
License: Apache-2.0
License-File: LICENSE
Keywords: austria,eli,law,legaltech,mcp,ris
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Legal Industry
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Office/Business
Requires-Python: >=3.11
Requires-Dist: anyio>=4.3
Requires-Dist: diskcache>=5.6
Requires-Dist: fastmcp<4,>=3.4
Requires-Dist: httpx<1,>=0.27
Requires-Dist: pydantic>=2.6
Provides-Extra: dev
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Description-Content-Type: text/markdown

# at-eli-mcp

<!-- mcp-name: io.github.matematicsolutions/at-eli-mcp -->


## Install (one command)

Published on PyPI + MCP Registry (`io.github.matematicsolutions/at-eli-mcp`). Run without cloning:

```bash
uvx at-eli-mcp
```

Configure your MCP client (stdio):

```json
{ "mcpServers": { "at-eli-mcp": { "command": "uvx", "args": ["at-eli-mcp"] } } }
```

### Windows 11 with Smart App Control

Smart App Control blocks unsigned executables, which covers `uvx.exe`, `pip.exe`
and the `at-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:

```bash
python -m pip install at-eli-mcp
python -m at_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 at_eli_mcp`.

```json
{ "mcpServers": { "at-eli-mcp": { "command": "python", "args": ["-m", "at_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](#install).

An MCP server for **RIS** (`data.bka.gv.at`), Austria's official legal information system
(Rechtsinformationssystem des Bundes, operated by the Bundeskanzleramt). It searches and
retrieves Austrian federal legislation (Bundesrecht) and case law (Judikatur) with verifiable ELI
identifiers, native ECLI for decisions, and Austrian citations.

Part of the MateMatic `eu-legal-mcp` production line - the Austrian member, after the Polish
`sejm-eli-mcp` and the German `de-eli-mcp`. Same architecture and citation contract, RIS source.

> **Scope.** Covers Austrian **federal law** (Bundesrecht) and **case law** (Judikatur, with a
> native ECLI). State law (Landesrecht) is a later feature. Every response carries a `dataset_note`.
>
> **Licence.** Austrian Bundesgesetzblatt content and statutes are official works in the public
> domain; RIS is published as Open Government Data (keyless). This connector relays that public
> content with attribution and a `source_url`.

## The tools

| Tool | What it does |
|---|---|
| `at_search` | Search federal law (`GET /Bundesrecht`) by free text and/or title. |
| `at_get_text` | Fetch an act's full text (`html` or `xml`) from a hit's content URL. |
| `at_case_search` | Search case law (`GET /Judikatur`) by free text, choosing a court (`applikation`). Hits carry a native `ecli`. |
| `at_get_case_text` | Fetch a decision's full text from a case hit's content URL. |
| `at_list_collections` | List the RIS collections and which are exposed. |

Every response carries the contract: `eli_uri` (a full ELI URL, e.g.
`https://www.ris.bka.gv.at/eli/bgbl/I/2026/6/20260218`), `human_readable_citation`
(e.g. `Datenschutzgesetz, BGBl. I Nr. 165/1999`), and `source_url`.

## Install

```bash
cd at-eli-mcp
pip install -e .
```

## Configure (Claude Code / any MCP client)

```json
{
  "mcpServers": {
    "at-eli-mcp": { "command": "at-eli-mcp" }
  }
}
```

Environment:

- `AT_ELI_BASE_URL` - default `https://data.bka.gv.at/ris/api/v2.6`
- `AT_ELI_CACHE_DIR` - default `~/.matematic/cache/at-eli`
- `AT_ELI_AUDIT_DIR` - default `~/.matematic/audit`

No API key. RIS is keyless Open Government Data.

## Governance

- **Public data only** - read-only against RIS; no client data leaves the machine beyond search parameters.
- **Audit log** - every tool call appends one JSON line to `~/.matematic/audit/at-eli-mcp.jsonl`.
- **Vendor-neutral** - talks only to `data.bka.gv.at` and (for full text) `ris.bka.gv.at`; no LLM provider, no telemetry.
- **Host-restricted text** - full text is fetched only from `ris.bka.gv.at`.

See `CONSTITUTION.md` and `DISCOVERY.md`.

## Tests

```bash
pip install -e ".[dev]"
pytest tests/test_instructions_drift.py -v   # offline
pytest tests/test_smoke.py -v                # hits live RIS
```

## Licence

Apache-2.0. © Matematic Solutions / Wieslaw Mazur.
