Skip to main content
Glama
README.md
![Law7 Logo](logo/law7_minimal_3.png)

# Law7 MCP - Up-to-date Legal Documents For AI Assistants

[![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](LICENSE)
[![Version](https://img.shields.io/badge/version-0.1.0-orange)](package.json)

## Without Law7

AI assistants rely on outdated training data for laws:

- LLMs use training data from years ago
- Hallucinated legal articles that don't exist
- Generic answers without specific legal citations
- Unable to track legal changes or amendments

## With Law7

Law7 MCP pulls up-to-date, version-specific legal documents directly from official government sources and places them into your AI conversation.

Ask questions like:

```
What are the notice periods for terminating an employment contract in Russia?
```

```
What changes were made to the Russian Labor Code in 2025?
```

Law7 fetches current legal documents right into your AI's context. No tab-switching, no hallucinated articles, no outdated legal information.

## Legal Disclaimer

**IMPORTANT**: This project provides text information from open sources only. See [DISCLAIMER.md](docs/DISCLAIMER.md) for full details.

- NOT for official use in court or government bodies
- NO guarantee of accuracy, completeness, or timeliness
- Always consult qualified lawyers for legal matters
- AGPL-3.0 licensed - modifications must be shared

## Installation

### Claude Desktop

<details>
<summary><b>Quick Start (Recommended)</b></summary>

```bash
# Build the server
npm run build

# Add to Claude Desktop
claude mcp add law7 --node \path\to\folder\law7\dist\index.js
```

</details>

<details>
<summary><b>Detailed Instructions</b></summary>

**Step 1: Build and Test the Server**

```bash
npm run build
npm start
```

**Step 2: Add to Claude Desktop**

Option A - Via config file (`C:\Users\<user>\AppData\Roaming\Claude\claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "law7": {
      "command": "node",
      "args": ["/path/to/folder/law7/dist/index.js"],
      "env": {}
    }
  }
}
```

**Important**: The `mcpServers` is an **object**, not an array. Each server is a key with `command` and `args` properties.

**Step 3: Test with Claude Desktop**

Once added, the law7 MCP server appears in your chat with these tools:
- `list-countries` - List available countries
- `get-statistics` - Get database statistics
- `query-laws` - Search legal documents by text
- `get-law` - Get specific document by eo_number

**Example query**:
```
Can you search for documents about "трудовой договор" in Russia and show me the results?
```

</details>

## Important Tips

### Add a Rule

To automatically invoke Law7 for legal questions, add a rule to your CLAUDE.md file:

```txt
Always use Law7 MCP when I need legal information, document lookup, or legal analysis without me having to explicitly ask.
```

### Specify Country

Currently only Russia is supported, but you can specify for clarity:

```
What are the labor laws in Russia regarding overtime?
```

### Query Historical Versions

Ask for specific dates to get historical legal versions:

```
What was the Russian Labor Code article 80 text on January 1, 2024?
```

## Available Tools

Law7 MCP provides the following tools that AI assistants can use:

| Tool | Description |
|------|-------------|
| `query-laws` | Search legal documents by semantic/keyword search |
| `get-law` | Retrieve specific document by eo_number |
| `list-countries` | List supported countries (currently Russia) |
| `get-statistics` | Get database statistics |
| `get-code-structure` | Get structure of consolidated legal codes |
| `get-article-version` | Get article version at specific date |
| `trace-amendment-history` | Track amendment history of articles |

## Architecture

This project uses a **hybrid architecture** with two separate components:

- **Data Pipeline (Python)**: Crawls, parses, and indexes legal documents into local database
- **MCP Server (TypeScript)**: Queries the local database and serves results to AI assistants

```
Python Pipeline → PostgreSQL + Qdrant → TypeScript MCP Server → AI
```

### Components

| Component | Language | Location |
|-----------|----------|----------|
| Data Pipeline | Python | `/scripts` |
| MCP Server | TypeScript | `/src` |
| Docker | Compose | `/docker` |

## Phase 1: Current Implementation (Russia)

**Status**: Operational

- **Documents**: 1,134,985 Russian legal documents (2019-2026)
- **Content Coverage**: 47,871 documents with full text (4.22%)
- **Code Articles**: 6,232 articles across 22 consolidated legal codes
- **Embeddings**: 265 semantic vectors (test data - full embeddings pending)
- **Database Backup**: [Download (218 MB)](https://drive.google.com/file/d/1DPLpFpuwUZbLZEGo2TxnCAcLRdb2V1aD/view?usp=sharing) - `SHA256: 70a1d8fc6b27b67ad7f12f03f017d02b5f68a0c895447159039800965895f8b2`
- **Sources**:
  - [pravo.gov.ru](http://pravo.gov.ru/) - Official Russian legal publication portal (primary)
  - [kremlin.ru](http://kremlin.ru/) - Presidential decrees, Constitution
  - [government.ru](http://government.ru/) - Government resolutions, procedure codes
- **Codes**: All 19 consolidated Russian legal codes imported:
  - Constitution (KONST_RF)
  - Civil Code (4 parts: GK_RF, GK_RF_2/3/4)
  - Criminal Code (UK_RF)
  - Labor Code (TK_RF)
  - Tax Code (2 parts: NK_RF, NK_RF_2)
  - Family, Housing, Land codes (SK_RF, ZhK_RF, ZK_RF)
  - Administrative Code (KoAP_RF)
  - Procedure Codes (GPK_RF, APK_RF, UPK_RF, KAS_RF)
  - Budget, Urban Planning, Criminal Executive codes (BK_RF, GRK_RF, UIK_RF)
  - Environmental codes (VZK_RF - Air, VDK_RF - Water, LK_RF - Forest)

**Quick Start Pipeline:**
1. **Import Base Codes** (~6 hours) - 19 core legal codes (~5,000 articles) - Civil, Labor, Criminal, etc.
2. **Document Sync** (partial: ~6h, full: 100+h) - Amendment documents from official sources (optional)
3. **Content + Embeddings** (~2-3 hours) - Extract text and generate vectors (optional)

**For most users**: Step 1 gives you the essential legal codes. Steps 2-3 add amendment coverage.

See [docs/DATA_PIPELINE.md](docs/DATA_PIPELINE.md) for complete data pipeline documentation.

## Phase 2: Future Vision (Global)

**Status**: Planned - See [docs/VISION.md](docs/VISION.md)

- Multi-country support
- Decentralized data distribution (IPFS, libp2p)
- Community verification system
- Country adapter pattern for adding new jurisdictions
- Delta updates and change tracking

## Quick Start (Development)

> **Note**: Default ports are PostgreSQL **5433**, Redis **6380**, Qdrant **6333** (to avoid conflicts with other projects).

### Option A: Restore from Backup (Recommended - ~5 minutes)

Skip the data sync and use the pre-built database:

```bash
# 1. Download backup (218 MB)
#    https://drive.google.com/file/d/1DPLpFpuwUZbLZEGo2TxnCAcLRdb2V1aD/view?usp=sharing

# 2. Start Docker services
cd docker
docker-compose up -d

# 3. Restore backup (place .tar.gz in docker/backups/ directory)
./restore.sh law7_backup_20260211_014519

# 4. Start MCP server
npm install && npm run build && npm start
```

### Option B: Fresh Installation (from official sources)

#### 1. Start Docker Services

```bash
cd docker
docker-compose up -d
```

#### 2. Run Initial Data Sync (Python)

```bash
# Using Poetry
poetry run python scripts/sync/initial_sync.py
```

### 3. Start MCP Server (TypeScript)

```bash
npm install
npm run build
npm start
```

### 4. Test with MCP Inspector

```bash
npx @modelcontextprotocol/inspector node dist/index.js
```

## Dependencies

### TypeScript (MCP Server)
- `@modelcontextprotocol/sdk` - MCP protocol
- `pg` - PostgreSQL client
- `@qdrant/js-client-rest` - Qdrant vector DB client
- `ioredis` - Redis client

### Python (Data Pipeline)
- `pandas` - Data processing
- `sqlalchemy` - Database ORM
- `beautifulsoup4` - HTML parsing
- `pdfplumber` - PDF text extraction
- `sentence-transformers` - Embeddings (multilingual models)
- `qdrant-client` - Vector DB client
- `torch` - PyTorch with CUDA support (for GPU acceleration)

**Hardware Requirements for GPU Acceleration**:
- NVIDIA GPU with CUDA support (tested on RTX 3060 12GB)
- CUDA 12.x compatible drivers

## More Documentation

- [DATA_PIPELINE.md](docs/DATA_PIPELINE.md) - Complete data pipeline guide
- [VISION.md](docs/VISION.md) - Future global architecture
- [DISCLAIMER.md](docs/DISCLAIMER.md) - Legal disclaimer
- [CONTRIBUTING.md](CONTRIBUTING.md) - Development guidelines

## License

AGPL-3.0 - see [LICENSE](LICENSE) for details.

This means:
- Source code is freely available
- Any modifications must be shared under the same license
- If you run a modified version on a server and provide services to users, you must make the source code available to those users

Maintenance

ActivityInactive
ResponsivenessNo issues