Connects to Turkey's Ministry of Justice legislation database (mevzuat.gov.tr and bedesten.adalet.gov.tr) with 26 tools covering 12 types of Turkish legal documents including laws, decrees, regulations, and presidential decisions. You can search by title, content, or article-level keywords, retrieve full texts in Markdown format, and access case reasoning and document hierarchies. Includes semantic search via OpenRouter embeddings and PDF OCR through Mistral for presidential decisions. Handles Boolean operators, date filtering, and caches results for performance. Useful for Turkish legal research, compliance work, or any application needing programmatic access to Turkish legislation within Claude or other MCP clients.
Bu proje, Adalet Bakanlığı'na ait Mevzuat Bilgi Sistemi'ne (mevzuat.gov.tr) erişimi kolaylaştıran bir FastMCP sunucusu oluşturur. Bu sayede, Mevzuat Bilgi Sistemi'nden mevzuat arama ve tüm mevzuat içeriklerini Markdown formatında alma işlemleri, Model Context Protocol (MCP) destekleyen LLM (Büyük Dil Modeli) uygulamaları (örneğin Claude Desktop veya 5ire) ve diğer istemciler tarafından araç (tool) olarak kullanılabilir hale gelir.

🎯 Temel Özellikler
search_mevzuat: 12 türde birleşik arama (başlık, içerik, numara, RG tarihi/sayısı filtreleme)get_mevzuat_content: Tam metin getirmesearch_within_mevzuat: Madde bazında anahtar kelime aramasıget_mevzuat_gerekce: Kanun gerekçesi (amaç, komisyon raporları, madde gerekçeleri)get_mevzuat_madde_tree: İçindekiler / madde ağacı (bölüm-madde hiyerarşisi)search_within_* aracında semantic=True parametresi ile doğal dilde anlam tabanlı arama. OpenRouter API üzerinden embedding modelleri kullanır.🌐 En Kolay Yol: Ücretsiz Remote MCP (Claude Desktop için)
Hiçbir kurulum gerektirmeyen, doğrudan kullanıma hazır MCP sunucusu:
Mevzuat MCPhttps://mevzuat.surucu.dev/mcpHepsi bu kadar! Artık Mevzuat MCP ile konuşabilirsiniz.
Not: Bu ücretsiz sunucu topluluk için sağlanmaktadır. Yoğun kullanım için kendi sunucunuzu kurmanız önerilir.
🪐 Google Antigravity ile Kullanım
mcp_config.json dosyasına aşağıdaki yapılandırmayı ekleyin:{
"mcpServers": {
"mevzuat-mcp": {
"serverUrl": "https://mevzuat.surucu.dev/mcp/",
"headers": {
"Content-Type": "application/json"
}
}
}
}
💡 İpucu: Remote MCP sayesinde Python, uv veya herhangi bir kurulum yapmadan doğrudan Google Antigravity üzerinden Mevzuat Bilgi Sistemi'ne erişebilirsiniz!
uv Kurulumu — Kopyala-YapıştırÖn Gereksinimler: Bilgisayarınızda Python,
uv(kurulum) ve Node.js (indir) kurulu olmalı. (Node.js yalnızca aşağıdaki kurulum komutunu çalıştırmak için gerekir; MCP'yiuvxçalıştırır.)
Aşağıdaki bloğun tamamını terminale yapıştırın. Komut, Antigravity'nin okuduğu ~/.gemini/config/mcp_config.json dosyasını sizin yerinize oluşturur/günceller (varsa diğer sunucularınız korunur):
macOS / Linux (Terminal):
node - <<'MEVZUAT'
const fs=require("fs"),os=require("os"),path=require("path");
const dir=path.join(os.homedir(),".gemini","config"),file=path.join(dir,"mcp_config.json");
fs.mkdirSync(dir,{recursive:true});
let cfg={};try{cfg=JSON.parse(fs.readFileSync(file,"utf8"))}catch{}
if(typeof cfg!=="object"||cfg===null||Array.isArray(cfg))cfg={};
if(typeof cfg.mcpServers!=="object"||cfg.mcpServers===null)cfg.mcpServers={};
cfg.mcpServers["mevzuat-mcp"]={command:"uvx",args:["--from","git+https://github.com/saidsurucu/mevzuat-mcp","mevzuat-mcp"]};
fs.writeFileSync(file,JSON.stringify(cfg,null,2)+"\n");
console.log("mevzuat-mcp eklendi -> "+file);
MEVZUAT
Windows (PowerShell):
@'
const fs=require("fs"),os=require("os"),path=require("path");
const dir=path.join(os.homedir(),".gemini","config"),file=path.join(dir,"mcp_config.json");
fs.mkdirSync(dir,{recursive:true});
let cfg={};try{cfg=JSON.parse(fs.readFileSync(file,"utf8"))}catch{}
if(typeof cfg!=="object"||cfg===null||Array.isArray(cfg))cfg={};
if(typeof cfg.mcpServers!=="object"||cfg.mcpServers===null)cfg.mcpServers={};
cfg.mcpServers["mevzuat-mcp"]={command:"uvx",args:["--from","git+https://github.com/saidsurucu/mevzuat-mcp","mevzuat-mcp"]};
fs.writeFileSync(file,JSON.stringify(cfg,null,2)+"\n");
console.log("mevzuat-mcp eklendi -> "+file);
'@ | node -
Komut mevzuat-mcp eklendi -> ... çıktısını verdiğinde kurulum tamamlanmıştır. Antigravity'yi (açıksa kapatıp) yeniden başlatın; mevzuat-mcp araçları otomatik yüklenir.
💡 İpucu: Lokal kurulumda mevzuat kaynaklarına erişim doğrudan bilgisayarınızda
uvxile çalışır; uzaktan sunucuya ihtiyaç duymaz.
🚀 Claude Haricindeki Modellerle Kullanmak İçin Çok Kolay Kurulum (Örnek: 5ire için)
Bu bölüm, Mevzuat MCP aracını 5ire gibi Claude Desktop dışındaki MCP istemcileriyle kullanmak isteyenler içindir.
uv Kurulumu:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"curl -LsSf https://astral.sh/uv/install.sh | shmevzuatmcpMevzuat MCPuvx --from git+https://github.com/saidsurucu/mevzuat-mcp mevzuat-mcp

⚙️ Claude Desktop Manuel Kurulumu
Ön Gereksinimler: Python, uv, (Windows için) Microsoft Visual C++ Redistributable'ın sisteminizde kurulu olduğundan emin olun. Detaylı bilgi için yukarıdaki "5ire için Kurulum" bölümündeki ilgili adımlara bakabilirsiniz.
Claude Desktop Settings -> Developer -> Edit Config.
Açılan claude_desktop_config.json dosyasına mcpServers altına ekleyin:
{
"mcpServers": {
// ... (varsa diğer sunucularınız) ...
"Mevzuat MCP": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/saidsurucu/mevzuat-mcp",
"mevzuat-mcp"
]
}
}
}
Claude Desktop'ı kapatıp yeniden başlatın.
🔑 API Anahtarları (Opsiyonel)
Tüm search_within_* araçlarında semantic=True ile doğal dilde arama yapabilmek için:
OPENROUTER_API_KEY=your_api_key_here
google/gemini-embedding-001 (3072 boyut). Alternatif olarak:
EMBEDDING_MODEL=intfloat/multilingual-e5-large # 1024 boyut
semantic=True kullanılamazCB Kararı ve CB Genelgesi gibi PDF tabanlı mevzuatlar için Mistral OCR kullanılır:
MISTRAL_API_KEY=your_api_key_here
🛠️ Kullanılabilir Araçlar (MCP Tools)
Bu FastMCP sunucusu LLM modelleri için 26 araç sunar (iki farklı veri kaynağı).
Türe özel arama ve içerik araçları. Her mevzuat türü için ayrı tool'lar.
search_kanun: Kanun başlık ve içeriklerinde arama yaparsearch_within_kanun: Kanun maddelerinde anahtar kelime veya semantik arama yaparsearch_khk: KHK başlık ve içeriklerinde arama yaparsearch_within_khk: KHK maddelerinde anahtar kelime veya semantik arama yaparsearch_tuzuk: Tüzük başlık ve içeriklerinde arama yaparsearch_within_tuzuk: Tüzük maddelerinde anahtar kelime veya semantik arama yaparsearch_kurum_yonetmelik: Kurum yönetmeliği başlık ve içeriklerinde arama yaparsearch_within_kurum_yonetmelik: Kurum yönetmeliği maddelerinde anahtar kelime veya semantik arama yaparsearch_cbk: CB Kararnamesi başlık ve içeriklerinde arama yaparsearch_within_cbk: CB Kararnamesi maddelerinde anahtar kelime veya semantik arama yaparsearch_cbbaskankarar: CB Kararı başlık ve içeriklerinde arama yaparget_cbbaskankarar_content: CB Kararı tam içeriğini getirir (PDF - OCR destekli)search_within_cbbaskankarar: CB Kararı içeriğinde anahtar kelime veya semantik arama yaparsearch_cbyonetmelik: CB Yönetmeliği başlık ve içeriklerinde arama yaparsearch_within_cbyonetmelik: CB Yönetmeliği maddelerinde anahtar kelime veya semantik arama yaparsearch_cbgenelge: CB Genelgesi başlıklarında arama yaparget_cbgenelge_content: CB Genelgesi tam içeriğini getirir (PDF - OCR destekli)search_within_cbgenelge: CB Genelgesi içeriğinde anahtar kelime veya semantik arama yaparsearch_teblig: Tebliğ başlık ve içeriklerinde arama yaparget_teblig_content: Tebliğ tam içeriğini getirirsearch_within_teblig: Tebliğ maddelerinde anahtar kelime veya semantik arama yaparArama Tool'ları için:
aranacak_ifade: Aranacak kelime veya kelime grupları (AND, OR, NOT operatörleri desteklenir)tam_cumle: Tam cümle eşleşmesi (exact phrase)baslangic_tarihi / bitis_tarihi: Tarih aralığı filtrelemepage_number, page_size: Sayfalamaİçinde Arama Tool'ları için:
mevzuat_no: Mevzuat numarası (arama sonucundan alınır)keyword: Aranacak anahtar kelime veya doğal dilde sorgusemantic: True ise semantik arama, False ise anahtar kelime araması (varsayılan: False)case_sensitive: Büyük/küçük harf duyarlılığı (sadece keyword modunda)max_results: Maksimum sonuç sayısıTüm mevzuat türlerini tek araçla kapsayan birleşik araçlar. Gerekçe ve içindekiler gibi ek özellikler sunar.
search_mevzuat - Birleşik Mevzuat AramaTüm 12 mevzuat türünde başlık ve içerik araması yapar.
phrase: İçerikte tam metin arama (Solr sözdizimi)mevzuat_adi: Mevzuat adı/başlığında aramamevzuat_no: Mevzuat numarası filtresimevzuat_tur: Mevzuat türü filtresi (KANUN, KHK, TUZUK, YONETMELIK, CB_KARARNAME, CB_KARAR, CB_YONETMELIK, CB_GENELGE, KKY, UY, TEBLIGLER, MULGA)basliktaAra: Sadece başlıkta ara (varsayılan: true)tamCumle: Tam cümle eşleşmesi (varsayılan: false)resmi_gazete_tarihi: Resmi Gazete tarihi filtresi (GG/AA/YYYY)resmi_gazete_sayisi: Resmi Gazete sayısı filtresipage, page_size: Sayfalamaget_mevzuat_content - Tam Metin GetirmeBir mevzuatın tam metnini Markdown formatında getirir.
mevzuat_id: Mevzuat ID'si (search_mevzuat sonucundan alınır, mevzuat numarası değildir)search_within_mevzuat - Madde Bazında AramaBir mevzuatın maddeleri içinde anahtar kelime araması yapar.
mevzuat_id: Mevzuat ID'si (search_mevzuat sonucundan alınır)keyword: Aranacak kelime veya Boolean ifade (AND, OR, NOT)case_sensitive: Büyük/küçük harf duyarlılığı (varsayılan: false)max_results: Maksimum sonuç sayısı (varsayılan: 25)get_mevzuat_gerekce - Kanun GerekçesiBir kanunun gerekçesini getirir (amaç, komisyon raporları, madde gerekçeleri).
gerekce_id: Gerekçe ID'si (search_mevzuat sonucundan alınır)get_mevzuat_madde_tree - İçindekiler / Madde AğacıBir mevzuatın bölüm-madde hiyerarşisini getirir.
mevzuat_id: Mevzuat ID'si (search_mevzuat sonucundan alınır)Keyword Modu (semantic=False, varsayılan):
keyword: "yatırımcı AND tazmin"
Boolean operatörler (AND, OR, NOT) ile kesin kelime eşleşmesi. Operatörler BÜYÜK HARF olmalıdır.
Semantik Mod (semantic=True, sadece mevzuat.gov.tr araçları):
keyword: "yatırımcının zararının tazmini"
Doğal dilde anlam tabanlı arama. Kelime eşleşmesi aramaz, kavramsal benzerlik ile sonuç döner. OPENROUTER_API_KEY gerektirir.
📜 Lisans
Bu proje MIT Lisansı altında lisanslanmıştır. Detaylar için LICENSE dosyasına bakınız.