Türkiye Vergi MCP
Enables Turkish tax research, calculation, and document management using official GİB resources, including legislation search, tax computation, invoice validation, and circular drafting.
README
Türkiye Vergi MCP
Resmî Gelir İdaresi Başkanlığı (GİB) kaynaklarını kullanan, yerel çalışabilen ve yapılandırılmış sonuç üreten Model Context Protocol sunucusu.
Bu proje şu yetenekleri tek sunucuda toplar:
- Kanun, madde, tebliğ, sirküler, özelge, yönetmelik ve karar arama
- Resmî belge tam metni ve tarih aralığına göre değişiklik tarama
- KDV, KDV tevkifatı, stopaj ve gecikme zammı hesaplama
- Canlı GİB vergi takvimi ve isteğe bağlı ICS çıktısı
- UBL-TR/e-Fatura XML ile CSV/XLSX fatura denetimi
- Resmî kanıt bağlantıları içeren şirket içi vergi sirküleri taslağı
Bu sunucu genel bilgilendirme ve araştırma amaçlıdır. Hukuki görüş veya mali müşavirlik hizmeti vermez. İşleme özgü sonuçlar güncel resmî metin ve yetkili uzman tarafından doğrulanmalıdır.
Hızlı başlangıç
Gereksinimler: Python 3.11–3.14 ve uv.
uv sync --native-tls --extra dev
uv run vergi-mcp
stdio taşıması kullanılır; masaüstü MCP istemcileri için önerilen çalışma
şeklidir. Sunucu standart çıktıya log yazmaz, dolayısıyla JSON-RPC akışı bozulmaz.
Genel bir MCP istemci yapılandırması:
{
"mcpServers": {
"vergi": {
"command": "uv",
"args": [
"--directory",
"C:\\PROJE\\vergiMcp",
"run",
"vergi-mcp"
]
}
}
}
Yolu kendi proje klasörünüzle değiştirin. API anahtarı gerekmez.
Sunulan MCP araçları
| Araç | İşlev |
|---|---|
saglik_kontrolu |
Sunucu sürümü ve isteğe bağlı canlı GİB erişimi |
mevzuat_ara |
Tüm resmî vergi belge türlerinde arama |
ozelge_ara |
Konu, kanun ve tarih filtreli özelge arama |
mevzuat_belgesi_getir |
Arama sonucundaki GİB sayfasını temiz metin olarak alma |
mevzuat_degisikliklerini_bul |
Tarih aralığındaki yeni düzenlemeleri tarama |
kdv_hesapla |
KDV hariç/dâhil ve isteğe bağlı tevkifat hesabı |
stopaj_hesapla |
Brüt/net stopaj ve isteğe bağlı KDV hesabı |
gecikme_zammi_oranlari |
Yürürlük tarihli resmî oran tablosu |
gecikme_zammi_hesapla |
Tam ay ve günlük kesirleri dikkate alan hesaplama |
vergi_takvimi |
Canlı beyan/ödeme takvimi ve ICS çıktısı |
fatura_denetle |
XML, CSV veya XLSX fatura kontrolü |
sirkuler_taslagi_olustur |
Kaynak bağlantılı Markdown sirküler taslağı |
resmi_kaynaklari_listele |
Kullanılan birincil kaynak kataloğu |
Kaynaklar ayrıca vergi://resmi-kaynaklar,
vergi://oranlar/gecikme-zammi ve vergi://yasal-uyari URI’leriyle sunulur.
Örnek istekler
Bir MCP istemcisinde doğal dille şunları isteyebilirsiniz:
- “KDV tevkifatı konusunda 2026 özelgelerini ara ve kaynaklarını göster.”
- “118.000 TL KDV dâhil tutarı %20 KDV ve 7/10 tevkifatla hesapla.”
- “1 Ocak–31 Temmuz 2026 arasındaki KDV son tarihlerini ICS olarak getir.”
- “Bu UBL-TR XML faturasındaki matematik ve zorunlu alan hatalarını denetle.”
- “Son altı aydaki e-Defter düzenlemelerinden yönetim sirküleri taslağı hazırla.”
Fatura denetimi
Üç girdi biçimi desteklenir:
- Doğrudan
xml_icerigi - Base64 kodlu
base64_xml - Yerel
.xml,.csvveya.xlsxiçindosya_yolu
Yerel dosya okuma varsayılan olarak yalnızca sunucunun başlatıldığı klasörle
sınırlıdır. İzinli kökleri .env içinde noktalı virgülle belirleyebilirsiniz:
VERGI_MCP_ALLOWED_INPUT_DIRS=C:\Faturalar;D:\Kontrol
VERGI_MCP_MAX_INPUT_BYTES=10485760
VERGI_MCP_MAX_INVOICE_ROWS=10000
Denetleyici:
- DTD/haricî varlık işlemeden güvenli XML ayrıştırır.
- UBL 2.1/TR profil alanlarını ve taraf kimliklerini kontrol eder.
- Satır, vergi, tevkifat ve ödenecek tutar matematiğini
Decimalile karşılaştırır. - CSV/XLSX sütunlarını Türkçe ve İngilizce yaygın başlıklarla eşler.
- VKN/TCKN değerlerini çıktıda maskeleyerek raporlar.
- Dosya içeriğini hiçbir dış servise göndermez.
Bu kontrol, GİB’in tam XSD/Schematron doğrulaması veya XMLDSig/XAdES imza doğrulaması değildir. Sonuç modeli bunu açıkça belirtir; “GİB tarafından geçerli” iddiasında bulunmaz. Tam resmî doğrulama için GİB’in güncel UBL-TR 1.2.1 XSD, Schematron/kod listesi ve uygun XPath 2.0 motoru ayrıca kurulmalıdır.
Hesaplamaların kapsamı
- Para hesabında ikili kayan nokta yerine
DecimalveROUND_HALF_UPkullanılır. - KDV ve stopaj oranları kullanıcı girdisidir; işlem sınıflandırması otomatik hukuki karar olarak verilmez.
- Gecikme zammı oranları yürürlük başlangıç/bitiş tarihleriyle
tax_rates.jsoniçinde tutulur. - Gecikme zammı motoru tam ayları, günlük kesirleri, dönem içi oran değişikliklerini, günlük oranın altı ondalığa yukarı tamamlanmasını ve asgari 1 TL kuralını raporlar.
- Tecil, iflas, aciz, mücbir sebep ve benzeri özel durumlar standart hesap dışında bırakılır ve sonuçta uyarı olarak gösterilir.
Streamable HTTP
Yerel HTTP endpoint’i çalıştırmak için:
uv run vergi-mcp-http
Endpoint http://127.0.0.1:8000/mcp olur. Kimlik doğrulamasız HTTP taşıması
güvenlik nedeniyle yalnızca loopback adresinde başlatılır. Özellikle mükellef veya
fatura verisi işlenecekse sunucuyu doğrudan internete açmayın. Uzak dağıtım için
OAuth/token doğrulaması, TLS, erişim kaydı ve veri saklama politikası ekleyin.
Yapılandırma
Tüm değişkenler VERGI_MCP_ önekini kullanır. Örnekler
.env.example dosyasındadır.
| Değişken | Varsayılan | Açıklama |
|---|---|---|
VERGI_MCP_REQUEST_TIMEOUT_SECONDS |
25 |
GİB HTTP zaman aşımı |
VERGI_MCP_CACHE_TTL_SECONDS |
600 |
Salt okunur yanıt önbelleği |
VERGI_MCP_ALLOWED_INPUT_DIRS |
. |
Okunabilecek yerel klasörler |
VERGI_MCP_MAX_INPUT_BYTES |
10485760 |
Azami fatura boyutu |
VERGI_MCP_MAX_INVOICE_ROWS |
10000 |
Azami tablo satırı |
VERGI_MCP_HTTP_HOST |
127.0.0.1 |
Yerel HTTP bind adresi |
VERGI_MCP_HTTP_PORT |
8000 |
Yerel HTTP portu |
VERGI_MCP_LOG_LEVEL |
INFO |
stderr log seviyesi |
Test ve kalite kontrolleri
uv run pytest
uv run pytest --cov=vergi_mcp --cov-report=term-missing
uv run ruff check .
uv run mypy src
uv run python scripts/live_smoke.py
uv run python scripts/http_smoke.py
Test paketi saf hesaplamaları, XML/tablo ayrıştırmayı, dosya yolu sınırlarını, GİB yanıt normalizasyonunu ve MCP’nin bellek içi araç sözleşmelerini kapsar.
Mimari
src/vergi_mcp/
├── server.py MCP araç, kaynak ve prompt kayıtları
├── config.py Ortam ayarları ve dosya erişim sınırları
├── clients/gib.py GİB HTTP adaptörü, retry ve önbellek
├── services/mevzuat.py Mevzuat/özelge/değişiklik araması
├── services/calendar.py Canlı vergi takvimi
├── services/calculations.py Decimal tabanlı hesap motorları
├── services/invoice.py UBL-TR ve tablo denetimi
├── services/circular.py Kanıt tabanlı sirküler taslağı
└── data/tax_rates.json Yürürlük tarihli oran verisi
İş mantığı MCP dekoratörlerinden ayrıdır; servisler doğrudan test edilebilir. GİB’in ön yüz API’sinin yayımlanmış bir OpenAPI sözleşmesi bulunmadığı için bütün uçlar tek bir değiştirilebilir adaptörde tutulur ve beklenmeyen yanıtlar sessizce yanlış sonuca çevrilmez.
Veri güncelliği
Mevzuat ve takvim her çağrıda GİB’den alınır ve kısa süreli önbelleğe konur. Hesaplama oranları sürümlü yerel veridir. Oran dosyası güncellenirken:
- GİB’in resmî oran geçmişini kontrol edin.
- Yeni kaydı yürürlük tarihi ve kaynak URL’siyle ekleyin.
- Önceki kaydın
effective_totarihini kapatın. - Oran sınır ve geçiş testlerini çalıştırın.
Lisans
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.