Yurko
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Yurkoverify this quote from Article 8 ECHR against the official text"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
19 | 1,007 | 0 |
MCP tools in this public edition | offline tests, no network | free-text queries sent to the sources in the |
I built Yurko so that a model stops quoting the law from memory. A Claude Code skill drafts a legal position on top of the server, and every legal statement in the draft sits under a verbatim quote from the source, with the article and the version it came from.
Install
Python 3.12 or newer and uv. From the folder you clone into:
git clone https://github.com/prodelt/yurko && cd yurko
claude mcp add yurko -s user -- uv run --quiet --no-project --python 3.12 --with-requirements "$PWD/requirements.txt" python "$PWD/server_env.py"Then ask Claude to quote article 3 of the Constitution of Ukraine and check the quote.
Related MCP server: legal-cite
What verify_quote returns
Real calls on 6 October 2026 against article 3 of the Constitution of Ukraine. A missing document and a missing article are different answers (not_found, path_not_found), and an unreachable source says so (source_unavailable).
Sources and tools
The server reads Ukrainian legislation from the Verkhovna Rada site, EU law through Cellar, ELI and CELEX, case law of the European Court of Human Rights and the Court of Justice of the EU, case cards of the International Court of Justice, and public Ukrainian registries: court decisions, debtors and Prozorro tenders. The legal order is a parameter (legal_order), so adding a jurisdiction adds a value rather than a new set of tools. list_coverage says which operations have been tested for each source.
Group | Tools |
Legislation |
|
Case law |
|
Registries |
|
Checks |
|
The legal profile
The default profile is built for work on real matters:
free text from the user is never sent to the sources;
the server refuses to start with someone else's database or a model API key;
the server process sees only environment variables from an allow-list (
server_env.py);no tool accepts a file or a path, so case materials cannot reach the server.
What Yurko does not do
It does not give legal advice, and a match from verify_quote proves only that the words are in the source. Procedural deadlines are left to a lawyer. This public edition exposes 19 of the 23 tools I run.
The /yurko skill
An orchestrator is the only author of documents. Sub-agents read, search, argue the other side and check the draft. Risks are given as categories, never as a percentage chance. The run keeps its state in files, so it can stop and resume, and it records its own cost.
A separate court cycle runs an adversarial simulation with information barriers between the roles and a blind panel of three models. It is back-tested on cases whose outcome is already known.
In production
The server runs on Render with a Postgres corpus. In production the Ukrainian corpus is searched with full-text search only, so query text never goes to an embedding provider. Hybrid search (full text plus vectors, merged with reciprocal rank fusion) is in the code but switched off.
Run it locally
Dependency versions are pinned: uv.lock is the single source, and requirements.txt (stdio mode) and requirements-hosted.txt (Docker, with Postgres and Playwright) are exported from it with hashes.
With uv, without installing anything into the code folder:
uv run --quiet --no-project --python 3.12 --with-requirements requirements.txt python server_env.pyWith your own virtual environment:
python -m venv .venv
.venv/bin/pip install -r requirements.txt # Windows: .venv\Scripts\pip
.venv/bin/python server_env.py # stdio; the entry point builds an allow-listed environmentHTTP mode for a hosted server: MCP_TRANSPORT=http, PORT and UKRAINE_LAWS_API_KEY. The image and the deployment are in Dockerfile and render.yaml.
Settings
Variable | Default | What it does |
|
|
|
| the OS cache directory | where the server writes its cache; it never writes into the code folder |
|
| use Postgres instead of the file cache |
|
|
|
| official endpoints | override a registry endpoint |
Development
Tests never touch the network or the code folder. tests/conftest.py fails any test that tries to go online, points YURKO_CACHE_DIR at a temporary folder and checks that cache/ in the code folder stays unchanged. Tests that really need the network are marked live and run only with YURKO_LIVE=1.
uv sync --frozen --extra dev
.venv/bin/python -m pytest -q # Windows: .venv\Scripts\python.mcp.json connects the server when you open this folder in Claude Code on Windows; on macOS and Linux change its command to .venv/bin/python.
Known quirks of the Rada site, such as TLS resets on large handshakes and ignored search filters, are written up in docs/.
License
MIT, see LICENSE. The skill under skill/ adapts parts of other open-source projects; see skill/NOTICE.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
Resolve, search and verify legal citations against the official sources, with provenance.
Current law as data for AI: search, read and verify statutes and citations. CIS countries first.
1Verifies legal citations vs primary sources: existence, quote match, proposition support.
EU AI Act and GDPR checks with sources: classify an AI system, trace each duty, find the supervisor.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides AI assistants with up-to-date legal documents from official sources, enabling accurate legal information retrieval and analysis.18AGPL 3.0
- AlicenseAqualityAmaintenanceVerifies legal citations by fetching the exact, in-force wording of cited articles from official PL and EU legal sources, preventing hallucination by returning verbatim text.25Apache 2.0

kvasir-legalofficial
FlicenseNot gradedqualityCmaintenanceVerifiable German, Austrian, Swiss and EU law: resolve citations to the wording in force, verify the citations a model produced against the official source, and walk the citation graph.-- AlicenseBqualityBmaintenanceEnables citation-safe legal research and document drafting over official Turkish case law and legislation, searching a local 11-million-decision corpus with full-text and semantic retrieval or querying live sources like Bedesten, AYM, Danıştay and mevzuat.gov.tr. It also supports citation verification, petition and bundle preparation, change reports, privacy redaction, and source health checks through core and loadable extended tool sets.1147 PyPI3AGPL 3.0