
Dayanak
io.github.afsozerv2.0.0Updated Oct 9, 2026
Citation-safe Turkish legal research: court decisions and legislation from official sources.
Overview
Lets an assistant search Turkish court decisions and legislation from official sources, with citation-safe results and document drafting support.
- What it does
- Dayanak provides MCP tools for researching Turkish case law and legislation. Core tools search live official sources (Bedesten/Yargıtay, AYM, Danıştay, mevzuat.gov.tr and others), fetch single documents, search a local 11-million-decision corpus with full-text and semantic search, retrieve legislation articles, build research bundles, export documents, and check source health. Extended categories add citation checking, petition drafting, privacy scanning, chamber analysis, and argument scoring.
- When to use it
- Use it for Turkish legal research where citations must be verifiable: finding precedent decisions, checking legislation and amendments, preparing petitions or research bundles, and verifying that quoted text actually exists in a source document.
- Requirements
- Runs locally over stdio via uvx or pipx; Python 3.11 or higher is required. The local corpus is optional — without it, searches run live against official sources and need network access. Optional environment variables configure the cache path, embedding provider, transport, tool profile, and timeouts; faiss-cpu is needed for bulk semantic search.
Installation
In SourceWeft
- Open Dayanak in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Dayanak
v2.0.0 — 11 core + 36 extended MCP tools (47 total) · 152 CLI commands · 80 test files · 48 source modules
Proje sayfası: avfatihsozer.com/projeler/dayanak · English: README.en.md
Resmî ve kamuya açık Türk hukuk kaynaklarında (emsal kararlar ve mevzuat) citation-safe arama, araştırma ve belge hazırlık için MCP sunucusu.
Projenin eski adı emsal-mcp'dir; 2.0.0 sürümüyle Dayanak oldu. Eski emsal-mcp
paketi artık dayanak'ı kurar, eski EMSAL_* ortam değişkenleri ve ~/.emsal_mcp
veri dizini okunmaya devam eder.
İki şekilde çalışır:
- Yerel korpus — 11,1 milyon karar ve güncel mevzuatın tamamı tek bir SQLite dosyasında; FTS5 tam metin + FAISS anlamsal arama. Ağ gerekmez.
- Canlı kaynaklar — Bedesten/Yargıtay, AYM, Danıştay, Uyuşmazlık, Rekabet, Sayıştay, GİB, mevzuat.gov.tr, Resmî Gazete, KVKK adaptörleri.
Kırmızı çizgiler
- Karar, metadata, tarih, esas/karar no, daire, atıf veya kanun maddesi uydurulmaz.
full_text/html_markdowniçeriği olmayan belgeler quote/draft için kullanılmaz.quoteUsablevedraftUsablesadece tam metin/HTML markdown varsatrueolur.- Rate-limit bilinçli olarak muhafazakâr değildir; tek kullanıcı/tek bilgisayar hedeflenmiştir.
Korpus
Ölçüm tarihi 16 Eylül 2026, canlı korpus (cache.sqlite3, 72 GB).
Ayrıntı ve ölçümler: docs/BULK_INDEX.md.
Kurulum
Hızlı kurulum (korpussuz)
Dayanak, 11 milyon kararlık yerel korpus olmadan da çalışır. Bu durumda karar ve
mevzuat aramaları resmî kaynaklardan (Bedesten, mevzuat.gov.tr, AYM, Danıştay ve
diğerleri) canlı yapılır, kararın tam metni de canlı getirilir. Yalnız yerel korpusta
arayan araçlar (search_local_corpus, mevzuat_korpus_ara, mevzuat_madde_getir)
boş sonuç döndürür ve canlı araca yönlendirir. Python 3.11 ya da üstü gerekir.
Claude Code'a eklemek için:
Claude Desktop ya da başka bir MCP istemcisi için yapılandırma:
Varsayılan araç profili 11 temel araçtır; tamamı için DAYANAK_TOOL_PROFILE=full
ortam değişkenini verin. Çekilen belgeler ~/.dayanak/cache.sqlite3 dosyasında
önbelleğe alınır (DAYANAK_CACHE_PATH ile değişir).
Geliştirme kurulumu (korpusla)
Anlamsal aramanın toplu FAISS indeksini kullanabilmesi için ayrıca
pip install faiss-cpu gerekir. Ayrıntılı kurulum: INSTALL.md.
Çalıştırma
HTTP (streamable-http) sunucusu
Canlı kurulumda sunucu scripts\mcp_http_sunucu.cmd ile başlar; bu betik
ortam değişkenlerini kendi içinde kurar ve logu
%LOCALAPPDATA%\dayanak\mcp_http.log dosyasına yazar.
Windows'ta EmsalMcpHttp zamanlanmış görevi aynı betiği oturum açılışında
çalıştırır. Uç nokta: http://<host>:<port>/mcp.
stdio sunucusu
Ortam değişkenleri
Tek seferlik CLI çağrıları için scripts\dayanak-env.cmd aynı değişkenleri
kurar (call .\scripts\dayanak-env.cmd && .venv\Scripts\dayanak ...).
Makineye özel değerler (veri dizini, dinleme adresi, yedek hedefi) repoda
tutulmaz: scripts\yerel-ayar.ornek.cmd dosyasını scripts\yerel-ayar.cmd
adıyla kopyalayıp doldurun (.gitignore'dadır). dayanak-env.cmd,
crawl_incremental.ps1 ve Python betikleri (scripts/_yollar.py) bu dosyayı
okur; boş bırakılan her yol ~/.dayanak altından türetilir.
MCP araçları
Varsayılan profil core — 11 araç kayıtlı gelir. Geri kalanı çalışan sunucuya
load_extended_tools ile kategori kategori eklenir. Sözleşmeler:
docs/MCP_CONTRACTS.md.
Core (11):
Extended (36), kategori bazında:
Core profilin docstring bütçesi (20.000 karakter) dolduğu için
citation_check,prepare_petition,read_legal_file,list_sourcesvelegal_research_guide6 Eylül 2026'da extended'a alındı;load_extended_toolsile geri gelirler.
CLI örnekleri
Korpus crawl + panel
Uzun soluklu korpus taraması (Bedesten'den yıl yıl karar indirme) bir master script ile yürür, durumu tarayıcıdan izlenir.
Notlar:
- Rate limit
DAYANAK_RATE_LIMIT_MAX=12. Ölçüldü: 12'de 429 yok (~2.800 belge/saat), 15'te 429 cooldown döngüsüne girip hız sıfırlanıyor. - Panel,
cache.sqlite3üzerinde yıl sayımı yapmaz — tek bir yıl sorgusu tam tablo taraması yüzünden ~60 sn sürüyor. Sayımlar~/.dayanak/panel_stats.sqlite3içinde artımlı (yalnız yenirowid'ler) tutulur, günde bir kez tam sayım yapılır. - Yıl hedefleri Bedesten'in
totalalanından ölçülür (crawl_logs\hedefler.json), tahmin edilmez.
İşletim
Zamanlanmış işler (Windows Görev Zamanlayıcı, korpus sunucusu):
health_check aracı bu işlerin son koşusunu scheduled_jobs bloğunda
raporlar: schtasks çağırmaz, işlerin kendi log dosyalarına yazdığı bitiş
işaretini ve dosya zaman damgasını okur. Bir iş gecikmişse ya da rc != 0
ile bitmişse overall "degraded" döner (src/dayanak/ops_status.py).
Aynı çıktıda tool_runtime bloğu thread havuzu / zaman aşımı sayaçlarını
verir; runaway > 0 ise sunucu yeniden başlatılmalıdır.
Belgeler
Test
Canlı kaynağa giden testler varsayılan olarak atlanır; açmak için
DAYANAK_LIVE_TESTS=1.
Lisans
GNU Affero Genel Kamu Lisansı sürüm 3 ile lisanslanmıştır (AGPL-3.0-only); tam
metin LICENSE dosyasındadır. Yazılımı değiştirip ağ üzerinden başkalarına
hizmet olarak sunarsanız, değiştirdiğiniz kaynak kodu da o kullanıcılara aynı lisansla
sunmanız gerekir. Güvenlik açıklarının nasıl bildirileceği SECURITY.md
dosyasında anlatılıyor.
Telif hakkı © 2026 Alpaslan Fatih Sözer
Source: README.md at commit 566ef84
Tools
0Version history
1- v2.0.0LatestOct 9, 2026


