cellar-wrapper helps you get legal and legislative data from the EU Publications Office CELLAR service in a simpler, more practical way.
You can use it:
- as a Python library,
- from the command line,
- and, if needed, as an MCP server for AI/tool integrations.
This project is community-maintained and unofficial. It is not affiliated with, endorsed by, or operated by the European Union or the Publications Office of the European Union.
This is an early-stage project.
The Python API, CLI commands, MCP interface, and response shapes may change. Do not treat the current interface as final or stable.
The project is meant for people who need to:
- look up an EU act by CELEX number,
- fetch basic metadata for an act,
- check relations such as amendments, repeals, citations, and related case law,
- monitor whether something new appeared after a given date,
- download text or legislative summaries,
- search acts by title, EuroVoc, or subject matter.
In short: it is a practical access layer over CELLAR for legal research, compliance work, and structured data collection.
This is a hobby project, not an official product.
Before using it seriously, keep in mind:
- the project is still evolving, so commands and outputs may change,
- some data comes directly from CELLAR and can be incomplete, sparse, or inconsistent,
- not every legal question maps neatly to one command,
- MCP support exists, but the main practical use today is still Python and the CLI,
Requires Python 3.11 or newer.
If you want the published package, install the library and CLI with:
pip install cellar-wrapperIf you want the current repository version instead, install directly from GitHub:
pip install "git+https://github.com/Kymylyy/cellar-wrapper.git"For library, CLI, and MCP support:
pip install "cellar-wrapper[mcp]"Or from GitHub with the MCP extra:
pip install "cellar-wrapper[mcp] @ git+https://github.com/Kymylyy/cellar-wrapper.git"For most people, the CLI is the easiest way to start.
Check that the CLI is installed:
cellar --versionResolve a CELEX number:
cellar lookup resolve-celex --celex 32022R2554Get metadata for one act:
cellar lookup get-act --celex 32022R2554Check amendments:
cellar relations get-amendments --celex 32022R2554 --limit 50Check what is new since a date:
cellar monitoring new-citations --celex 32022R2554 --since 2025-01-01The CLI returns JSON. On success:
{"ok": true, "data": {...}}On error:
{"ok": false, "error": {"type": "CellarValidationError", "message": "...", "details": {...}}}from cellar_wrapper import CellarClient
with CellarClient() as client:
act = client.get_act("32022R2554")
print(act.celex, act.title)If something does not work, or if you want to ask how to use the project:
- Support and usage questions: SUPPORT.md
- Bug reports and feature requests: https://github.com/Kymylyy/cellar-wrapper/issues
- Contributing: CONTRIBUTING.md
- Security reporting: SECURITY.md
If you want to connect the project to an assistant or another tool through MCP, install the MCP extra:
pip install "cellar-wrapper[mcp]"Run the server:
python -m cellar_wrapper.mcp_serverCheck the version:
python -m cellar_wrapper.mcp_server --versionEnvironment variables supported by the MCP server:
CELLAR_MCP_BASE_URL_SPARQLCELLAR_MCP_BASE_URL_RESOURCECELLAR_MCP_USER_AGENTCELLAR_MCP_RETRIESCELLAR_MCP_TIMEOUT_CONNECTCELLAR_MCP_TIMEOUT_READCELLAR_MCP_TIMEOUT_WRITECELLAR_MCP_TIMEOUT_POOL
- Docs index: https://github.com/Kymylyy/cellar-wrapper/blob/main/docs/README.md
- Command guide: https://github.com/Kymylyy/cellar-wrapper/blob/main/docs/COMMAND_GUIDE.md
- Curated examples: https://github.com/Kymylyy/cellar-wrapper/blob/main/docs/CONTRACT_EXAMPLES.md
- Contract reference: https://github.com/Kymylyy/cellar-wrapper/blob/main/docs/CONTRACT_REFERENCE.md
Main local checks:
ruff check
mypy
pytest -m "not live"
python -m build --sdist --wheel