Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Legal Document RAG Server

FreeNot checked

Enables semantic and keyword search over legal documents, conflict detection, and document overview, supporting Indonesian and English texts.

GitHubEmbed

About

Enables semantic and keyword search over legal documents, conflict detection, and document overview, supporting Indonesian and English texts.

README

Fully local, offline RAG system for legal documents (Indonesian + English).
Built on MCP SDK, ChromaDB, SQLite FTS5, and multilingual-e5-large.


Requirements

  • Python ≥ 3.11
  • Tesseract OCR with Indonesian language pack:
    # Ubuntu / Debian
    sudo apt install tesseract-ocr tesseract-ocr-ind
    
    # macOS
    brew install tesseract
    brew install tesseract-lang  # includes ind
    

Setup

# 1. Clone / copy the project
cd legal_rag_mcp

# 2. Create virtual environment
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

# 3. Install dependencies
pip install -r requirements.txt

# 4. (First run) The multilingual-e5-large model (~2.2 GB) will be
#    downloaded automatically to ~/.cache/huggingface/hub
#    All subsequent runs are fully offline.

Usage

Drop documents in the watch folder

legal_rag_mcp/raw_legal_docs/
├── kontrak_jual_beli.pdf
├── perjanjian_kerjasama.docx
├── schedule_of_fees.xlsx
└── scanned_addendum.png

Launch the MCP server

# Development mode (with MCP Inspector UI)
mcp dev mcp_server/server.py

# Production mode (stdio, for Claude Desktop or any MCP client)
python mcp_server/server.py

Claude Desktop configuration (claude_desktop_config.json)

{
  "mcpServers": {
    "legal-rag": {
      "command": "python",
      "args": ["/absolute/path/to/legal_rag_mcp/mcp_server/server.py"]
    }
  }
}

Tools Exposed

Tool Purpose
search_clauses Hybrid semantic + keyword search
find_conflicts Cross-document conflict detection (two-zone thresholds)
get_document_overview Document metadata + clause outline
retrieve_context Read a clause in full surrounding context
list_documents Inventory of all ingested files

Conflict Detection Thresholds

Zone Cosine Similarity Interpretation
Near-duplicate > 0.88 Same clause — skip
HIGH suspicion 0.75 – 0.88 Same topic, different obligations
MODERATE suspicion 0.60 – 0.75 Related topic, may diverge
Unrelated < 0.60 Different provisions

Thresholds are configurable in config.py.


Re-ingestion (Diff-Based)

When a file in raw_legal_docs/ is modified:

  1. File-level SHA-256 hash is compared against the stored hash.
  2. If unchanged → skip entirely.
  3. If changed → re-chunk the document, compute per-chunk hashes.
  4. Only changed or new chunks are re-embedded and upserted.
  5. Orphaned chunks (present in old version, absent in new) are deleted.
  6. Full re-embedding is never triggered by a partial change.

from github.com/alifindrar/doc-scraper

Installing Legal Document RAG Server

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/alifindrar/doc-scraper

FAQ

Is Legal Document RAG Server MCP free?

Yes, Legal Document RAG Server MCP is free — one-click install via Unyly at no cost.

Does Legal Document RAG Server need an API key?

No, Legal Document RAG Server runs without API keys or environment variables.

Is Legal Document RAG Server hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Legal Document RAG Server in Claude Desktop, Claude Code or Cursor?

Open Legal Document RAG Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Legal Document RAG Server with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All ai MCPs