mcp server
tefas-scraper
TEFAS (Turkey Electronic Fund Distribution Platform) verilerini çekmek için **MCP Server** ve **CLI Tool**.
Set up
Runs on your computer. Pick your agent and operating system.
This project does not publish an install method we can turn into a config. Follow the README instead.
README
synced Oct 27, 2026TEFAS Scraper
TEFAS (Türkiye Elektronik Fon Dağılım Platformu) verilerini çekmek, analiz etmek ve Gemini/CLI üzerinden erişim sağlamak için hazırlanmış bir araç seti.
Özet
- MCP sunucusu ve komut satırı arayüzü (CLI) sağlar.
- TEFAS'ın açık API uç noktalarından fon analizleri, tarihsel veriler ve karşılaştırmalı raporlar alır.
Özellikler
- MCP (FastMCP) araçları:
analyze_fund,get_fund_history_info,get_fund_allocation_history,compare_fund_returns,compare_fund_sizes,compare_fund_fees. - CLI modunda doğrudan çağrılabilir:
python mcp_server.py --cli <command>. - Alternatif HTTP API (FastAPI) örneği:
tefas_scraper_extension/main.py.
Gereksinimler
- Python 3.12+ (önerilir)
- Python bağımlılıkları:
pip install -r requirements.txt
Kurulum
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Hızlı Başlangıç
- MCP sunucusu (stdio transport, Gemini ile entegrasyon için):
python mcp_server.py
- CLI örnekleri:
# Fon analizi (price range ile)
python mcp_server.py --cli analyze --fund-type YAT --fund-code TTE --price-range 1M --pretty
# Tarihsel bilgi (history-info)
python mcp_server.py --cli history-info --fund-code TTE --start-date 2024-01-01 --end-date 2024-01-31 --pretty
# Portföy dağılımı geçmişi
python mcp_server.py --cli history-allocation --fund-code TTE --start-date 2024-01-01 --end-date 2024-01-31 --pretty
# Getiri karşılaştırması
python mcp_server.py --cli compare-returns --fund-type YAT --periods 0,0,0,1,0,0,0 --pretty
# Büyüklük karşılaştırması (DD.MM.YYYY formatıyla)
python mcp_server.py --cli compare-sizes --start-date 01.01.2024 --end-date 31.01.2024 --pretty
- FastAPI (alternatif HTTP) çalıştırma:
uvicorn tefas_scraper_extension.main:app --reload --port 8000
API / MCP Araçları
analyze_fund— parametreler:fund_type(zorunlu),fund_code(zorunlu),start_date(DD.MM.YYYY),end_date(DD.MM.YYYY),price_range(1H,1M,3M,6M,YTD,1Y,3Y,5Y).get_fund_history_info— parametreler:fund_code,start_date(YYYY-MM-DD),end_date(YYYY-MM-DD),fund_type(opsiyonel).get_fund_allocation_history— aynı format ve zorunluluklarget_fund_history_infoile uyumlu.compare_fund_returns—fund_typeveperiods(ör.1,1,1,1,1,1,1).compare_fund_sizes— tarihler DD.MM.YYYY formatında beklenir.compare_fund_fees—fund_typeparametresi.
Tarih Formatlarına Dikkat
analyze_fundve bazı karşılaştırma araçları DD.MM.YYYY tarih formatı bekler.history-*uç noktaları YYYY-MM-DD formatı bekler. Karışık formatlar geçersiz girişlere veyaValueErrorhatalarına yol açabilir. Lütfen örnekleri dikkatle takip edin.
Test Etme / CLI Kombinasyonlarını Deneme
Aşağıdaki küçük komut dosyası, CLI komutlarını ve tipik argüman kombinasyonlarını çalıştırıp hata veren kombinasyonları yakalamaya uygundur. Bu, gerçek TEFAS çağrıları gerçekleştireceği için dikkatle ve kısıtlı sıklıkta çalıştırınız.
#!/usr/bin/env bash
set +e
echo "Basit CLI testi başlıyor..."
commands=(
"python mcp_server.py --cli analyze --fund-type YAT --fund-code TTE --price-range 1M --pretty"
"python mcp_server.py --cli analyze --fund-code TTE --price-range 1M --pretty" # eksik fund-type -> parser hatası
"python mcp_server.py --cli history-info --fund-code TTE --start-date 2024-01-01 --end-date 2024-01-31 --pretty"
"python mcp_server.py --cli history-info --fund-code TTE --start-date 01.01.2024 --end-date 31.01.2024 --pretty" # yanlış format -> ValueError beklenir
"python mcp_server.py --cli compare-sizes --start-date 01.01.2024 --end-date 31.01.2024 --pretty"
)
for cmd in "${commands[@]}"; do
echo "=> $cmd"
eval $cmd
rc=$?
if [ $rc -ne 0 ]; then
echo "FAILED (exit $rc): $cmd"
else
echo "OK: $cmd"
fi
echo "---"
done
Not: Bu script hataları yakalayacak, ancak asıl amaç hangi argüman kombinasyonunun servis veya kodda hata çıkardığını gözlemlemektir. Eğer history-info için DD.MM.YYYY formatı gönderirseniz ValueError alırsınız; bu davranış bilinmektedir.
Troubleshooting (Hızlı İpuçları)
- Eğer
ValueError: Invalid date formatgörüyorsanız, doğru formatı kullandığınızdan emin olun (endpoint'e bağlı olarak DD.MM.YYYY veya YYYY-MM-DD). Failed to decode JSONveya aldığınız cevap HTML içeriyorsa (WAF/robot engellemesi), istek frekansı veya User-Agent nedeniyle servis tarafından engellenmiş olabilirsiniz.- Boş yanıt (
Empty response from server) dönerse parametreleri kontrol edin. BrokenPipeErrorile karşılaşırsanız, çıktıyı küçük parçalara bölün veya--prettyseçeneğini kaldırın.
Geliştirme ve Katkı
- Test eklemek için
pytestveresponses/requests-mockkullanılması önerilir. - Önerilen ilk PR'lar: (1)
requirements.txtiçin versiyon sabitleme, (2) test iskeleti (tests/), (3) TLS ve retry iyileştirmesi.
Test Sonuçları (Yerel)
Testler yerel venv içinde çalıştırıldı. Sonuç: 3 passed.
Lisans
Projede bir LICENSE dosyası bulunmaktadır; lisans koşullarına uyun.
Not: Bash scriptler tefasUrlExploration/ klasöründe referans için saklanmaktadır.