What you need
- Docker with Compose, on Linux, macOS or Windows.
- 4 GB of free memory.
- 30 GB of free disk.
Start it
git clone https://github.com/taktekhq/lebanese-legislation.git
cd lebanese-legislation
./setup
docker compose --profile all up -d all
./setup writes private local passwords to .env. The first start copies the databases baked into the image to an empty volume. Later starts reuse it.
Open it
- Website:
http://localhost:8080 - JSON API:
http://localhost:8080/api/v1/ - MCP:
http://localhost:8080/mcp
Prefer separate services? This starts the database, the API on port 8000 and the MCP server on port 8001 instead:
docker compose up -d --wait db api mcp
Point an MCP client at the local address instead of the public one. For Claude Code:
claude mcp add --transport http lebanese-legislation-local http://localhost:8080/mcp
Exact and citation search need no AI key. For search by meaning, add your own GEMINI_API_KEY to the .env file that ./setup creates.
The images
- Database image on GitHub Container Registry:
ghcr.io/taktekhq/lebanese-legislation-db:latest - API image on GitHub Container Registry:
ghcr.io/taktekhq/lebanese-legislation-api:latest - MCP image on GitHub Container Registry:
ghcr.io/taktekhq/lebanese-legislation-mcp:latest - Website image on GitHub Container Registry:
ghcr.io/taktekhq/lebanese-legislation-all:latest
Every image has a latest tag that follows the newest build, so you never need to change a version number. The data is baked into the database and all-in-one images (about 2.8 GB to download, Linux AMD64). The API and MCP images are small and run on Linux AMD64 and ARM64. Dated tags such as 2026-11-03 stay published if you need a fixed copy.