# Taksi MCP Server 🚖
Türkiye'deki taksi hizmetleri için Model Context Protocol (MCP) sunucusu. BiTaksi, iTaksi, Uber ve genel taksi hizmetlerini destekler.
## Özellikler ✨
- **Çoklu Sağlayıcı Desteği**: BiTaksi, iTaksi, Uber ve genel taksi hizmetleri
- **Ücret Tahmini**: Mesafe ve taksi türüne göre ücret hesaplama
- **Taksi Çağırma**: Çeşitli taksi türlerinde yolculuk rezervasyonu
- **Canlı Takip**: Yolculuk durumu ve şoför bilgileri
- **İletişim**: Şoför ile direkt iletişim (arama/SMS)
- **Geçmiş**: Yolculuk geçmişi görüntüleme
- **Türkçe Destek**: Tam Türkçe arayüz ve mesajlar
## Desteklenen Taksi Türleri 🚗
- **Standart Taksi**: Normal şehir taksisi
- **Lüks Taksi**: Konforlu ve geniş araç
- **Büyük Taksi**: 8 kişilik geniş araç
- **Pati Taksi**: Evcil hayvan dostu taksi
## Kurulum 📦
### Gereksinimler
- Node.js 18.0 veya üstü
- npm veya yarn paket yöneticisi
### Kurulum Adımları
1. **Bağımlılıkları yükleyin:**
```bash
npm install
```
2. **Ortam değişkenlerini ayarlayın:**
```bash
cp .env.example .env
# .env dosyasını düzenleyin
```
3. **Projeyi derleyin:**
```bash
npm run build
```
4. **Sunucuyu başlatın:**
```bash
npm start
```
### Geliştirici Modu
```bash
# Watch mode ile geliştirme
npm run dev
```
## Konfigürasyon ⚙️
`.env` dosyasında şu ayarları yapabilirsiniz:
### API Ayarları
```env
# Test modu (API çağrıları yerine mock data)
TEST_MODE=true
# BiTaksi API (gelecekte kullanım için)
BITAKSI_API_KEY=your_api_key
BITAKSI_ENABLED=false
# iTaksi API
ITAKSI_API_KEY=your_api_key
ITAKSI_ENABLED=false
# Uber API
UBER_CLIENT_ID=your_client_id
UBER_CLIENT_SECRET=your_client_secret
UBER_ENABLED=false
```
### Genel Ayarlar
```env
DEFAULT_CITY=istanbul
DEFAULT_COUNTRY_CODE=TR
DEFAULT_CURRENCY=TRY
DEFAULT_LANGUAGE=tr
# Varsayılan konum (İstanbul Taksim)
DEFAULT_LATITUDE=41.0362
DEFAULT_LONGITUDE=28.9841
```
## MCP Tools 🛠️
Sunucu aşağıdaki MCP araçlarını sağlar:
### 1. `taksi_turleri_getir`
Mevcut taksi türlerini listeler.
```json
{
"saglayici": "bitaksi" // bitaksi, itaksi, uber, genel
}
```
### 2. `ucret_tahmini`
İki konum arası ücret tahmini hesaplar.
```json
{
"saglayici": "genel",
"baslangic_enlem": 41.0362,
"baslangic_boylam": 28.9841,
"baslangic_adres": "Taksim, İstanbul",
"hedef_enlem": 41.0082,
"hedef_boylam": 28.9784,
"hedef_adres": "Sultanahmet, İstanbul",
"taksi_turu": "standart"
}
```
### 3. `taksi_cagir`
Taksi çağırır ve yolculuk oluşturur.
```json
{
"saglayici": "bitaksi",
"baslangic_enlem": 41.0362,
"baslangic_boylam": 28.9841,
"hedef_enlem": 41.0082,
"hedef_boylam": 28.9784,
"taksi_turu": "luks",
"ekstra_ozellikler": ["evcil_hayvan", "klima"]
}
```
### 4. `yolculuk_durumu`
Aktif yolculuğun durumunu sorgular.
```json
{
"yolculuk_id": "12345",
"saglayici": "bitaksi"
}
```
### 5. `yolculuk_iptal`
Yolculuğu iptal eder.
```json
{
"yolculuk_id": "12345",
"saglayici": "bitaksi",
"iptal_nedeni": "Planlarım değişti"
}
```
### 6. `yolculuk_gecmisi`
Geçmiş yolculukları listeler.
```json
{
"saglayici": "genel",
"limit": 10
}
```
### 7. `surucu_iletisim`
Şoför ile iletişim kurar.
```json
{
"yolculuk_id": "12345",
"saglayici": "bitaksi",
"iletisim_turu": "sms", // arama, sms
"mesaj": "5 dakika geç kalacağım"
}
```
## API Entegrasyonları 🔌
### Şu Anda Desteklenen
- **Test/Mock Modu**: Tam işlevsel simülasyon
- **Genel Taksi**: Temel taksi işlevleri
### Gelecek Entegrasyonlar
- **BiTaksi API**: Henüz public API yok
- **iTaksi API**: Geliştirici kaynakları araştırılıyor
- **Uber API**: Türkiye desteği kontrol edilecek
## Veri Yapıları 📊
### Konum
```typescript
interface Konum {
enlem: number; // latitude
boylam: number; // longitude
adres?: string; // adres metni
sehir?: string; // şehir bilgisi
}
```
### Yolculuk
```typescript
interface Yolculuk {
id: string;
saglayici: 'bitaksi' | 'itaksi' | 'uber' | 'genel';
durum: 'aranıyor' | 'bulundu' | 'yolda' | 'geldi' | 'yolculukta' | 'tamamlandı' | 'iptal';
baslangic: Konum;
hedef: Konum;
taksiTuru: string;
surucu?: SurucuBilgileri;
ucret?: number;
parabirimi: string;
olusturulma: Date;
guncelleme: Date;
}
```
### Ücret Tahmini
```typescript
interface UcretTahmini {
minFiyat: number;
maxFiyat: number;
parabirimi: string;
tahminiSure: number; // dakika
mesafe: number; // kilometre
taksiTuru: string;
}
```
## Kullanım Örnekleri 💡
### Claude ile Kullanım
```
Taksim'den Sultanahmet'e taksi çağır
```
```
Kadıköy'den Beyoğlu'na ücret tahmini ver
```
```
Aktif yolculuğumun durumunu kontrol et
```
### MCP Client ile
```javascript
// Taksi türlerini listele
await client.callTool("taksi_turleri_getir", {
saglayici: "bitaksi"
});
// Ücret tahmini al
await client.callTool("ucret_tahmini", {
baslangic_enlem: 41.0362,
baslangic_boylam: 28.9841,
hedef_enlem: 41.0082,
hedef_boylam: 28.9784,
taksi_turu: "luks"
});
```
## Hata Yönetimi 🚨
Sunucu şu hata türlerini döndürür:
- **Eksik Parametre**: Gerekli parametreler eksikse
- **API Hatası**: Sağlayıcı API'sinde sorun olursa
- **Konum Hatası**: Geçersiz koordinatlar
- **Yolculuk Bulunamadı**: Belirtilen ID'de yolculuk yoksa
### Hata Formatı
```json
{
"durum": "hata",
"hata": "Hata açıklaması",
"kod": "HATA_KODU"
}
```
## Güvenlik 🔒
- API anahtarları `.env` dosyasında saklanır
- Rate limiting uygulanır
- Konum bilgileri şifrelenir (production'da)
- Kişisel veriler loglanmaz
## Katkıda Bulunma 🤝
1. Fork yapın
2. Feature branch oluşturun (`git checkout -b feature/yeni-ozellik`)
3. Değişikliklerinizi commit edin (`git commit -am 'Yeni özellik eklendi'`)
4. Branch'inizi push edin (`git push origin feature/yeni-ozellik`)
5. Pull Request oluşturun
## Roadmap 🗺️
- [ ] BiTaksi API entegrasyonu
- [ ] iTaksi API entegrasyonu
- [ ] Uber API entegrasyonu
- [ ] Gerçek zamanlı konum takibi
- [ ] Push notification desteği
- [ ] Ödeme entegrasyonu
- [ ] Multi-language desteği
- [ ] Mobile app entegrasyonu
## Lisans 📄
MIT License - detaylar için LICENSE dosyasına bakınız.
## İletişim 📞
- GitHub: [Issue açın](https://github.com/your-repo/taksi-mcp/issues)
- Email: support@yourcompany.com
## Teşekkürler 🙏
Bu proje [Model Context Protocol](https://modelcontextprotocol.io/) ve Türkiye'deki taksi sağlayıcıları sayesinde mümkün olmuştur.
---
**Not**: Bu proje henüz development aşamasındadır. Production ortamında kullanmadan önce tüm API entegrasyonlarını test edin.