Skip to main content
Glama
aydincan

Türk Hukuku İçtihat MCP

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

ictihat_ara(ifade, mahkeme, adet, sayfa)

Karar arar; künye + atıf + id döndürür

karar_getir(karar_id, mahkeme)

Bir kararın resmî tam metni (künye + gerekçe + hüküm)

mahkeme şu değerleri alır:

Değer

Kapsam

Kaynak

adli (varsayılan)

Yargıtay + Bölge Adliye ve ilk derece, birlikte

Bedesten + UYAP Emsal

yargitay

Yargıtay daireleri ve kurulları

Bedesten (mevzuat.adalet.gov.tr)

emsal

Bölge Adliye hukuk daireleri ve ilk derece

UYAP Emsal

idari

Danıştay

karararama.danistay.gov.tr

anayasa

AYM bireysel başvuru

kararlarbilgibankasi.anayasa.gov.tr

norm

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'si yargitay: ö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-ictihat

OpenAI 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 tools
ictihat_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).

NameRequiredDescriptionDefault
adetNo
ifadeYes
sayfaNo
mahkemeNoadli

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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).

NameRequiredDescriptionDefault
mahkemeNoadli
karar_idYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 2 tool updatesv0.1.0
    • First observedictihat_ara
    • First observedkarar_getir

TDQS

A4.6/5.0

Scored across 2 tools

Disambiguation5/5

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.

Naming Consistency5/5

Both tool names follow a consistent Turkish pattern of noun_verb ('karar_getir' and 'ictihat_ara'), using underscores and clear, descriptive terms.

Tool Count4/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides 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.
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Statute & 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.
    4
    164 PyPI
    6
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables programmatic access to Turkish legislation from mevzuat.gov.tr, allowing search, full-text retrieval, and Boolean search within articles.
    -
  • A
    license
    B
    quality
    A
    maintenance
    Enables 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.
    11
    138 PyPI
    3
    AGPL 3.0