# mcp-turkiye

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/BerkantACUN/mcp-turkiye  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/mcp-turkiye

## Description
Türkiye'nin kamu verisi: TCMB kur, AFAD deprem, MGM hava, akaryakıt, açık veri, tatil, TCKN/IBAN.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "mcp-turkiye": {
    "command": "npx",
    "args": ["-y","mcp-turkiye"]
  }
}
```

## Documentation & README

# mcp-turkiye

**Türkiye'nin kamu verisi, tek MCP sunucusunda.** Claude, Cursor, VS Code, Codex ve MCP konuşan her asistan için: TCMB döviz kurları, TCMB EVDS istatistikleri (enflasyon, faiz, 40 binden fazla seri), BIST günlük fiyatlar, kripto TL fiyatları, AFAD ve Kandilli deprem katalogları, MGM hava durumu ve uyarıları, akaryakıt fiyatları, İstanbul anlık trafik indeksi, nöbetçi eczaneler (İstanbul, İzmir), İSPARK otopark doluluğu, İstanbul hava kalitesi, Metro İstanbul hat/istasyon/duyuruları, İzmir ESHOT canlı otobüs ve hal fiyatları, İBB/İzmir/Konya/Gaziantep açık veri portalları, Resmî Gazete fihristi ve metinleri, mevzuat.gov.tr'de kanun/yönetmelik arama ve madde madde güncel metin, resmî tatiller, ÖSYM sınav takvimi, resmî parametreler (asgari ücret, SGK taban/tavan), 81 il ve 973 ilçenin nüfus/yüzölçümü/plaka bilgisi, AA ve TRT haber başlıkları ve TCKN / VKN / IBAN biçim doğrulama — her yanıt kaynağı ve alınma zamanıyla birlikte.

*Turkey's public data as one MCP server: central-bank FX rates, the central bank's EVDS statistics service (inflation, rates, 40,000+ series), Borsa İstanbul daily prices, crypto prices in lira, the national and Kandilli earthquake catalogues, state weather service observations, forecasts and warnings, district-level fuel prices, Istanbul's live traffic index, on-duty pharmacies (Istanbul, İzmir), İSPARK car-park occupancy, Istanbul air quality, Istanbul metro lines/stations/announcements, İzmir live buses and wholesale food prices, the Istanbul, İzmir, Konya and Gaziantep open-data portals (search, datasets, DataStore rows), the Official Gazette's daily index and article texts, consolidated legislation search and article-level text from mevzuat.gov.tr, public holidays, the national exam calendar, official annual figures (minimum wage, social-security floor/ceiling), province and district profiles, AA/TRT headlines and offline ID/tax/IBAN checksum validation. Every answer carries its source and fetch time.*

[![CI](https://github.com/BerkantACUN/mcp-turkiye/actions/workflows/ci.yml/badge.svg)](https://github.com/BerkantACUN/mcp-turkiye/actions/workflows/ci.yml)
[![npm](https://img.shields.io/npm/v/mcp-turkiye)](https://www.npmjs.com/package/mcp-turkiye)
[![license: MIT](https://img.shields.io/badge/code-MIT-yellow.svg)](LICENSE)
[![sources](https://img.shields.io/badge/data-SOURCES.md-blue)](SOURCES.md)

> **Bağımsız projedir.** mcp-turkiye hiçbir kamu kurumunun resmî hizmeti değildir. MIT lisansı yalnızca **kodu** kapsar; her veri kaynağının kendi kullanım şartı vardır ([SOURCES.md](https://github.com/BerkantACUN/mcp-turkiye/blob/HEAD/SOURCES.md)) ve sunucunun kullanımı [Kabul Edilebilir Kullanım](https://github.com/BerkantACUN/mcp-turkiye/blob/HEAD/ACCEPTABLE_USE.md) politikasına tabidir.

## Kurulum

Node.js 20+ yeterli; kurulacak başka bir şey yok. Anahtar yalnızca TCMB EVDS araçları için gerekir (ücretsiz, aşağıda); diğer her şey anahtarsız çalışır.

**Claude Code**

```sh
claude mcp add turkiye -- npx -y mcp-turkiye
```

**Claude Desktop** — `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "turkiye": { "command": "npx", "args": ["-y", "mcp-turkiye"] }
  }
}
```

**Cursor / VS Code** — `.cursor/mcp.json` ya da `.vscode/mcp.json`:

```json
{
  "mcpServers": {
    "turkiye": { "command": "npx", "args": ["-y", "mcp-turkiye"] }
  }
}
```

**Cline** — MCP ayarlarında aynı `mcpServers` girdisi; Cline'a kurulumu kendisi yaptırmak için adım adım yönerge: [llms-install.md](https://github.com/BerkantACUN/mcp-turkiye/blob/HEAD/llms-install.md).

Sonra asistanınıza Türkçe sorun:

> "Bugünkü TCMB dolar satış kuru ne, hangi bültenden?"
> "Yıllık enflasyon kaç, politika faizi ne, son açıklanan ay hangisi?"
> "Son üç günde 4'ten büyük deprem oldu mu?"
> "Kadıköy'de hava nasıl, hafta sonu yağmur var mı?"
> "Bugün için meteorolojik uyarı var mı, Ankara'yı kapsıyor mu?"
> "Kandilli'ye göre son 24 saatte 3'ten büyük kaç deprem oldu?"
> "KPSS sonuçları ne zaman açıklanacak, ALES/3 başvurusu ne zaman?"
> "Bornova'da motorin kaç lira?"
> "İBB açık veride otopark verisi var mı, tablosunu göster."
> "Bugün Resmî Gazete'de hangi yönetmelikler çıktı, ilkini özetle."
> "KVKK'nın 6. maddesi ne diyor, özel nitelikli veri ne?"
> "2026 asgari ücret net kaç lira, SGK tavanı ne, hangi kanuna göre?"
> "İş Kanunu'nda ihbar süreleri hangi maddede, kaç hafta?"
> "THYAO son bir ayda ne yaptı, BIST 100'e göre?"
> "Yıllık enflasyon son 8 ayda nasıl seyretti?" *(EVDS anahtarıyla)*
> "İstanbul'da şu an trafik nasıl?"
> "29 Ekim 2026 hangi güne geliyor, iş günü mü?"
> "TR33 0006 1005 1978 6457 8413 26 geçerli bir IBAN mı, hangi banka?"

## Uzak sunucu (Docker)

Her makineye kurmak yerine sunucuyu bir kez buluta koyup istemcileri URL ile bağlayabilirsiniz. Her sürümde imaj `ghcr.io/berkantacun/mcp-turkiye` adresine yayınlanır; yerleşik Streamable HTTP giriş noktası (`dist/http.js`) aynı araçları ve aynı zarfı `/mcp` yolunda sunar. Durumsuzdur (oturum kimliği yok), bu yüzden birden çok kopya arkasında da çalışır.

```sh
docker run -p 8080:8080 -e MCP_TURKIYE_API_KEY=<gizli-anahtar> ghcr.io/berkantacun/mcp-turkiye
claude mcp add --transport http turkiye http://localhost:8080/mcp --header "X-API-Key: <gizli-anahtar>"
```

Docker olmadan: `npm run build && HOST=127.0.0.1 PORT=8080 node dist/http.js` (yerelde yalnızca kendi makinenizden erişilsin diye `127.0.0.1`).

| Ortam değişkeni | Varsayılan | Ne yapar |
|---|---|---|
| `PORT` | `8080` | Dinlenen port |
| `HOST` | `0.0.0.0` | Dinlenen adres; IPv6 olmayan ortamlarda (Azure Container Apps) `::` çalışmaz |
| `MCP_TURKIYE_API_KEY` | — | Verilince her `/mcp` isteği `X-API-Key` başlığı ister, yoksa `401`. Eski ad `MCP_PROXY_API_KEY` de geçerli |
| `MCP_TURKIYE_RATE_LIMIT` | `60` | IP başına dakikadaki istek sınırı; aşılınca `429` ve `Retry-After`. `0` kapatır |
| `TRUST_PROXY` | — | `1` iken istemci IP'si `X-Forwarded-For`'un en sağdaki girdisinden okunur; yalnızca güvenilir bir ters vekilin arkasında açın |
| `MCP_TURKIYE_ALLOWED_ORIGINS` | — | Tarayıcıdan çağırmasına izin verilen kaynaklar, virgülle (`*` hepsi). `Origin` başlığı taşıyan ve listede olmayan istek `403` alır; MCP istemcileri bu başlığı göndermez, tarayıcılar (DNS rebinding dahil) gönderir |

- `GET /health` anahtarsız `200` döner ve hız sınırına sayılmaz; sağlık yoklaması için.
- 1 MB'tan büyük istek gövdesi `413` alır; `SIGTERM`'de sunucu yeni bağlantı almayı bırakır, süren istekleri bitirir (en fazla 10 sn).
- Herkese açık bir uçta anahtarsız çalıştırmayın: sunucu sizin adınıza kamu kurumlarına istek atan açık bir vekil olur.
- Hız sınırı bellek içidir ve kopya başınadır; birden çok kopyada toplam sınır kopya sayısıyla çarpılır.
- Konya açık veri portalı Türkiye dışındaki IP'leri reddeder; yurtdışı bölgedeki bir bulutta `acikveri_*` araçları Konya için hata döner, diğer kaynaklar çalışır (Azure Container Apps, Germany West Central'da denendi).

### claude.ai / Claude Desktop'a uzak sunucu olarak bağlama

Claude Desktop'ta tek makine için yukarıdaki yerel kurulum (`npx`) yeterlidir. Uzak bağlayıcı, sunucuyu claude.ai'de (web, mobil) ya da her makineye kurmadan kullanmak içindir. **Bu proje herkese açık bir uç nokta işletmez**; önce yukarıdaki imajla kendi sunucunuzu kurmanız gerekir.

Önkoşullar ([Anthropic belgesi](https://claude.com/docs/connectors/custom/remote-mcp)):

- Sunucu HTTPS ile genel internetten erişilebilir olmalı. Bağlantı sizin makinenizden değil, Anthropic'in sunucularından kurulur; Claude Desktop'ta da böyledir. Anthropic'in çıkış aralığı `160.79.104.0/21`'dir ([IP adresleri](https://platform.claude.com/docs/en/api/ip-addresses)); güvenlik duvarınızda bu aralığa izin verin.
- Adres `https://<alan-adınız>/mcp` biçimindedir; aktarım Streamable HTTP'dir.

Ekleme:

- **Free, Pro, Max:** **Customize → Connectors → Add custom connector**, adı ve URL'yi girin.
- **Team, Enterprise:** Sahip, **Organization settings → Connectors → Add → Custom → Web** ile ekler; üyeler **Customize → Connectors**'ta **Connect** der.
- Sohbette **+ → Connectors** menüsünden bağlayıcıyı açıp kapatabilirsiniz.

Anahtar (`MCP_TURKIYE_API_KEY`):

- Ekleme penceresinde **Request headers** bölümü varsa: kimlik doğrulamada **No sign-in** seçin, başlık olarak listeden `x-api-key`'i seçip değere anahtarı olduğu gibi yazın. Bu özellik beta ve yalnızca bazı kuruluşlarda açık.
- Bölüm yoksa Claude `X-API-Key` gönderemez ve anahtarlı sunucu her isteğe `401` döner. Anahtarı kapatmak sunucuyu açık bir vekile çevirir (yukarıdaki uyarı). Bu durumda Claude Desktop'ta yerel kurulumu kullanın. Anahtarsız çalıştırmaya karar verirseniz en azından güvenlik duvarında yalnızca `160.79.104.0/21`'e izin verin; bu aralık tüm Claude kullanıcılarının bağlayıcı trafiğidir, URL'yi bilen başka bir Claude kullanıcısı yine bağlanabilir.
- Kimlik doğrulama ayarları eklendikten sonra değiştirilemez. Anahtarı değiştirdiğinizde bağlayıcıyı silip yeniden ekleyin.

Bilmeniz gerekenler:

- Claude'dan gelen bütün istekler Anthropic'in çıkış adreslerinden gelir, dolayısıyla IP başına hız sınırı bu adreslerde paylaşılır. Çok kullanıcılı bir kuruluşta `MCP_TURKIYE_RATE_LIMIT`'i yükseltmeniz gerekebilir. Sunucu bir ters vekilin arkasındaysa `TRUST_PROXY=1` verin, yoksa bütün istekler vekilin adresinden gelmiş sayılır.
- claude.ai ve Desktop'ta bir araç çağrısı en fazla 240 saniye sürebilir, bir araç sonucu yaklaşık 150.000 karakterle sınırlıdır ([teknik sınırlar](https://claude.com/docs/connectors/building)).
- Yalnızca kendi makinenizde çalışan (`127.0.0.1`, `localhost`) bir sunucu claude.ai'ye bağlanamaz: Anthropic'in sunucuları ona ulaşamaz. Claude Code ise bağlantıyı kendi makinenizden kurar; yerel sunucu için yukarıdaki `claude mcp add --transport http` komutunu kullanın.

## Araçlar

| Araç | Ne yapar | Ağ |
|---|---|---|
| `tcmb_kurlar` | Günün (ya da verilen tarihin) TCMB gösterge kur bülteni, tüm para birimleri | TCMB |
| `tcmb_kur` | Tek para biriminin kuru — `birim` alanına dikkat, JPY 100 birim için verilir | TCMB |
| `evds_kategoriler` | EVDS konu ağacı (fiyatlar, faiz, kurlar, ödemeler dengesi, anketler, konut…) | TCMB EVDS* |
| `evds_veri_gruplari` | Bir kategorideki veri grupları: kod, frekans, birim, tarih aralığı | TCMB EVDS* |
| `evds_seriler` | Bir veri grubundaki seriler, ad filtresiyle | TCMB EVDS* |
| `evds_seri` | Bir ya da birkaç serinin gözlemleri; formül (yıllık % değişim vb.), frekans ve toplama seçenekleri | TCMB EVDS* |
| `evds_gosterge` | Başlıca göstergeler kod bilmeden, adıyla: yıllık/aylık enflasyon, ÜFE, politika faizi, dolar/euro/sterlin, konut fiyat endeksi, reel efektif kur; son değer ve tarih | TCMB EVDS* |
| `bist_hisse` | Bir hissenin gün sonu fiyat geçmişi (kapanış, AOF, min/max, hacim, piyasa değeri) + aynı günün BIST 100 ve USD/TRY'si | İş Yatırım |
| `btcturk_kripto` | Kripto varlıkların anlık TL (ya da USDT) fiyatı: son, alış/satış, günlük değişim, hacim; sembol listesi ya da hacme göre ilk 30 | BtcTurk |
| `afad_depremler` | Tarih aralığı, en küçük büyüklük ve limitle deprem listesi; yeniden eskiye | AFAD |
| `kandilli_depremler` | Kandilli Rasathanesi'nin son depremleri — AFAD'dan bağımsız ikinci katalog; ML/Mw/MD, ilksel/revize | Kandilli |
| `mgm_hava_durumu` | İl/ilçe için anlık gözlem (sıcaklık, hissedilen, nem, rüzgâr, basınç, hadise) + 5 günlük tahmin | MGM |
| `mgm_uyarilar` | Yürürlükteki meteorolojik uyarılar (kuvvetli yağış, fırtına, kar…) tam metniyle; `il` ile süz | MGM |
| `opet_akaryakit` | İlçe bazında benzin/motorin/gazyağı/fuel oil pompa fiyatları; İstanbul iki yaka | Opet |
| `ibb_trafik_indeksi` | İstanbul geneli anlık trafik yoğunluğu (0–100), her çağrıda taze | İBB |
| `ibb_nobetci_eczane` | İstanbul'da bugün nöbetçi eczaneler: ad, ilçe, adres, telefon, konum; `ilce` ile süz | İBB |
| `ibb_otopark` | İSPARK otoparkları anlık boş yer/doluluk; ilçe, ad ya da koordinata göre en yakından | İBB |
| `ibb_otopark_detay` | Bir İSPARK otoparkının tarifesi, adresi, aylık abonelik ücreti | İBB |
| `ibb_hava_kalitesi` | 28 istasyonda AQI, baskın kirletici, PM10/SO2/O3/NO2/CO; tek istasyon için 24 saatlik seri | İBB |
| `ibb_metro` | Metro İstanbul hatları (ilk/son sefer) ve bir hattın sıralı istasyonları (asansör, tuvalet…) | İBB |
| `ibb_metro_duyurular` | Metro İstanbul yolcu duyuruları: arıza, sefer düzenlemesi, kapalı istasyon | İBB |
| `izmir_nobetci_eczane` | İzmir'de bugün nöbetçi eczaneler, bölgeye göre | İzmir BB |
| `izmir_hal_fiyatlari` | İzmir toptancı hali günlük sebze-meyve / balık fiyatları (asgari, azami, ortalama) | İzmir BB |
| `izmir_otobus` | Bir ESHOT durağına yaklaşan otobüsler, canlı: hat, kalan durak, konum | İzmir BB |
| `acikveri_ara` | İBB, İzmir, Konya ya da Gaziantep açık veri portalında veri seti arama | 4 belediye |
| `acikveri_veriseti` | Veri seti ayrıntısı: lisans, dosyalar, indirme bağlantıları, tablo servisi var mı | 4 belediye |
| `acikveri_kayitlar` | Tablo servisi açık kaynağın sütun ve satırları (DataStore), sayfalama ve metin filtresi | 4 belediye |
| `resmi_gazete_fihrist` | Günün Resmî Gazete fihristi: sayı, bölüm/tür, madde başlıkları ve bağlantıları | Resmî Gazete |
| `resmi_gazete_metin` | Bir maddenin (yönetmelik, tebliğ, karar) düz metni, 20 bin karakterlik parçalarla | Resmî Gazete |
| `mevzuat_ara` | Kanun, tüzük, yönetmelik, tebliğ, CB kararı/kararnamesi/genelgesi arama (başlık ya da tam metin) | mevzuat.gov.tr |
| `mevzuat_metin` | Bir mevzuatın resmî güncel (konsolide) tam metni, madde listesiyle, parçalı | mevzuat.gov.tr |
| `mevzuat_madde` | Tek bir madde: `6`, `6/A`, `ek 1`, `geçici 3` — başlığıyla birlikte | mevzuat.gov.tr |
| `resmi_tatiller` | Yılın resmî tatilleri: ulusal bayramlar + Diyanet takvimine göre dinî bayramlar (arefe yarım günleri dahil) | yok |
| `tatil_mi` | Bir tarih hafta sonu mu, tatil mi, iş günü mü | yok |
| `osym_sinav_takvimi` | ÖSYM takvimi: YKS, KPSS, ALES, YDS, DGS, TUS… başvuru, sınav, sonuç, tercih tarihleri; varsayılan yalnızca gelecek | ÖSYM |
| `resmi_parametreler` | Yılın resmî sayıları, kaynağıyla: asgari ücret (günlük/aylık brüt, net), SGK prime esas kazanç taban/tavan | yok |
| `il_bilgisi` | Bir ilin nüfusu, yüzölçümü, rakımı, plaka ve alan kodları, bölgesi, nüfusa göre ilçeleri | yok |
| `ilce_ara` | İlçe adından il, nüfus, yüzölçümü; aynı adlı ilçelerin hepsi | yok |
| `iller_listesi` | 81 il nüfusa/yüzölçümüne/plakaya göre sıralı, bölgeye göre süzülmüş | yok |
| `dogrula_tckn` | T.C. Kimlik Numarası kontrol basamakları | yok |
| `dogrula_vkn` | Vergi Kimlik Numarası kontrol basamağı | yok |
| `dogrula_iban` | TR IBAN mod-97 kontrolü + banka kodu | yok |
| `plaka_il` | Plaka kodu ↔ il, 81 il | yok |
| `haber_basliklari` | AA ya da TRT Haber son haberleri: başlık, özet, bağlantı, zaman; kategori ve arama süzgeci | AA, TRT |

\* EVDS araçları ücretsiz bir kişisel anahtar ister — bkz. [TCMB EVDS anahtarı](#tcmb-evds-anahtarı). Anahtar yoksa bu beş araç nereden alınacağını söyleyen bir hata döner, diğerleri etkilenmez.

Doğrulama araçları **yalnızca biçim** doğrular: kontrol basamakları hesaplanır, hiçbir kuruma sorulmaz, numara makineden çıkmaz. "Geçerli" bir numaranın gerçek bir kişiye ya da kuruma ait olduğu anlamına gelmez; her yanıt bunu açıkça söyler.

## Hazır sorular (prompt)

İstemcinizde slash komutu ya da menü olarak görünür:

| Prompt | Ne yapar |
|---|---|
| `gunun_ozeti` | Kur, deprem, hava, trafik ve Resmî Gazete başlıklarını tek seferde toplayıp 10 satırlık günlük özet çıkarır (`il` isteğe bağlı) |
| `mevzuat_sorusu` | Bir hukuki soruyu mevzuat.gov.tr metninden ilgili maddeyi çekip alıntılayarak, kaynağıyla yanıtlar |

## TCMB EVDS anahtarı

EVDS, Merkez Bankası'nın istatistik servisidir (TÜFE, politika faizi, kurlar, konut fiyat endeksi, ödemeler dengesi, anketler — 40 binden fazla seri) ve ücretsiz bir kişisel anahtar ister:

1. https://evds3.tcmb.gov.tr → **Benim Sayfam → Kayıt** (e-posta doğrulaması).
2. Giriş yapınca kullanıcı adının altındaki **Profilim**'e tıkla.
3. Sayfanın altındaki **API Key Kopyala** butonuna bas.

Anahtarı MCP yapılandırmasında ortam değişkeni olarak ver:

```json
{
  "mcpServers": {
    "turkiye": {
      "command": "npx",
      "args": ["-y", "mcp-turkiye"],
      "env": { "EVDS_API_KEY": "anahtarınız" }
    }
  }
}
```

Anahtar yalnızca EVDS isteklerinin `key` başlığında kullanılır; hiçbir yanıtta, günlükte ya da URL'de yer almaz. EVDS bir istekte en fazla 150 gözlem verir; daha uzun aralıklar için birden çok çağrı gerekir.

## Her yanıt bir zarf içinde gelir

```json
{
  "kaynak": { "id": "tcmb", "ad": "Türkiye Cumhuriyet Merkez Bankası", "url": "https://www.tcmb.gov.tr/kurlar/today.xml" },
  "alindi": "2026-09-16T13:40:12.000Z",
  "veri": { "tarih": "2026-09-16", "bultenNo": "2026/174", "kur": { "kod": "USD", "dovizSatis": 48.6654, "birim": 1 } }
}
```

`kaynak` verinin geldiği kurum ve tam URL, `alindi` verinin çekildiği an. Bir kur ya da deprem listesi tarihsiz sunulursa "zamansız gerçek" gibi okunur; zarf bunu engeller. Kaynak yanıt vermezse araç **hata döner** — tahmini bir değer asla üretilmez, hangi kurumun yanıt vermediği söylenir.

## Tasarım kararları

- **Her yanıt canlı.** Pakette gömülü veri yoktur (tatil takvimi, plaka tablosu ve kaynağıyla gömülü resmî parametreler dışında); her araç çağrıldığı anda kurumdan çeker. Önbellek yalnızca kurumu korumak için ve kısadır: trafik indeksi 1 dk, deprem 1 dk, kur 5 dk, hava 10 dk, akaryakıt 30 dk; `alindi` alanı verinin tam olarak ne zaman alındığını söyler.
- **Anahtar yok, kayıt yok.** Bütün kaynaklar kamuya açık ve anahtarsız. Ücretsiz anahtar isteyen kaynaklar (TCMB EVDS gibi) eklendiğinde isteğe bağlı olacak; anahtarsız çalışan araçlar anahtarsız kalır.
- **Kamu sunucularını yormaz.** Her istek zaman aşımlı, 5xx'te bir kez yeniden denenir, 4xx'te denenmez; aynı URL kısa süre önbellekte tutulur. Dünkü bülten değişmez, bir gün saklanır; bugünkü 5 dakika.
- **Kaynak bozulursa biz öğreniriz.** Her kaynağın gerçek uç noktasına karşı haftalık *sözleşme testi* koşar (`npm run test:live`); format değişince CI kırmızıya döner, kullanıcının asistanı yanlış cevap vermeden.
- **Kişisel veri işlenmez.** NVI kimlik doğrulama, e-Nabız, e-Devlet gibi giriş ya da kişisel veri gerektiren hiçbir kaynak yoktur ve eklenmeyecektir.
- **Kendi ilacımız.** Bu repodaki örnek istemci yapılandırması her CI'da [guardmcp](https://github.com/BerkantACUN/guardmcp) ile taranır.

## Yol haritası

Sonraki adaylar: İETT hat/durak/sefer (SOAP), Ankara/İzmir baraj doluluk, TFF puan durumu, EPDK elektrik tarifeleri, GİB vergi takvimi. Diyanet namaz vakitleri resmî API anahtarı gerektirdiğinden beklemede. Bir kaynak eklemek bir klasör eklemektir: [CONTRIBUTING.md](https://github.com/BerkantACUN/mcp-turkiye/blob/HEAD/CONTRIBUTING.md).

## Geliştirme

```sh
npm ci
npm run verify      # typecheck + lint + build + test (kapsama eşiği %80)
npm run test:live   # gerçek kaynaklara karşı sözleşme testleri
npm run dev         # stdio üzerinden sunucuyu çalıştır
```

## English

Turkey's public data for AI agents, in one MCP server. Install with `npx -y mcp-turkiye` (Node 20+, no keys except for the optional EVDS tools). Forty-four tools today: central-bank FX bulletins (all currencies or one, today or any past date), live crypto prices in lira from BtcTurk, the central bank's EVDS statistics (topic tree, data groups, series and observations with formulas such as year-on-year change, plus headline indicators by name — inflation, PPI, policy rate, FX, house-price index, real effective exchange rate; needs a free `EVDS_API_KEY`), Borsa İstanbul daily price history, AFAD earthquake catalogue queries plus Kandilli Observatory's independent list, MGM current conditions and 5-day forecasts for any province or district and its active severe-weather warnings, Opet fuel pump prices per district, Istanbul's live traffic index, today's on-duty pharmacies in Istanbul and İzmir, live İSPARK car-park occupancy (nearest-first by coordinate), Istanbul air-quality stations with AQI and pollutant readings, Istanbul metro lines, stations and service announcements, İzmir's live ESHOT buses and daily wholesale produce/fish prices, CKAN open-data search/dataset/DataStore access for Istanbul, İzmir, Konya and Gaziantep, the Official Gazette's daily index and article text, legislation search plus consolidated full text and single-article lookup from mevzuat.gov.tr, public holidays with Diyanet's religious-holiday dates, business-day checks, ÖSYM's national exam calendar (university entrance, civil-service, graduate and language exams), official annual figures (minimum wage and social-security floor/ceiling, each with its Resmî Gazete issue or statute), offline province and district profiles (population, area, plate and area codes, regions), latest headlines from AA and TRT by category, and offline checksum validation of national ID numbers, tax numbers and IBANs plus province ↔ plate-code lookup. Every answer is an envelope with the source institution, the exact URL and the fetch time; a source that does not answer produces a tool error, never a guessed value. Tool descriptions are bilingual so English-speaking models use them correctly. For remote hosting, the Docker image `ghcr.io/berkantacun/mcp-turkiye` runs the built-in stateless Streamable HTTP entry (`node dist/http.js`) at `/mcp` with `/health`; set `MCP_TURKIYE_API_KEY` so every request needs an `X-API-Key` header, and requests are rate-limited per IP (60/min by default). Data licences: [SOURCES.md](https://github.com/BerkantACUN/mcp-turkiye/blob/HEAD/SOURCES.md). Acceptable use: [ACCEPTABLE_USE.md](https://github.com/BerkantACUN/mcp-turkiye/blob/HEAD/ACCEPTABLE_USE.md).

## Lisans

Kod: [MIT](https://github.com/BerkantACUN/mcp-turkiye/blob/HEAD/LICENSE). Veri: her kaynağın kendi şartları, [SOURCES.md](https://github.com/BerkantACUN/mcp-turkiye/blob/HEAD/SOURCES.md).

