Hukuk MCP
Hukuk MCP is a local MCP server that connects AI clients to Turkish public legislation and court/institution decisions, and generates petition drafts and UYAP UDF files.
Search Turkish legislation by number, name, or text and retrieve full text, tables of contents, article-level AND/OR/NOT searches, and legislative justifications (gerekçe).
Search and retrieve court decisions from Yargıtay, Danıştay, regional appeal courts (BAM), local courts, and KYB via public sources (Bedesten or official sites).
Search and retrieve Anayasa Mahkemesi (AYM) individual application and norm review decisions.
Search and retrieve public UYAP Emsal (precedent) decisions.
Search and retrieve decisions from institutions: KİK, Rekabet, Sayıştay, KVKK, BDDK, BTK, GİB, Sigorta Tahkim, and Uyuşmazlık.
Check health/status of public legal data sources.
Generate petition (dilekçe) skeletons for types like dava, cevap, islah, istinaf, temyiz, icra_itiraz, optionally enriched with research slots and saved local style examples.
Save and list local writing-style examples (üslup) from UDF/DOCX/MD files.
Write, read, and convert UYAP UDF files: save Markdown as .udf, read existing .udf as Markdown, and convert Word .docx to .udf while preserving formatting.
Optional semantic reranking of search results via configurable external models (OpenCode-compatible API).
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., "@Hukuk MCP TMK 166. madde metnini getir"
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.
# Hukuk MCP
Yerel MCP sunucusu: kamu Türk mevzuatı ve mahkeme/kurul kararlarını AI istemcilerine bağlar; dilekçe taslağı ve UYAP UDF üretir.
UYAP avukat girişi, abonelik ve web sitesi yoktur. Kişisel dava dosyası indirmez. Üretilen metin hukuki tavsiye değildir.
Ön koşul
uv kurulu olsun (Python 3.11+ otomatik gelir).
powershell -ExecutionPolicy Bypass -c "irm https://astral.sh/uv/install.ps1 | iex"Related MCP server: Türk Hukuk AI MCP
Tek satır kurulum (uvx)
GitHub’dan doğrudan çalışır; klasör kopyalamaya gerek yok.
uvx --from git+https://github.com/berkebeydag/hukuk-mcp.git hukuk-mcpCursor
Settings → MCP veya proje .cursor/mcp.json:
{
"mcpServers": {
"hukuk": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/berkebeydag/hukuk-mcp.git",
"hukuk-mcp"
]
}
}
}Codex (CLI / IDE)
~/.codex/config.toml (Windows: %USERPROFILE%\.codex\config.toml):
[mcp_servers.hukuk]
command = "uvx"
args = [
"--from",
"git+https://github.com/berkebeydag/hukuk-mcp.git",
"hukuk-mcp"
]
startup_timeout_sec = 45veya:
codex mcp add hukuk -- uvx --from git+https://github.com/berkebeydag/hukuk-mcp.git hukuk-mcpClaude Desktop / Claude Code
Claude Desktop: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"hukuk": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/berkebeydag/hukuk-mcp.git",
"hukuk-mcp"
]
}
}
}OpenCode
opencode.json / ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"hukuk": {
"type": "local",
"command": [
"uvx",
"--from",
"git+https://github.com/berkebeydag/hukuk-mcp.git",
"hukuk-mcp"
],
"enabled": true
}
}
}Hazır kopyalar: examples/.
Geliştirici kurulumu
git clone https://github.com/berkebeydag/hukuk-mcp.git
cd hukuk-mcp
uv sync
uv run hukuk-mcpYerel klasörle Cursor:
{
"mcpServers": {
"hukuk": {
"command": "uv",
"args": ["run", "--directory", "C:\\\\path\\\\to\\\\hukuk-mcp", "hukuk-mcp"]
}
}
}Örnek sorular
TMK 166 madde metnini getir4721 sayılı kanunu bulYargıtay boşanma kararlarından son örnekleri ara, esas ve karar no ile yazKİK 2025/UH.II-1801 kararını getirBu cevap dilekçesini UDF olarak kaydet
Araçlar
Araç | İş |
| Kanun / yönetmelik ara |
| Tam metin (sayfalı) |
| Madde içi AND/OR/NOT |
| İçindekiler |
| Kanun gerekçesi |
| Yargıtay, Danıştay, BAM… ( |
| Anayasa Mahkemesi |
| UYAP Emsal (kamu) |
| KİK, Rekabet, Sayıştay, KVKK, BDDK, BTK, GİB, Sigorta Tahkim, Uyuşmazlık |
| Kaynak sağlık |
| Tür bazlı iskelet; |
| Yerel üslup |
| UDF |
Karar numarası uydurulmaz: önce search_*, sonra get_*. UDF imzasızdır.
Semantik sıralama (isteğe bağlı — OpenCode Go)
Anahtar yoksa eski haliyle çalışır: kamu API + kelime (lexical) sıralama. Codex/Claude zaten listedeki sonuçları anlamca seçebilir.
OPENCODE_API_KEY varsa ekstra: sonuçlar chat’e gitmeden önce Muse Spark 1.3 Contributor ile yeniden sıralanır; dolu/hata olursa DeepSeek V4.1 Flash. Yerel model gerekmez.
Cursor MCP örneği (env ekleyerek):
"env": {
"OPENCODE_API_KEY": "sk-...",
"OPENCODE_BASE_URL": "https://opencode.ai/zen/go/v1",
"RERANK_MODEL": "muse-spark-1.3-contributor",
"RERANK_FALLBACK_MODEL": "deepseek-v4.1-flash"
}Codex config.toml:
[mcp_servers.hukuk.env]
OPENCODE_API_KEY = "sk-..."
OPENCODE_BASE_URL = "https://opencode.ai/zen/go/v1"
RERANK_MODEL = "muse-spark-1.3-contributor"
RERANK_FALLBACK_MODEL = "deepseek-v4.1-flash"Muse Contributor, OpenCode koşullarına göre prompt’ları eğitimde kullanabilir. Bu, milyonlarca kararlık özel indeksin yerine geçmez.
Sınırlar
Kamu sitelerinin hız limitine uyulur. Özel indeks yoktur. KİK ekapv2 AES anahtarı kopyalanmaz (kamu EKAP formu). Sayıştay HTTPS bazı ağlarda TLS reset verir; tarayıcı linki döner.
Test
uv sync --group dev
uv run pytest tests/test_local.pyLisans
MIT
Available Tools
20 toolscheck_kaynaklarCheck KaynaklarBRead-onlyIdempotent
Bedesten, AYM, Emsal, resmi karararama ve kurum JSON API sağlık kontrolü.
Inputs: no named parameters. Returns: result
dilekce_taslagiDilekce TaslagiA
Dilekçe iskeleti döner (dava, cevap, islah, istinaf, temyiz, icra_itiraz). uslup=true ise kayıtlı örneklerin üslubu eklenir. Asıl metni sen yaz; udf_yaz ile kaydet.
Inputs: tur (required), konu, uslup, davaci, +4 more. Returns: result
docx_to_udfDocx To UdfA
Word (.docx) dosyasını yerel .udf dosyasına çevirir; kalın, italik, tablo ve girinti korunur.
Inputs: docx_path (required), filename, output_dir. Returns: result
get_aymGet AymBRead-only
AYM karar tam metni. search_aym'den gelen document_url.
Inputs: document_url (required), page. Returns: result
get_emsalGet EmsalCRead-only
Emsal karar tam metni. search_emsal id alanı.
Inputs: decision_id (required), page. Returns: result
get_kararGet KararBRead-only
Karar tam metni. search_karar document_id (bedesten veya yargitay:/danistay: önekli resmi id).
Inputs: document_id (required), page. Returns: result
get_kurumGet KurumBRead-only
Kurum kararı tam metni. search_kurum document_id (kurum:id veya URL).
Inputs: kurum (required), document_id (required), page. Returns: result
get_mevzuat_contentGet Mevzuat ContentARead-only
search_mevzuat'tan gelen mevzuat_id ile tam metin (sayfalı Markdown). Kanun numarası değil.
Inputs: mevzuat_id (required), page. Returns: result
get_mevzuat_gerekceGet Mevzuat GerekceCRead-only
Kanun gerekçesi. search_mevzuat sonucundaki gerekce_id gerekir.
Inputs: gerekce_id (required), page. Returns: result
get_mevzuat_madde_treeGet Mevzuat Madde TreeCRead-only
Mevzuat içindekiler / madde ağacı.
Inputs: mevzuat_id (required). Returns: result
search_aymSearch AymBRead-only
AYM ara. decision_type: bireysel_basvuru veya norm_denetimi. Sonuçtaki document_url ile get_aym.
Inputs: keywords (required), page, semantik, decision_type. Returns: result
search_emsalSearch EmsalBRead-only
UYAP Emsal kamu emsal kararı ara (kişisel UYAP dosyası değil).
Inputs: keyword (required), page, end_date, esas_yil, +3 more. Returns: result
search_kararSearch KararBRead-only
Yargıtay, Danıştay, yerel hukuk, istinaf (BAM), KYB kararı ara. kaynak: bedesten | resmi | hepsi. Tam cümle için tırnak. Sonra get_karar.
Inputs: phrase (required), page, madde, kaynak, +11 more. Returns: result
search_kurumSearch KurumARead-only
Kurum kararı ara. kurum: kik, rekabet, sayistay, kvkk, bddk, btk, gib, sigorta_tahkim, uyusmazlik. KİK: karar_no=2025/UH.II-1801 veya phrase'e aynı numarayı / Karar Metni ifadesini yaz. Sonra get_kurum.
Inputs: kurum (required), phrase (required), page, extra, +3 more. Returns: result
search_mevzuatSearch MevzuatARead-only
Mevzuat ara (kanun no, ad veya metin). Sonra mevzuat_id ile get_mevzuat_content kullan.
Inputs: page, phrase, semantik, tam_cumle, +6 more. Returns: result
search_within_mevzuatSearch Within MevzuatARead-only
Bir mevzuat içinde madde bazında AND/OR/NOT araması. Büyük kanunlar için tam metin yerine bunu kullan.
Inputs: keyword (required), mevzuat_id (required), max_results, case_sensitive. Returns: result
udf_okuUdf OkuARead-only
Yerel .udf dosyasını Markdown olarak okur (eski dilekçeyi modele göstermek için).
Inputs: path (required). Returns: result
udf_yazUdf YazA
Markdown metni yerel .udf dosyasına yazar (UYAP Editor'de açılır, imzasız). Kalın/italik/tablo korunur.
Inputs: markdown (required), filename, output_dir. Returns: result
uslup_kaydetUslup KaydetC
Yerel UDF/DOCX/MD dilekçeyi üslup örneği olarak kaydeder (./uslup).
Inputs: path (required), etiket, klasor. Returns: result
uslup_listeUslup ListeCRead-only
Kayıtlı üslup örneklerini listeler.
Inputs: klasor. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 20 tools
Each tool targets a distinct legal source or document operation (search_kurum vs search_aym vs search_emsal vs search_karar, etc.), but the overlapping case-law search tools (search_emsal, search_karar, search_kurum) could occasionally be confused without domain knowledge. Descriptions clarify sources like Yargıtay/Danıştay vs UYAP Emsal vs administrative institutions.
Most tools follow a consistent search_X/get_X pattern in snake_case, but utility tools mix English verbs (check_kaynaklar) with Turkish noun-verb order (udf_yaz, uslup_kaydet) and noun-noun forms (dilekce_taslagi), creating minor inconsistency. Still readable and mostly predictable.
20 tools is slightly above the ideal 3-15 range, but the breadth of legal sources (5 research families) and document operations justifies each tool's presence; no redundant tools. It feels comprehensive rather than bloated.
The surface covers search and full-text retrieval for all major Turkish legal sources, plus document conversion, petition drafting, and style management. Minor gaps: no delete/update for saved style samples, and no within-decision search for case law (only for legislation). These are workable.
Maintenance
Related MCP Connectors
Search U.S. case law, fetch opinions, and ask matter-aware legal questions over your documents.
Connect AI to millions of laws and court cases with the Lawstronaut MCP.
Turkish law research: court decisions, legislation, deadline and fee calculators, case files.
Deterministic engines for Turkish law: labor claims, accident damages, sentence execution, fees.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables MCP-compatible AI clients to research official Turkish legal sources locally by searching judicial decisions, legislation, and Constitutional Court decisions, and by retrieving legal documents, individual articles, and legislation structures.MIT
- FlicenseNot gradedqualityCmaintenanceEnables local, privacy-conscious research across Turkish case law and legislation by searching precedent and statutes, retrieving decisions and article trees/content, and assembling sourced research drafts with verified quotations.-
- 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.1136 PyPI4AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search Turkish judicial decisions, legislation, and regulatory rulings from sources including Yargıtay, Danıştay, UYAP Emsal, Anayasa Mahkemesi, Sayıştay, AİHM, Resmî Gazete, and various regulatory authorities, and to retrieve decision texts as Markdown.MIT