Skip to main content
Glama

🇹🇷 VeriTR

Türkiye'nin verisi. Yapay zekânın bağlamı.

VeriTR, Türkiye'deki resmi ve açık veri kaynaklarını Claude, ChatGPT, Gemini ve diğer AI agent'ların kullanabileceği tek bir Model Context Protocol (MCP) sunucusunda birleştiren açık kaynaklı bir projedir.

TÜİK'ten nüfus, TCMB'den ekonomik göstergeler, İBB'den İstanbul'un şehir verileri; ilerleyen sürümlerde SGK'dan istihdam, YSK'dan seçim… Kaynağı aramak yerine soruyu sorun.

test Python MCP Kaynaklar Göstergeler License: MIT PyPI


Neden VeriTR?

Türkiye'nin kamu verisi dağınıktır. Nüfus TÜİK'te, enflasyon ve konut fiyatları TCMB'de, istihdam SGK'da, bütçe Hazine'de, seçim sonuçları YSK'da, şehir verileri onlarca ayrı belediye portalında durur. Her kurumun kendi arayüzü, kendi kod sistemi, kendi tarih biçimi ve kendi "il" tanımı vardır. Bir soruya cevap vermek için önce hangi kurumun hangi tabloyu tuttuğunu bilmek gerekir.

Bu yük, bugün bir AI agent'ın üzerine yıkılıyor. Agent ya veriyi bulamıyor ya da ezberinden — kaynaksız ve çoğu zaman yanlış — cevap veriyor.

VeriTR bu kaynakları AI agent'lar için tek bir MCP arayüzünde birleştirir. Kurum isimleri yerine normalize göstergeler (population.total, economy.cpi), kurum kodları yerine ortak coğrafya ve tarih modeli, ve her sonucun yanında hangi kurumun hangi veri setinden geldiği bulunur.


Related MCP server: MoSPI MCP Server

💬 VeriTR ile neler sorabilirsiniz?

"İstanbul'un nüfusu son 20 yılda nasıl değişti?"

"Türkiye'deki genç işsizlik oranının son 15 yıllık değişimini göster."

"2025'te nüfusu en fazla olan 10 şehri sırala."

"İstanbul, Ankara ve İzmir'in nüfus artış hızını karşılaştır."

"Türkiye'de araç sayısı en fazla olan illeri bul."

"Kişi başına düşen geliri en yüksek ve en düşük illeri karşılaştır."

"Doğurganlık hızı Türkiye'de son 15 yılda nasıl değişti?"

"Güneydoğu Anadolu ile Ege'nin kişi başı gelirini karşılaştır."

"Türkiye'nin sera gazı emisyonları 1990'dan bu yana nasıl arttı?"

"Türkiye'de kaç elektrikli araba var, son 5 yılda nasıl değişti?"

"Konut satışları en çok hangi ilde arttı?"

"Trafik kazalarında ölen kişi sayısı illere göre nasıl dağılıyor?"

"Yükseköğretim mezunu oranı son 15 yılda nasıl değişti?"

"Atıl işgücü oranı ile dar tanımlı işsizliği karşılaştır."

"İstihdamın sektörlere dağılımı 2005'ten bu yana nasıl değişti?"

"Hangi ilde çocuklar en uzun süre okulda kalıyor?"

"İstanbul'da trafik kazası duyurularını içeren veri setini bul ve göster."

"İzmir'in açık veri portalında ulaşımla ilgili neler var?"

"Konut fiyat endeksi ile TÜFE'yi 2015'ten bu yana karşılaştır."   ← konut endeksi TCMB anahtarı ister

Agent gerekli göstergeleri kendisi bulur, verileri VeriTR üzerinden çeker, dönemleri eşleştirir ve kaynağıyla birlikte cevap üretir.


🚀 5 Dakikada Başla

Kurulum

uvx veritr-mcp

Hepsi bu. API anahtarı gerekmez — TÜİK ve belediye verileri anahtarsız çalışır.

uv kullanmıyorsanız:

pip install veritr-mcp
veritr-mcp

Kaynaktan çalıştırmak (katkı vermek) için CONTRIBUTING.md.

Claude Desktop / Claude Code

claude_desktop_config.json dosyanıza ekleyin:

{
  "mcpServers": {
    "veritr": {
      "command": "uvx",
      "args": ["veritr-mcp"]
    }
  }
}

TCMB'nin finansal serilerini de istiyorsanız evds2.tcmb.gov.tr adresinden ücretsiz bir anahtar alın:

{
  "mcpServers": {
    "veritr": {
      "command": "uvx",
      "args": ["veritr-mcp"],
      "env": {
        "EVDS_API_KEY": "buraya-anahtarınız"
      }
    }
  }
}

Anahtar olmadan da çalışır: TCMB not_configured görünür, diğer kaynaklar sorunsuz devam eder.

Docker

docker compose up -d
# MCP:    http://localhost:8000/mcp
# Health: http://localhost:8000/health

Remote MCP

Hosted sunucu yol haritasında; henüz bir adres yok. Kodda hiçbir domain gömülü değildir, VERITR_PUBLIC_URL ile verilir.


🏗️ Mimari

flowchart LR
    A[Claude / ChatGPT / Gemini] --> B[VeriTR MCP]
    B --> C[Unified Data Layer]
    C --> D[TÜİK]
    C --> E[TCMB]
    C --> J[Belediyeler<br/>İBB · İzmir · Konya]
    C -.-> F[SGK]
    C -.-> G[HMB]
    C -.-> H[YSK]
    C -.-> I[MGM]

Kesikli çizgiler yol haritasındaki kaynakları gösterir.

VeriTR iki erişim yolu sunar ve hangisinin doğru olduğunu tool açıklamaları anlatır:

  • Normalize gösterge (get_series) — ulusal, karşılaştırılabilir seriler. population.total kimin yayımladığından bağımsızdır.

  • Ham veri seti kataloğu (search_datasets → get_dataset) — belediye verileri ve henüz normalize edilmemiş kurum veri setleri. Belediye verisi bilinçli olarak gösterge namespace'ine zorlanmaz: "metro yolcu sayısı" ile "ağaç envanteri" ortak bir modele oturmaz, oturtmaya çalışmak veriyi çarpıtır.

CKAN belediye açık verisinde fiilî standart olduğu için yeni bir şehir eklemek tek satırlık bir tablo kaydıdır — adapter kodu değişmez.

Verinin izlediği yol:

Resmi Kaynaklar          TÜİK .Stat API, TCMB EVDS, İBB CKAN, …
       ↓
Provider Adapters        her kurum için bağımsız, izole edilmiş adapter
       ↓
Normalization            coğrafya (81 il), dönem, frekans, birim
       ↓
Indicator Registry       population.total, economy.cpi, …
       ↓
MCP Tools                search_indicators, get_series, compare_series, …
       ↓
AI Agents

Bir kaynağın çökmesi diğerlerini etkilemez: TÜİK erişilemezse agent bunu provider_unavailable olarak görür ve diğer kaynaklara erişmeye devam eder.


🧰 Tool'lar

Tool

Ne işe yarar

Örnek

search_indicators

Doğal dille gösterge bulur. get_series'ten önce kullanılır.

search_indicators("işsizlik")

get_series

Bir göstergenin zaman serisini getirir. En temel tool.

get_series("population.total", geography="TR-34", start_date="2015")

get_snapshot

Tek bir dönemde tüm illeri sıralar.

get_snapshot("population.total", date="2025", top=10)

compare_regions

Bir göstergeyi birkaç ilde karşılaştırır.

compare_regions("population.total", regions=["TR-34","Ankara","35"])

compare_series

Birkaç göstergeyi — farklı kurumlardan olsa da — yan yana koyar.

compare_series(["economy.cpi","housing.house_price_index"], normalize=True)

analyze_series

Deterministik istatistik: artış hızı, hareketli ortalama, endeksleme.

analyze_series("population.total", operations=["growth_rate"])

get_metadata

Bir göstergenin birimi, frekansı, ayarlanabilir boyutları ve kaynağı.

get_metadata("population.median_age")

search_datasets

Ham veri setlerinde arama — İstanbul'a dair şehir soruları buradan.

search_datasets("metro yolcu")

get_dataset

Bulunan ham veri setinin sütunlarını ve satırlarını okur.

get_dataset("hourly-public-transport-data-set")

get_sources

Tüm kaynakların canlı durumu.

get_sources()

Coğrafya her biçimde kabul edilir — ülke (TR, Türkiye), 81 il (TR-34, 34, İstanbul, istanbul, TR100), 12 İBBS Düzey-1 bölgesi (TR9) ve 26 Düzey-2 alt bölgesi (TRC1 → Gaziantep, Adıyaman, Kilis).

Dönem de öyle: 2024, 2024-Q1, 2024-01, 2024M01, 01-2024, 15.01.2024.


📊 Kaynaklar

Kaynak

Veri

Durum

API Key

TÜİK

Nüfus, doğurganlık, işgücü, eğitim, tarım, ulaşım, trafik, konut satışları, üretim endeksleri, dış ticaret, GSYH, çevre, su/atık, bilişim, kültür

✅

Hayır

TCMB EVDS

TÜFE, ÜFE, konut fiyat endeksi, döviz, faiz

✅

Evet

İBB Açık Veri

İstanbul: ulaşım, trafik, çevre, kültür, altyapı (~560 veri seti)

✅

Hayır

İzmir BB Açık Veri

İzmir: ulaşım, çevre, şehir hizmetleri (~256 veri seti)

✅

Hayır

Konya BB Açık Veri

Konya: ulaşım, altyapı, şehir hizmetleri (~233 veri seti)

✅

Hayır

SGK

Sosyal güvenlik ve istihdam

🗺️

–

HMB

Bütçe ve kamu maliyesi

🗺️

–

SBB

Ekonomik ve sosyal göstergeler

🗺️

–

YSK

Seçim sonuçları ve katılım

🗺️

–

MGM

Meteoroloji

🗺️

–

Sağlık Bakanlığı

Hastane, personel, sağlık göstergeleri

🗺️

–

Enerji Bakanlığı

Elektrik üretimi, yenilenebilir enerji

🗺️

–

Ticaret Bakanlığı

İthalat, ihracat

🗺️

–

Diğer belediyeler

Ankara, Bursa, Antalya, Kocaeli, Gaziantep

🗺️

–

Eurostat / OECD / World Bank

Uluslararası karşılaştırma

🗺️

–

✅ Destekleniyor    🚧 Geliştiriliyor    🗺️ Yol haritasında

Anahtar gerekmeden ne kadar yol gidilir? Epey: nüfus, doğurganlık, işgücü, eğitim, ulaşım, trafik, konut satışları, üretim endeksleri, dış ticaret, GSYH ve çevre göstergelerinin tamamı TÜİK'ten, şehir verileri belediyelerden anahtarsız gelir. Fiyat istatistikleri de dahil: TÜFE ve Yİ-ÜFE'yi TÜİK üretir, TCMB yalnızca yeniden dağıtır — VeriTR doğrudan kaynağa bağlandığı için manşet enflasyon, üretici enflasyonu, gıda fiyat endeksi, bölgesel fiyat düzeyi ve güven endeksleri anahtarsız çalışır. TCMB anahtarı bunlara konut fiyat endeksini ve finansal serileri (döviz kurları, politika faizi) ekler.

Bugün 82 normalize gösterge (nüfus, doğurganlık, evlenme ve boşanma, işgücü, eğitim, beyin göçü, tarım, ulaşım, trafik güvenliği, konut satışları, üretim endeksleri, dış ticaret, GSYH, çevre, su ve atık, bilişim/e-ticaret, kültür, iş demografisi, enflasyon ve fiyat endeksleri, bölgesel pahalılık, güven endeksleri, döviz) ve ~1450 aranabilir ham veri seti (TÜİK 408 + üç belediye ~1050) mevcut. Her göstergenin her coğrafya seviyesinde gerçekten veri döndürdüğü günlük canlı testlerle doğrulanıyor.

Registry sürekli genişliyor — katkı vermek kolay.


🔎 Veriler nereden geliyor?

VeriTR herhangi bir resmi kurum değildir ve veri üretmez.

Veriler ilgili kurumların kendi resmi/açık kaynaklarından, herkese açık arayüzleri üzerinden alınır. VeriTR yalnızca üç şey yapar: erişim, standardizasyon ve agent entegrasyonu.

Her sonuç şu bilgileri taşır:

{
  "source": {
    "provider": "tuik",
    "institution": "Türkiye İstatistik Kurumu",
    "dataset": "TR,DF_ADNKS_T30,1.1",
    "retrieved_at": "2026-08-11T12:08:55+00:00",
    "official_url": "https://databrowser2.tuik.gov.tr/vizualize.html?..."
  }
}

Böylece agent "TÜİK'e göre…" diyebilir ve kullanıcı aynı veriyi kurumun kendi sitesinde doğrulayabilir.

Verilerin güncelliği, doğruluğu ve kullanım koşulları tamamen ilgili kaynak kuruma bağlıdır. VeriTR'nin MIT lisansı yalnızca bu deponun kodunu kapsar; kurumlardan alınan verileri kapsamaz.

Dürüstlük ilkeleri

VeriTR veriyi sessizce değiştirmez:

  • Frekans uyumsuzluğu gizlenmez. Aylık TÜFE ile yıllık nüfusu karşılaştırırsanız uyarı alırsınız; arka planda sessiz bir toplulaştırma yapılmaz.

  • Kırpma duyurulur. Sonuç listesi kısaltıldıysa kaç kaydın düştüğü açıkça söylenir.

  • Eksik veri uydurulmaz. Kurum bir değeri yayımlamamışsa null döner, interpolasyon yapılmaz.

  • Veri sınırları yazılıdır. Kurum bir göstergeyi yalnızca son yıl için yayımlıyorsa bu, göstergenin açıklamasında söylenir — agent "veri yok" sanmaz.

  • Korelasyon nedensellik değildir. Korelasyon çıktısı bu uyarıyı her zaman taşır.


⚠️ Sorumluluk Reddi

VeriTR; TÜİK, TCMB, SGK veya diğer kamu kurumlarıyla bağlantılı değildir, bu kurumlar tarafından desteklenmemekte veya onaylanmamaktadır. Tüm kurum adları ve markalar ilgili sahiplerine aittir.


🗺️ Yol Haritası

v0.1 — ✅ TÜİK + TCMB EVDS · normalize gösterge registry'si · search_indicators, get_series, get_metadata, compare_series, compare_regions, get_snapshot, analyze_series · cache · CSV/JSON export · Docker + Streamable HTTP

v0.2 — SGK · Hazine ve Maliye Bakanlığı · genişletilmiş gösterge kataloğu · hosted Remote MCP

v0.3 — YSK (seçim) · MGM (meteoroloji) · Sağlık Bakanlığı · Enerji Bakanlığı

v0.4 — Kalan belediye adapter'ları (Ankara, Bursa, Antalya, Kocaeli, Gaziantep) — İstanbul, İzmir ve Konya v0.1'de geldi

v1.0 — Uluslararası karşılaştırma (Eurostat, OECD, World Bank, IMF, ILOSTAT) · VeriTR Explorer · stabil API

Ayrıntılar ve tekil görevler için issue'lara bakın.


🤝 Katkı

VeriTR'nin büyümesinin ana yolu topluluk provider'ları. Yeni bir kurum eklemek kasıtlı olarak kolay tutuldu: bir adapter sınıfı, bir YAML gösterge dosyası ve fixture'lı testler.

📊 docs/ADDING_AN_INDICATOR.md — yeni gösterge eklemek (kod yazmadan, en kolay ilk katkı) 📖 docs/ADDING_A_PROVIDER.md — yeni kurum eklemek 📋 CONTRIBUTING.md — geliştirme akışı ve kalite ölçütleri 🔒 SECURITY.md — güvenlik açığı bildirimi

uv sync
uv run pytest              # offline testler
uv run pytest -m live      # kurumların canlı API'lerine karşı
uv run ruff check src tests
uv run mypy

📄 Lisans

Kod MIT lisansıyla dağıtılır. Kurumlardan alınan veriler bu lisansın kapsamı dışındadır ve kendi kullanım koşullarına tabidir.

Available Tools

10 tools
analyze_seriesA

Run deterministic statistics over a single series (growth rates, moving average, rebasing to 100, min/max/mean). Prefer this over doing the arithmetic yourself when the series has many observations — it avoids transcription errors.

Inputs: indicator (required), window, end_date, geography, +2 more. Returns: object

compare_regionsA

Compare ONE indicator across SEVERAL regions over time.

Each region gets its own series plus a summary (first/last value, total change). For comparing several indicators instead, use compare_series.

Inputs: regions (required), indicator (required), end_date, start_date. Returns: object

compare_seriesA

Compare SEVERAL indicators — possibly from different institutions — side by side.

This is what makes cross-source questions answerable, e.g. TÜİK population against TCMB house prices. Frequency mismatches are reported explicitly and never silently resampled. Set normalize=true when units differ.

Inputs: indicators (required), end_date, correlate, geography, +2 more. Returns: object

get_datasetA

Read the columns and rows of a raw dataset found via search_datasets.

This is the path for municipal (İBB) data, which is deliberately NOT mapped into the normalized indicator namespace — use get_series for national indicators and this for city datasets. Returns the field list, a page of rows, the total row count, and the source licence. Page with offset; the response says how many rows were withheld.

Inputs: dataset_id (required), limit, offset, provider. Returns: object

get_metadataA

Get the full definition of an indicator: unit, frequency, geography coverage, which dimensions you may override in get_series, the source dataset, and the official URL. Call this when get_series arguments are unclear.

Inputs: indicator (required). Returns: object

get_seriesA

Fetch a time series for one indicator. This is the primary data tool.

Returns compact [period, value] pairs plus the source institution and dataset id. Omitting geography returns every region the indicator covers — combine with limit for national comparisons, or use get_snapshot for a single-year ranking.

Inputs: indicator (required), limit, format, end_date, +3 more. Returns: object

get_snapshotA

Get one indicator's value across ALL regions at a single point in time, ranked.

Use this for "which provinces have the highest/lowest X" questions instead of calling get_series once per province.

Inputs: indicator (required), top, date, ascending. Returns: object

get_sourcesA

List every institution VeriTR can reach, with live availability status.

Use this when a query fails, to tell the user whether the problem is a missing API key, a provider outage, or an unsupported topic.

Inputs: no named parameters. Returns: object

search_datasetsA

Search the raw dataset catalogs of the source institutions.

Use this when search_indicators returns nothing useful, and always for city-level questions about İstanbul (transport, traffic, environment, culture, infrastructure) — İBB publishes ~560 municipal datasets that have no VeriTR indicator id. Follow up with get_dataset to read the rows. NOTE: TÜİK serves its catalog metadata in English only, so English keywords ('unemployment', 'vehicle') match better for TÜİK; İBB is indexed in Turkish.

Inputs: query (required), limit, provider. Returns: object

search_indicatorsA

Search VeriTR's normalized indicator catalog.

USE THIS FIRST, before get_series, whenever the exact indicator id is unknown. Returns VeriTR indicator ids (e.g. 'population.total') that get_series accepts. Search works in Turkish and English and is accent-insensitive.

Inputs: query (required), limit, category, provider, +2 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each tool has a distinct access pattern or comparison dimension: normalized indicators vs raw datasets, time-series vs single-snapshot, multi-region vs multi-indicator. The search tools are explicitly differentiated by when to use each.

    Naming Consistency5/5

    All tool names follow a consistent snake_case verb_noun pattern: search_*, get_*, compare_*, analyze_series. The naming makes the action and target clear without ambiguity.

    Tool Count5/5

    Ten tools is a well-scoped size for a data-access server. Each tool earns its place and covers a distinct query need without redundancy or bloat.

    Completeness5/5

    The surface covers the full read-only lifecycle: discovery, retrieval, comparison, metadata, source diagnostics, and lightweight analysis. No obvious dead ends or missing operations for the stated purpose.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      An MCP server that connects AI agents to over 200 tools across 27 Brazilian public APIs, covering economic, legislative, transparency, and judicial data. It enables users to query and cross-reference extensive government datasets from sources like IBGE, the Central Bank, and the Brazilian Congress.
      22
      7
      1,855
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for accessing India's Ministry of Statistics and Programme Implementation (MoSPI) data APIs. Enables natural language queries for economic, demographic, and social indicators via a 4-tool workflow.
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      MCP Server for accessing 36 Brazilian public data sources and 1 agent, enabling AI agents to query government data on economy, legislation, transparency, judiciary, elections, environment, health, and more.
      6
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      An MCP server that provides verified official Turkish electricity system data (from TEİAŞ and EÜAŞ) via tools for querying generation, installed capacity, demand, and import/export, enabling natural language access to energy statistics.
      MIT