Türk Hukuku İçtihat MCP
Search official Turkish judicial decisions and fetch their full texts from source sites so a model cites real künye (court, esas/karar no, date) instead of inventing them.
ictihat_ara(ifade, mahkeme, adet, sayfa): searches decisions and returns structured metadata (mahkeme, esas_no, karar_no, karar_tarihi), a ready-madeatifcitation string, anid, and akaynaklink to the official page.karar_getir(karar_id, mahkeme): retrieves the official full text (künye + reasoning + judgment) using an id from a search, passing the samemahkemevalue.Search syntax: all words must appear,
"tam ifade"for phrases,-kelimeto exclude,ORfor alternatives; pagination supported (adet1–50,sayfafrom 1).mahkemevalues:adli(default; Yargıtay + Bölge Adliye + first instance),idari(Danıştay),anayasa(AYM individual applications); the README also documentsyargitay,emsal, andnorm(AYM norm review).Coverage: Yargıtay (Bedesten/mevzuat.adalet.gov.tr), UYAP Emsal, Danıştay, and AYM decisions.
Runs entirely locally: no telemetry, no disk writes, session-only cache (max 256 decisions), self-identifying User-Agent with ~1 request/second per site, and it stops rather than solving captchas or bypassing 403/429, redirecting you to the official site.
Not legal advice: verify currency, finality, and applicability via the provided official link.
OpenAI Codex can search and retrieve Turkish court decisions (adli, idari, anayasa) using MCP tools.
turk-hukuku-ictihat-mcp
Türk yargı kararlarını resmî kaynaktan yapay zekâ araçlarına açan bir MCP sunucusu: Yargıtay (Adalet Bakanlığı Mevzuat ve İçtihat), Bölge Adliye ve ilk derece (UYAP Emsal), idari yargı (Danıştay) ve anayasa yargısı (AYM Kararlar Bilgi Bankası).
Amaç tek cümle: model bir karara atıf yaparken künyeyi (mahkeme, daire, esas/karar no,
tarih) hafızasından değil resmî kaynaktan alsın. Künye yapısal döner ve her sonuç
kararın resmî sayfasına bağlantı (kaynak) taşır. Model yine de yanılabilir; her künyeyi
o bağlantıdan teyit edin.
Hukuki danışmanlık değildir. Bu araç içtihada erişimi kolaylaştırır; kararın güncelliğini, kesinleşme durumunu ve somut olaya uygunluğunu siz değerlendirin. Bir kararın bağlayıcılığı ve emsal değeri ayrı bir hukuki analiz gerektirir.
Ayrıntı: SORUMLULUK-REDDI.md · PRIVACY.md (veri toplama yok, telemetri yok; dış bağlantılar yalnızca resmî karar siteleri).
Belgeler ve kurulum rehberi: turk-hukuku.com/mcp · Terminal kullanmıyorsanız masaüstü uygulaması bu sunucuyu kendisi kurup çalıştırır (Mac ve Windows).
Ne yapar
Tool | İşlev |
| Karar arar; künye + atıf + |
| Bir kararın resmî tam metni (künye + gerekçe + hüküm) |
mahkeme şu değerleri alır:
Değer | Kapsam | Kaynak |
| Yargıtay + Bölge Adliye ve ilk derece, birlikte | Bedesten + UYAP Emsal |
| Yargıtay daireleri ve kurulları | Bedesten (mevzuat.adalet.gov.tr) |
| Bölge Adliye hukuk daireleri ve ilk derece | UYAP Emsal |
| Danıştay | karararama.danistay.gov.tr |
| AYM bireysel başvuru | kararlarbilgibankasi.anayasa.gov.tr |
| AYM norm denetimi (iptal/itiraz) | aynı kaynak |
karar_getir'e aramada kullandığın mahkeme değerini aynen geçir (yargitay: önekli id
her durumda Yargıtay'dan gelir). Sözcükler birlikte aranır, hepsi geçmeli; tam ifade için
çift tırnak kullan ("ihtiyaç nedeniyle tahliye"). Yargıtay, emsal ve AYM aramasında
başına eksi hariç tutar (-ceza), OR "veya" demektir. Kesme işaretinden sonraki ek
atılır ("TMK'nın" → "TMK"). adli aramada adet en az 2'dir.
Tipik akış: ictihat_ara("ihtiyaç nedeniyle tahliye", mahkeme="yargitay") → sonuçtan bir
id seç → karar_getir(id, mahkeme="yargitay") → kararın tam metni. Her sonuç hazır bir
atif taşır: "Yargıtay 6. Hukuk Dairesi, E.2015/2565 K.2016/25, T.18.01.2016" ·
"Danıştay 6. Daire, E.2023/1084 K.2025/10046" · "AYM, B. No: 2020/36883, K.T. 16/12/2025".
Her sonuç ayrıca kararın herkese açık sayfasını (kaynak) verir; Yargıtay ve UYAP Emsal
kararları mevzuat.adalet.gov.tr/ictihat/<id> adresinde okunur biçimde açılır.
Related MCP server: Türk Hukuku Mevzuat MCP
Kapsam
Yargıtay (
mahkeme="yargitay"): hukuk ve ceza daireleri ile kurulların kararları; Adalet Bakanlığı'nın Mevzuat ve İçtihat Programı'nın arka ucu (bedesten.adalet.gov.tr). Her kararın herkese açık sayfası:https://mevzuat.adalet.gov.tr/ictihat/<id>.Bölge Adliye ve ilk derece (
mahkeme="emsal"): Bölge Adliye Mahkemeleri hukuk daireleri ve bazı ilk derece mahkemeleri (asliye ticaret, fikrî ve sınaî haklar); UYAP Emsal. Herkese açık UYAP Emsal Yargıtay kararı içermez.Adli yargı birlikte (
mahkeme="adli", varsayılan): iki kaynağı aynı anda arar; Yargıtay sonuçlarının id'siyargitay:önekini taşır.İdari yargı (
mahkeme="idari"): Danıştay kararları (karararama.danistay.gov.tr, 390.000+ doküman).Anayasa yargısı (
mahkeme="anayasa"): AYM bireysel başvuru kararları (kararlarbilgibankasi.anayasa.gov.tr).Norm denetimi (
mahkeme="norm"): AYM iptal/itiraz kararları; künye E./K. numaraları ve Resmî Gazete bilgisiyle döner (aynı kaynak).
Nasıl çalışır
Her kaynak bir arama + bir belge uç noktası sunar:
Bedesten : POST /emsal-karar/searchDocuments + POST /emsal-karar/getDocumentContent
UYAP Emsal : POST /aramalist (aranan) + GET /getDokuman?id
Danıştay : POST /aramalist (andKelimeler[]) + GET /getDokuman?id&arananKelime
AYM : POST /api/core/public/search (JSON; arama da tam metin de aynı uçtan)Sunucu aramayı yapar, künyeleri yapısal döndürür ve metni okunur düz metne çevirir (Danıştay iç içe HTML kodlamasından, AYM Word-export gövdesinden arındırılır). Tamamen yereldir; veri toplanmaz.
Resmî sitelere saygı
Kendini tanıtır. Her istekte kendi User-Agent'ını gönderir:
turk-hukuku-ictihat-mcp/<sürüm> (+https://turk-hukuku.com/mcp/). Tarayıcı ya da resmî web uygulaması gibi davranmaz; bu amaçla başlık eklemez.Site başına sınırlı istek. Aynı siteye aynı anda tek istek gider ve iki istek arasında en az bir saniye beklenir (site başına yaklaşık saniyede bir istek).
Oturum içi önbellek. Getirilen kararlar (en çok 256 karar) yalnızca oturum boyunca bellekte tutulur; aynısı yeniden istenince siteye tekrar gidilmez. Diske bir şey yazılmaz.
Captcha çözmez, atlamaz; sınırda durur. Site doğrulama (captcha) isterse, erişimi reddederse (HTTP 403), erişim sınırı bildirirse (HTTP 429), beklenen veri yerine başka bir sayfaya yönlendirirse ya da bir web sayfası döndürürse sunucu durur, isteği yinelemez ve sizi resmî siteye yönlendirir. O siteye bir süre (yaklaşık iki dakika ya da sitenin bildirdiği süre kadar) yeni istek göndermez. Doğrulama isteği yalnızca sayfadaki doğrulama kutusundan ya da sitenin doğrulama bayrağından anlaşılır; "ben robot değilim" sözünü aktaran bir karar sunucuyu durdurmaz.
Geçici hatalarda kısa bir ileti verir. Sitede geçici bir arıza (HTTP 5xx), "bulunamadı" yanıtı (HTTP 404) ya da ağ hatası olursa sunucu bunu kısa bir Türkçe iletiyle bildirir ve isteği yinelemez; bu durumda bekleme süresi uygulanmaz.
Kurulum
PyPI'de yayımlıdır; uv
ile ayrı kurulum gerekmeden çalışır.
Claude Code
claude mcp add turk-hukuku-ictihat -- uvx --from turk-hukuku-ictihat-mcp turk-hukuku-ictihatOpenAI Codex
~/.codex/config.toml:
[mcp_servers.turk-hukuku-ictihat]
command = "uvx"
args = ["--from", "turk-hukuku-ictihat-mcp", "turk-hukuku-ictihat"]Gemini CLI
~/.gemini/settings.json içindeki mcpServers altına:
"turk-hukuku-ictihat": {
"command": "uvx",
"args": ["--from", "turk-hukuku-ictihat-mcp", "turk-hukuku-ictihat"]
}Alternatif: pip
pip install turk-hukuku-ictihat-mcp
# komut: turk-hukuku-ictihat (ya da: python -m turk_hukuku_ictihat)İlgili: kanun/mevzuat metni için turk-hukuku-mevzuat-mcp.
Lisans
MIT · © 2026 Aydın Can Polatkan
Veriler kaynak kurumlara aittir (Adalet Bakanlığı, UYAP Emsal, Danıştay, Anayasa Mahkemesi); bu proje yalnızca kamuya açık resmî karar metnine erişimi kolaylaştıran bağımsız bir istemcidir.
Bu çalışma, ömrünü Türk yargısına adamış babam Hâkim Vahit Polatkan'ın ebedi anısına ithaf edilmiştir.
Available Tools
2 toolsictihat_araA
Türk yargı kararı arar; künye + atıf + id döndürür.
Bir karara atıf yapmadan ÖNCE bunu çağır. Dönen her sonuç yapısal künye taşır
(mahkeme, esas_no, karar_no, karar_tarihi) ve hazır bir atif dizesi verir —
bunları aynen kullan, uydurma. Tam metin için sonuçtaki id ile aynı mahkeme
değerini karar_getir'e geçir.
mahkeme: "adli" (Yargıtay + Bölge Adliye + ilk derece, UYAP Emsal — varsayılan), "idari" (Danıştay) ya da "anayasa" (AYM bireysel başvuru). adet: en çok kaç sonuç (1-50). sayfa: sayfalama (1'den başlar).
| Name | Required | Description | Default |
|---|---|---|---|
| adet | No | ||
| ifade | Yes | ||
| sayfa | No | ||
| mahkeme | No | adli |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but the description discloses that the tool returns structured data (künye, atıf, id) and explains the mahkeme parameter options and defaults. It does not mention limitations or error conditions, but for a search tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences that front-load purpose and provide essential usage details without redundancy. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return structure (künye, atıf, id) and how to use them. It covers all parameters and usage context. Complete for a search tool with one sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides no descriptions (0% coverage). The description explains the meaning of mahkeme (three court types), adet (max results 1-50), sayfa (pagination starting at 1), and implicitly ifade (search term). It adds value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches for Turkish court decisions and returns structural citation details and an ID. It differentiates from sibling tool karar_getir by specifying its role (search vs full text).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit instructions: call before citing a decision, use the returned atif string exactly, and pass the id and mahkeme to karar_getir for full text. This provides clear when-to-use and how-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
karar_getirA
Bir kararın resmî TAM metnini getirir (id + mahkeme, ictihat_ara sonucundan).
Dönen metin kararın künyesi + gerekçesi + hükmüdür. Metni ve künyeyi aynen
aktar; esas/karar numarasını ve tarihi değiştirme. mahkeme, aramada kullandığın
değerle aynı olmalı ("adli" → UYAP Emsal, "idari" → Danıştay, "anayasa" → AYM).
| Name | Required | Description | Default |
|---|---|---|---|
| mahkeme | No | adli | |
| karar_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the return content (summary, reasoning, verdict) and warns against modifying data. No side effects discussed but for a read-only tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines purpose, second explains return and constraints. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without output schema or annotations, the description adequately covers purpose, parameters, and behavior. Lacks error handling but acceptable for a retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given 0% schema description coverage, the description adds meaning by explaining that mahkeme must match the search value and provides mapping to data sources, and karar_id comes from search results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the official full text of a decision using id and court, and distinguishes from the sibling tool 'ictihat_ara' which is for searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies when to use (after ictihat_ara result) and provides constraints (do not modify case numbers, court must match). It lacks explicit when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.1.0- First observed
ictihat_ara - First observed
karar_getir
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: 'ictihat_ara' searches for precedents and returns identifiers, while 'karar_getir' retrieves the full text using those identifiers. There is no overlap or ambiguity.
Both tool names follow a consistent Turkish pattern of noun_verb ('karar_getir' and 'ictihat_ara'), using underscores and clear, descriptive terms.
With only two tools, the set is minimal but appropriately scoped for the core functionality of searching and retrieving full-text decisions. It is slightly below the typical range but still reasonable.
The tools cover the essential lifecycle of legal precedent retrieval: search with filtering and pagination, then get full text. There are no obvious gaps for the stated purpose.
Maintenance
Related MCP Connectors
Turkish case law, updated daily: 11.5M decisions, citation check, statute map, deep research.
Resolve, search and verify legal citations against the official sources, with provenance.
- İçtihad AIOAuthai.ictihad
Turkish law research: court decisions, legislation, deadline and fee calculators, case files.
French case law (Judilibre) and codes (Légifrance) from official sources, with citation checking.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceProvides programmatic access to the Turkish Ministry of Justice Legislation Information System (mevzuat.gov.tr). It enables searching for legislation, navigating hierarchical article structures, and retrieving article content in Markdown format.1MIT
- AlicenseAqualityCmaintenanceStatute & article text (mevzuat.gov.tr) and court decisions (UYAP Emsal, Council of State, Constitutional Court), with their citation, source, live. It works as long as the official sources remain reachable.4164 PyPI6MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables programmatic access to Turkish legislation from mevzuat.gov.tr, allowing search, full-text retrieval, and Boolean search within articles.-
- AlicenseBqualityAmaintenanceEnables 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.11138 PyPI3AGPL 3.0