evds-mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@evds-mcp-server What was the annual inflation rate for 2023?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
evds-mcp-server
Türkiye ekonomik verisini (TCMB EVDS) bir LLM'in güvenle çağırabileceği, curated araçlar olarak sunan bir MCP server'ı.
FRED/ECB/Eurostat için MCP server'lar var; Türkiye (EVDS) için yoktu. Bu server o boşluğu dolduruyor: Claude (Desktop/Code) "2023'te yıllık enflasyon neydi?", "dolar son 1 yılda ne oldu?" gibi soruları serbest sorgu yazmadan, önceden doğrulanmış araçlarla EVDS'den canlı çekip kaynağıyla yanıtlar.
Tasarım ilkesi: LLM serbest seri seçmez. Her araç doğru EVDS seri koduna ve birime kilitlidir. Bu, yanlış seri / nominal-reel karışması / hallucination'ı baştan engeller. Her yanıt kaynak + dönem + birim + nominal/reel taşır.
Stateless: veritabanı yok, cache yok. Her çağrı EVDS'ye canlı gider.
Stdio transport, tek paket, TypeScript.
Veri kaynağı: yalnızca EVDS (TCMB).
Araçlar (6 curated tool)
Araç | Ne yapar | Önemli parametreler |
| TÜFE / Yİ-ÜFE / çekirdek (C) enflasyon |
|
| TCMB döviz alış/satış kuru (günlük) |
|
| Politika faizi proxy'si (AOFM) |
|
| Dış ticaret: ihracat / ithalat / denge |
|
| GSYİH büyüme |
|
| İki göstergeyi aynı dönemde (nominal/reel) |
|
period her araçta { start, end } ve tarihler YYYY, YYYY-MM veya
YYYY-MM-DD olabilir.
Ortak çıktı şeması
Her araç (compare hariç) aynı zarfı döndürür:
{
"series": "TP.DK.USD.S.YTL", // EVDS seri kodu
"label": "ABD Doları (Döviz Satış)",
"unit": "TL (1 USD karşılığı)",
"basis": "nominal", // nominal | reel | düzey | yıllık % değişim ...
"observations": [
{ "date": "25-06-2026", "value": 46.4935 },
{ "date": "26-06-2026", "value": 46.5139 }
],
"source": "TCMB EVDS",
"fetchedAt": "2026-06-26T11:58:05.746Z",
"note": "…" // varsa metodoloji/uyarı
}Yukarıdaki, EVDS'den dönen gerçek bir örnektir (USD satış, 25–26 Haz 2026).
Related MCP server: finance-mcp
Kurulum
Gereksinim: Node.js ≥ 20.
git clone <repo-url> evds-mcp-server
cd evds-mcp-server
npm install
npm run build # dist/index.js üretirEVDS API anahtarı
https://evds3.tcmb.gov.tr adresine kayıt olun / giriş yapın.
Profil → API Anahtarı'ndan anahtarınızı alın (ücretsiz).
.envdosyası oluşturun (.env.example'ı kopyalayın):
cp .env.example .env
# .env içine: EVDS_API_KEY=sizin_anahtarınızAnahtar 2024 değişikliğiyle artık HTTP header olarak gönderilir (URL'de değil). Bu server bunu sizin için yapar.
.envrepoya girmez (.gitignore'da).
Seri kodu doğrulama / sağlık kontrolü
13 seri kodunun tamamı canlı evds3 katalogundan + gerçek bir veri çağrısıyla doğrulanmıştır (TÜFE/çekirdek 2025=100 yeni seri, dış ticaret "Toplam", GSYİH toplam dahil). Anahtarınızla bir sağlık kontrolü çalıştırmak için:
npm run verifyBu komut her seriyi canlı EVDS'den teyit eder, resmî EVDS etiketini ve son
gözlemi yazar, ardından gerçek bir get_fx USD örneği basar. TÜİK ileride
yeniden baz yılı değiştirirse (örn. 2003=100 → 2025=100 geçişinde olduğu gibi)
bu komut hangi serinin durduğunu gösterir; doğru kodu src/series.ts içine
yazabilirsiniz.
Claude'a ekleme
Claude Desktop
claude_desktop_config.json dosyasına ekleyin
(macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"evds": {
"command": "node",
"args": ["/MUTLAK/YOL/evds-mcp-server/dist/index.js"],
"env": { "EVDS_API_KEY": "sizin_anahtarınız" }
}
}
}Claude Desktop'ı yeniden başlatın. /MUTLAK/YOL'u kendi yolunuzla değiştirin
(pwd ile bulabilirsiniz).
Claude Code (CLI)
claude mcp add evds --env EVDS_API_KEY=sizin_anahtarınız -- node /MUTLAK/YOL/evds-mcp-server/dist/index.jsManuel stdio çalıştırma
EVDS_API_KEY=xxx node dist/index.js # MCP istemcisi stdin/stdout ile konuşur
node dist/index.js --help # yardımDoğruluk kuralları
Her yanıt kaynak + dönem + birim + nominal/reel taşır. İstisna yok.
EVDS boş/null dönerse uydurulmaz —
notealanında "veri yok" denir.Birim ve nominal/reel ayrımı asla karıştırılmaz (TL ≠ USD, endeks ≠ % değişim).
EVDS yanıtı zod ile doğrulanır; beklenmeyen şekil → açıklayıcı hata.
Anahtar eksik/geçersizse araç çağrısı net Türkçe hata döndürür (server çökmez).
Veri kaynağı, lisans, etik
Veri: TCMB EVDS. Kişisel kullanım ve araştırma amaçlıdır; EVDS kullanım koşulları geçerlidir. Ticari yeniden-dağıtım iddiası yoktur.
Her araç çıktısında
source: "TCMB EVDS"bulunur — kaynak gösterimi hem etik hem zorunludur.API anahtarı size aittir; repoya girmez.
Kod lisansı: MIT (bkz. LICENSE). Lisans yalnızca bu server'ın kaynak kodunu kapsar; veriyi değil.
Sonraki fazlar (bu sürümün kapsamı dışında)
Web arayüzü.
Ek kaynaklar: World Bank, TÜİK doğrudan.
Daha fazla curated gösterge (işsizlik, cari denge, konut fiyat endeksi…).
Proje yapısı
src/
index.ts # MCP server (stdio), 6 aracı kaydeder
evds.ts # EVDS adapter: fetch + header auth, zod, tarih/frekans, katalog
series.ts # curated seri kayıt defteri (kodlar burada kilitli)
constants.ts # frekans/formül/aggregation kodları
types.ts # ortak çıktı şeması (zod)
format.ts # ortak çıktı montajı + hata biçimleme
tools/ # 6 aracın implementasyonu
scripts/
verify.ts # canlı katalog doğrulama (npm run verify)Available Tools
6 toolscompare_indicatorsGösterge Karşılaştırma (nominal/reel)ARead-onlyIdempotent
İki curated göstergeyi aynı dönemde karşılaştırır; istenirse birini enflasyondan arındırarak REEL değeri verir.
Ne zaman kullanılır:
"Reel faiz neydi" → a='tufe', b='policy_rate'? Hayır: reel için b nominal BÜYÜME olmalı. Reel faiz için a='tufe', b='policy_rate' yerine yorum gerekir; en sağlam kullanım:
"Dolar reel olarak arttı mı" → a='tufe', b='usd', transform='real'.
"Büyüme enflasyonun üstünde mi" → a='tufe', b='gdp', transform='yoy' (ikisini yan yana).
Parametreler:
a, b: { indicator: 'tufe' | 'ufe' | 'cekirdek' | 'usd' | 'eur' | 'gbp' | 'policy_rate' | 'gdp' }
period: { start, end }
transform: 'real' (b'yi a=enflasyon ile reelleştir) | 'yoy' (ikisi de yıllık %) | boş
Dönüş: { transform, period, a, b, derived?, source, fetchedAt, note }.
a/b: her biri { series, label, unit, basis, observations }.
derived: transform='real' başarılıysa reel(b) (basis 'reel'). Tarihler eşleşmezse (örn. aylık vs çeyreklik) reel hesaplanmaz ve not'ta belirtilir. ÖNEMLİ: nominal/reel ayrımı her blokta 'basis' ile açıkça verilir; karıştırmayın. transform='real' için 'a' enflasyon (tufe/ufe/cekirdek) olmalıdır.
Inputs: a (required), b (required), period (required), transform. Returns: a, b, note, period, +4 more
get_fxDöviz Kuru (TCMB)ARead-onlyIdempotent
TCMB'nin gösterge niteliğindeki günlük döviz alış/satış kurlarını döndürür (1 birim yabancı para = X TL).
Ne zaman kullanılır:
"Dolar/Euro kuru bugün/şu tarihte neydi", "son 1 yılda dolar nasıl değişti" gibi sorularda.
Kur SEVİYESİ (TL) gerekir; yüzde değişim gerekiyorsa observations'tan hesaplayın ya da compare_indicators kullanın.
Parametreler:
pair: USD | EUR | GBP | CHF | CAD | AUD | SAR | DKK | SEK | NOK
side: 'alis' | 'satis' (vars. 'satis')
period: { start, end } (YYYY | YYYY-MM | YYYY-MM-DD)
Dönüş: ortak şema — series, label, unit ("TL (1 karşılığı)"), basis ("nominal"), observations[{date,value}], source, fetchedAt. Notlar: Hafta sonu/tatil günlerinde değer null olabilir. Veri yoksa uydurmaz; not alanında belirtir.
Inputs: pair (required), period (required), side. Returns: note, unit, basis, label, +4 more
get_growthBüyüme / GSYİH (TÜİK)ARead-onlyIdempotent
Türkiye ekonomik büyümesi (GSYİH, çeyreklik).
Ne zaman kullanılır:
"Türkiye 2023'te ne kadar büyüdü", "çeyreklik büyüme oranı" → basis='yoy' (yıllık % değişim).
Endeks düzeyi gerekirse → basis='level' (zincirlenmiş hacim endeksi).
Parametreler:
period: { start, end }
basis: 'yoy' (vars.) | 'level'
Dönüş: ortak şema. basis='yoy' → unit '%', basis 'yıllık % değişim'. basis='level' → unit 'bin TL' (zincirlenmiş hacim, düzey). Seri: TP.GSYIH26.HY.ZH (Harcama Yöntemiyle, Zincirlenmiş Hacim, Toplam).
Inputs: period (required), basis. Returns: note, unit, basis, label, +4 more
get_inflationEnflasyon (TÜFE / Yİ-ÜFE / Çekirdek)ARead-onlyIdempotent
Türkiye enflasyon verisi: TÜFE (tüketici), Yİ-ÜFE (üretici) veya çekirdek (C) — aylık.
Ne zaman kullanılır:
"2023'te yıllık enflasyon neydi", "TÜFE son 12 ayda nasıl değişti" → change='yoy' (yıllık % değişim).
Endeks düzeyi gerektiğinde (örn. iki dönem arası kümülatif hesap) → change='level'.
Parametreler:
measure: 'tufe' | 'ufe' | 'cekirdek'
change: 'yoy' (vars.) | 'level'
period: { start, end }
Dönüş: ortak şema. change='yoy' → unit '%', basis 'yıllık % değişim'. change='level' → unit 'endeks (2025=100)', basis 'düzey (endeks)'. Önemli: 'yoy' ile 'level' BİRBİRİNE KARIŞTIRILMAZ; basis alanını dikkate alın. TÜFE ve çekirdek 2025=100 yeni seridir.
Inputs: period (required), measure (required), change. Returns: note, unit, basis, label, +4 more
get_policy_ratePolitika Faizi / AOFM (TCMB)ARead-onlyIdempotent
TCMB Ağırlıklı Ortalama Fonlama Maliyeti (AOFM) — politika faizine en yakın günlük gösterge.
Ne zaman kullanılır:
"TCMB faizi (fonlama maliyeti) X tarihinde neydi", "faiz son dönemde nasıl seyretti" sorularında.
frequency='monthly' aylık ortalamayı verir (uzun dönem trend için).
Parametreler:
period: { start, end }
frequency: 'daily' (vars.) | 'monthly'
Dönüş: ortak şema — unit '%', basis 'nominal faiz (düzey, %)'. Not: Bu, resmî 1 hafta vadeli repo politika faizinden farklı olabilen AOFM göstergesidir; not alanında belirtilir.
Inputs: period (required), frequency. Returns: note, unit, basis, label, +4 more
get_trade_balanceDış Ticaret (İhracat / İthalat / Denge)ARead-onlyIdempotent
Türkiye dış ticareti: ihracat, ithalat veya dış ticaret dengesi (aylık, bin USD).
Ne zaman kullanılır:
"İhracat/ithalat X ayında ne kadardı", "dış ticaret açığı son dönemde nasıl" sorularında.
flow='balance' → ihracat − ithalat (negatif = açık).
Parametreler:
flow: 'export' | 'import' | 'balance'
period: { start, end }
Dönüş: ortak şema — unit 'bin USD', basis 'düzey' (balance için 'düzey (ihracat − ithalat)'). Seri: Genel Ticaret Sistemi, ISIC Rev.4 Toplam (ihracat TP.IHRISICREV4.TT / ithalat TP.ITHISICREV4.TT).
Inputs: flow (required), period (required). Returns: note, unit, basis, label, +4 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool targets a distinct economic indicator (exchange rates, growth, inflation, policy rate, trade balance) and the compare_indicators tool explicitly combines two indicators. There is no ambiguity between tools.
Five tools use a consistent 'get_' prefix for fetching single series, while the sixth uses 'compare_' for the comparison tool. The pattern is mostly consistent and predictable, with a minor deviation.
With 6 tools covering core macroeconomic indicators and a comparison function, the set is well-scoped for a data retrieval server focused on Turkish economic data.
The tools cover the most commonly requested indicators (exchange rates, inflation, growth, policy rate, trade balance). While some indicators like unemployment are absent, the core set is complete for typical use cases.
Related MCP Connectors
Turkey data API for AI agents: 40 tools + search/call for 230+ endpoints. Addresses (provinces, districts, postal codes, boundaries), validation (IBAN, tax ID/VKN, TCKN, phone, barcode), tax and salary calculators, Official Gazette, exchange rates, gold, crypto, economic indicators, prayer times, holidays and business days, weather, air quality, earthquakes, dam levels, fuel prices, EV charging, power outages, tolls, pharmacies on duty, football standings. Turkish JSON, free plan.
Unofficial access to CBRT/TCMB daily exchange rates: latest, history since 1996, conversion.
Macroeconomic and FX time-series data for AI agents: indicators, calendars, COT, forex, commodities.
Turkey & EU business data: validation, sanctions screening, parsing, FX and fuel price history
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI assistants to query Turkey's public data, including central-bank FX rates, earthquake catalog, weather forecasts, public holidays, and offline validation of Turkish ID, tax, and IBAN numbers, with sourced and timestamped responses.44109 npm1MIT
- AlicenseBqualityBmaintenanceEnables AI assistants to retrieve live BIST and global stock prices, cryptocurrency prices, exchange rates, currency conversion, and inflation data from free public sources without API keys.38MIT
- AlicenseAqualityBmaintenanceEnables LLM clients to retrieve official Turkish central-bank exchange rates, MPC (PPK) decisions, Inflation Reports, Financial Stability Reports, and market-participant surveys, with page- or bulletin-level citations and sentence-level comparisons of policy statements. It works without any API key for FX data and documents, while an optional free EVDS key unlocks the full statistical catalogue for policy rates, inflation, and reserves.111MIT
- AlicenseAqualityBmaintenanceEnables AI agents to query Türkiye-specific data and logic without API keys: official central-bank exchange rates and currency conversion, live AFAD/Kandilli earthquakes, the official holiday calendar with business-day math, IBAN/TCKN/VKN validation, province and district lookup, prayer times, weather forecasts, plus Turkish-correct text casing and amounts written out in words. All 17 tools are read-only, with most working fully offline.17MIT