evimnet-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,153 @@
1
+ # Evimnet MCP Server
2
+
3
+ Türkiye'nin önde gelen gayrimenkul platformu [Evimnet](https://evimnet.com)'i MCP (Model Context Protocol) uyumlu AI asistanlara bağlar.
4
+
5
+ **Claude Desktop, VS Code Copilot, Cursor** ve MCP destekleyen tüm AI asistanlarla çalışır.
6
+
7
+ ---
8
+
9
+ ## Araçlar (Tools)
10
+
11
+ ### İlan Arama
12
+ | Araç | Açıklama |
13
+ |------|----------|
14
+ | `search_properties` | Türkiye genelinde mülk ara (şehir, fiyat, m², oda sayısı, mülk tipi, kiralık/satılık) |
15
+ | `get_property_details` | İlan detaylarını getir (fotoğraflar, konum, fiyat, emlakçı bilgisi) |
16
+
17
+ ### Konum
18
+ | Araç | Açıklama |
19
+ |------|----------|
20
+ | `get_locations` | Şehir, ilçe ve mahalleleri listele |
21
+ | `search_location` | Konum adından slug bul |
22
+
23
+ ### Çevre Bilgisi
24
+ | Araç | Açıklama |
25
+ |------|----------|
26
+ | `get_area_info` | Çevredeki POI'ler (okul, hastane, market, park…), hava durumu, hava kalitesi |
27
+
28
+ ### Başvuru
29
+ | Araç | Açıklama |
30
+ |------|----------|
31
+ | `send_inquiry` | Emlakçıya mesaj/başvuru gönder |
32
+
33
+ ### Piyasa & Döviz
34
+ | Araç | Açıklama |
35
+ |------|----------|
36
+ | `get_currency_rates` | Güncel TRY/EUR/USD kurları (TCMB) |
37
+ | `get_platform_stats` | Platform istatistikleri (ilan sayısı, emlakçı sayısı) |
38
+ | `convert_price` | TRY fiyatını EUR veya USD'ye çevir |
39
+
40
+ ---
41
+
42
+ ## Kurulum
43
+
44
+ ### Claude Desktop
45
+
46
+ `~/Library/Application Support/Claude/claude_desktop_config.json` dosyasına ekle:
47
+
48
+ ```json
49
+ {
50
+ "mcpServers": {
51
+ "evimnet": {
52
+ "command": "npx",
53
+ "args": ["evimnet-mcp"]
54
+ }
55
+ }
56
+ }
57
+ ```
58
+
59
+ Claude Desktop'ı yeniden başlat. Sol altta 🔌 simgesi görünüyorsa bağlantı kurulmuş demektir.
60
+
61
+ ---
62
+
63
+ ### VS Code (GitHub Copilot)
64
+
65
+ `.vscode/mcp.json` dosyası oluştur:
66
+
67
+ ```json
68
+ {
69
+ "servers": {
70
+ "evimnet": {
71
+ "type": "stdio",
72
+ "command": "npx",
73
+ "args": ["evimnet-mcp"]
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ ---
80
+
81
+ ### Cursor
82
+
83
+ `~/.cursor/mcp.json` dosyasına ekle:
84
+
85
+ ```json
86
+ {
87
+ "mcpServers": {
88
+ "evimnet": {
89
+ "command": "npx",
90
+ "args": ["evimnet-mcp"]
91
+ }
92
+ }
93
+ }
94
+ ```
95
+
96
+ ---
97
+
98
+ ### Windsurf
99
+
100
+ `~/.codeium/windsurf/mcp_config.json` dosyasına ekle:
101
+
102
+ ```json
103
+ {
104
+ "mcpServers": {
105
+ "evimnet": {
106
+ "command": "npx",
107
+ "args": ["evimnet-mcp"]
108
+ }
109
+ }
110
+ }
111
+ ```
112
+
113
+ ---
114
+
115
+ ## Yerel Geliştirme
116
+
117
+ ```bash
118
+ git clone https://github.com/evimnet/evimnet-mcp
119
+ cd evimnet-mcp
120
+ npm install
121
+
122
+ # Test (örnek JSON girişi)
123
+ echo '{}' | EVIMNET_BASE_URL=https://evimnet.com node server.js
124
+ ```
125
+
126
+ ### Ortam Değişkenleri
127
+
128
+ | Değişken | Açıklama | Varsayılan |
129
+ |----------|----------|-----------|
130
+ | `EVIMNET_BASE_URL` | API base URL | `https://evimnet.com` |
131
+ | `EVIMNET_API_KEY` | Emlakçı araçları için API key *(isteğe bağlı)* | — |
132
+
133
+ ---
134
+
135
+ ## Örnek Kullanım
136
+
137
+ Claude'a şunları sorabilirsiniz:
138
+
139
+ > "Bodrum'da 2 milyon TL altında satılık villa göster"
140
+
141
+ > "Bu villanın yakınında okul ve hastane var mı?"
142
+
143
+ > "5.000.000 TL kaç Euro eder?"
144
+
145
+ > "Beşiktaş'taki kiraları araştır, bütçem 20.000 TL"
146
+
147
+ > "Bu ilan için emlakçıya mesaj gönder, cumartesi müsaitim"
148
+
149
+ ---
150
+
151
+ ## Lisans
152
+
153
+ MIT
@@ -0,0 +1,94 @@
1
+ # ChatGPT'ye Yayınlama Rehberi
2
+
3
+ ## Gereksinimler
4
+ - ChatGPT Plus veya Team hesabı (GPT oluşturmak için)
5
+ - evimnet.com'un HTTPS ile erişilebilir olması ✅
6
+
7
+ ---
8
+
9
+ ## Adım 1 — GPT Builder'ı aç
10
+
11
+ 1. https://chatgpt.com/gpts/editor adresine git
12
+ 2. **"Create a GPT"** tıkla
13
+ 3. **"Configure"** sekmesine geç (sol üst)
14
+
15
+ ---
16
+
17
+ ## Adım 2 — Temel bilgileri gir
18
+
19
+ | Alan | Değer |
20
+ |------|-------|
21
+ | **Name** | Evimnet — Türkiye Emlak Asistanı |
22
+ | **Description** | Türkiye'de satılık ve kiralık mülk ara. Bodrum, Antalya, İstanbul ve tüm Türkiye. Döviz çevirimi, çevre bilgisi dahil. |
23
+ | **Profile picture** | evimnet.com logosunu yükle |
24
+
25
+ ---
26
+
27
+ ## Adım 3 — Instructions
28
+
29
+ `gpt-instructions.md` dosyasının tüm içeriğini **Instructions** kutusuna yapıştır.
30
+
31
+ ---
32
+
33
+ ## Adım 4 — Conversation starters (Başlangıç soruları)
34
+
35
+ Şunları ekle:
36
+ - Bodrum'da satılık villa ara, bütçem 3 milyon TL
37
+ - İstanbul Beşiktaş'ta kiralık 2+1 daire
38
+ - 5.000.000 TL kaç Euro eder?
39
+ - Antalya'da tatil için kiralık yer öner
40
+
41
+ ---
42
+
43
+ ## Adım 5 — Actions ekle
44
+
45
+ 1. **"Add actions"** tıkla
46
+ 2. **"Import from URL"** seç
47
+ 3. Şu URL'yi gir:
48
+ ```
49
+ https://evimnet.com/mcp/openapi.yaml
50
+ ```
51
+ *(veya "Enter schema manually" seçip openapi.yaml içeriğini yapıştır)*
52
+ 4. Araçların yüklendiğini doğrula:
53
+ - searchProperties ✅
54
+ - getPropertyDetails ✅
55
+ - searchLocation ✅
56
+ - getCurrencyRates ✅
57
+ - getAreaInfo ✅
58
+ - getPlatformStats ✅
59
+
60
+ ---
61
+
62
+ ## Adım 6 — Privacy Policy & Domain
63
+
64
+ | Alan | Değer |
65
+ |------|-------|
66
+ | **Privacy Policy URL** | https://evimnet.com/gizlilik-politikasi |
67
+ | **Domain** | evimnet.com |
68
+
69
+ ---
70
+
71
+ ## Adım 7 — Yayınla
72
+
73
+ 1. Sağ üstte **"Save"** → **"Publish"**
74
+ 2. Audience: **"Everyone"** seç (GPT Store'da görünsün)
75
+ 3. Category: **"Productivity"** veya **"Research & Analysis"**
76
+ 4. Submit for review
77
+
78
+ > ⚠️ OpenAI'ın incelemesi 1-5 iş günü sürebilir.
79
+
80
+ ---
81
+
82
+ ## Adım 8 — openapi.yaml'ı evimnet.com'dan servet et
83
+
84
+ GPT builder "Import from URL" için dosyanın erişilebilir olması gerekiyor.
85
+
86
+ `openapi.yaml` dosyasını şu path'e koy:
87
+ ```
88
+ /public/mcp/openapi.yaml
89
+ ```
90
+
91
+ Sonra Next.js'te static file olarak erişilebilir olacak:
92
+ ```
93
+ https://evimnet.com/mcp/openapi.yaml
94
+ ```
@@ -0,0 +1,55 @@
1
+ # Evimnet Emlak Asistanı — GPT Talimatları
2
+
3
+ Sen Evimnet'in resmi emlak asistanısın. Türkiye'deki satılık ve kiralık mülkleri bulmaya yardım edersin.
4
+
5
+ ## Kimsin
6
+
7
+ Evimnet, Türkiye'nin önde gelen gayrimenkul platformudur. Bodrum, Antalya, İstanbul, İzmir ve Türkiye'nin tüm şehirlerinde binlerce ilan barındırır. Özellikle Bodrum Yarımadası ve Ege-Akdeniz kıyı bölgelerinde lüks villalar, deniz manzaralı daireler ve tatil amaçlı mülkler konusunda uzmandır.
8
+
9
+ ## Nasıl davranırsın
10
+
11
+ - Kullanıcının dilinde yanıt ver (Türkçe, Almanca, İngilizce — kullanıcı ne yazarsa onu kullan)
12
+ - Almanca konuşan kullanıcılara özellikle yardımcı ol — Türkiye'de mülk arayan Avrupalı alıcılar önemli bir kitlemizdir
13
+ - Samimi, bilgili ve yardımsever ol
14
+ - İlan bulamadığında "sonuç yok" deme — farklı filtre kombinasyonları dene, bölge öner
15
+ - Fiyatları her zaman TRY olarak göster; kullanıcı isterse EUR/USD çevir (getCurrencyRates kullan)
16
+
17
+ ## Araç kullanım sırası
18
+
19
+ 1. Kullanıcı bir konum söylediğinde → önce **searchLocation** ile doğru slug'ı bul
20
+ 2. Slug bulununca → **searchProperties** ile ara
21
+ 3. Kullanıcı ilan detayı isterse → **getPropertyDetails** ile getir
22
+ 4. "Çevresi nasıl?", "okul var mı?" gibi sorularda → **getAreaInfo** kullan (ilanın lat/lng'si gerekir)
23
+ 5. "Kaç Euro?", "dolar ile ne kadar?" sorularında → **getCurrencyRates** ile çevir
24
+
25
+ ## Yanıt formatı
26
+
27
+ İlanları listelerken şu formatı kullan:
28
+
29
+ ---
30
+ **[Başlık]**
31
+ 📍 [İlçe], [Şehir] · [m²] · [Oda]
32
+ 💰 [Fiyat TRY] (~[EUR/USD tahmini])
33
+ 🔗 evimnet.com/ilan/[slug]
34
+ ---
35
+
36
+ - En fazla 5 ilan listele (daha fazlası bunaltıcı olur)
37
+ - "Daha fazla göster" diye sorabilirsin
38
+
39
+ ## Sık sorulan konular
40
+
41
+ **"Türkiye'de yabancı mülk alabilir mi?"**
42
+ Evet, çoğu yabancı uyruklu kişi Türkiye'de mülk satın alabilir. Askeri bölgeler ve bazı kısıtlı alanlar dışında kısıtlama yoktur. Detaylar için bir hukuk danışmanı veya yetkili emlakçı önerilir.
43
+
44
+ **"Türkiye'de ortalama fiyatlar ne kadar?"**
45
+ Bölgeye göre büyük farklılık gösterir. Güncel verileri getirmek için getPlatformStats ve searchProperties kullan.
46
+
47
+ **"Fiyat müzakere edilebilir mi?"**
48
+ Türkiye'de fiyat pazarlığı yaygındır, özellikle ikinci el mülklerde. Yeni projeler genellikle sabit fiyatlıdır.
49
+
50
+ ## Sınırlar
51
+
52
+ - Hukuki tavsiye verme — "bir hukuk danışmanına başvurun" de
53
+ - Kesin yatırım tavsiyesi verme
54
+ - Evimnet'te olmayan mülk verileri hakkında tahmin yürütme
55
+ - Emlakçı iletişim bilgilerini doğrudan paylaşma — ilanın sayfasına yönlendir
@@ -0,0 +1,290 @@
1
+ openapi: 3.1.0
2
+ info:
3
+ title: Evimnet — Türkiye Emlak API
4
+ description: >
5
+ Türkiye'nin önde gelen gayrimenkul platformu Evimnet'in arama ve bilgi API'si.
6
+ Satılık/kiralık daire, villa, arsa ve proje ilanlarını arar; döviz çevirimi ve
7
+ çevre bilgisi sağlar.
8
+ version: 1.0.0
9
+
10
+ servers:
11
+ - url: https://evimnet.com
12
+
13
+ paths:
14
+
15
+ /api/listings:
16
+ get:
17
+ operationId: searchProperties
18
+ summary: Türkiye'de mülk ara
19
+ description: >
20
+ Satılık veya kiralık daire, villa, arsa ve proje ilanlarını filtrele.
21
+ Şehir/ilçe slug'larını bilmiyorsan önce searchLocation kullan.
22
+ parameters:
23
+ - name: type
24
+ in: query
25
+ description: "SALE=Satılık, RENT=Kiralık"
26
+ schema:
27
+ type: string
28
+ enum: [SALE, RENT]
29
+ - name: propertyType
30
+ in: query
31
+ description: "APARTMENT=Daire, VILLA=Villa, LAND=Arsa, PROJECT=Proje"
32
+ schema:
33
+ type: string
34
+ enum: [APARTMENT, VILLA, LAND, PROJECT]
35
+ - name: citySlug
36
+ in: query
37
+ description: "Şehir slug'ı (ör: istanbul, bodrum, antalya, izmir)"
38
+ schema:
39
+ type: string
40
+ - name: districtSlug
41
+ in: query
42
+ description: "İlçe slug'ı (ör: besiktas, yalikavak, konyaalti)"
43
+ schema:
44
+ type: string
45
+ - name: minPrice
46
+ in: query
47
+ description: "Minimum fiyat (TRY)"
48
+ schema:
49
+ type: number
50
+ - name: maxPrice
51
+ in: query
52
+ description: "Maksimum fiyat (TRY)"
53
+ schema:
54
+ type: number
55
+ - name: minSqm
56
+ in: query
57
+ description: "Minimum net m²"
58
+ schema:
59
+ type: number
60
+ - name: maxSqm
61
+ in: query
62
+ description: "Maksimum net m²"
63
+ schema:
64
+ type: number
65
+ - name: rooms
66
+ in: query
67
+ description: "Oda sayısı (ör: 1+1, 2+1, 3+1, 4+1, 5+)"
68
+ schema:
69
+ type: string
70
+ - name: sort
71
+ in: query
72
+ description: "Sıralama: newest, price_asc, price_desc"
73
+ schema:
74
+ type: string
75
+ enum: [newest, price_asc, price_desc]
76
+ - name: page
77
+ in: query
78
+ schema:
79
+ type: integer
80
+ default: 1
81
+ - name: limit
82
+ in: query
83
+ schema:
84
+ type: integer
85
+ default: 10
86
+ maximum: 20
87
+ - name: lang
88
+ in: query
89
+ description: "Yanıt dili: tr veya de (Almanca)"
90
+ schema:
91
+ type: string
92
+ enum: [tr, de]
93
+ responses:
94
+ "200":
95
+ description: İlan listesi
96
+ content:
97
+ application/json:
98
+ schema:
99
+ type: object
100
+ properties:
101
+ listings:
102
+ type: array
103
+ items:
104
+ $ref: "#/components/schemas/ListingSummary"
105
+ total:
106
+ type: integer
107
+ page:
108
+ type: integer
109
+
110
+ /api/listings/{slug}:
111
+ get:
112
+ operationId: getPropertyDetails
113
+ summary: İlan detayını getir
114
+ description: Slug veya tam URL ile ilan detaylarını getir.
115
+ parameters:
116
+ - name: slug
117
+ in: path
118
+ required: true
119
+ description: "İlan slug'ı (ör: bodrum-yalikavak-satilik-villa-abc123)"
120
+ schema:
121
+ type: string
122
+ - name: lang
123
+ in: query
124
+ description: "tr veya de"
125
+ schema:
126
+ type: string
127
+ responses:
128
+ "200":
129
+ description: İlan detayı
130
+ content:
131
+ application/json:
132
+ schema:
133
+ type: object
134
+ properties:
135
+ data:
136
+ $ref: "#/components/schemas/ListingDetail"
137
+
138
+ /api/search:
139
+ get:
140
+ operationId: searchLocation
141
+ summary: Konum adından slug bul
142
+ description: >
143
+ "Bodrum" → "bodrum", "Beşiktaş" → "besiktas" gibi.
144
+ searchProperties'ten önce doğru slug bulmak için kullan.
145
+ parameters:
146
+ - name: q
147
+ in: query
148
+ required: true
149
+ description: Aranacak konum adı
150
+ schema:
151
+ type: string
152
+ - name: locale
153
+ in: query
154
+ schema:
155
+ type: string
156
+ default: tr
157
+ responses:
158
+ "200":
159
+ description: Konum sonuçları
160
+ content:
161
+ application/json:
162
+ schema:
163
+ type: object
164
+
165
+ /api/currency:
166
+ get:
167
+ operationId: getCurrencyRates
168
+ summary: Güncel TRY/EUR/USD kurları
169
+ description: Türkiye Merkez Bankası (TCMB) verilerine dayalı güncel döviz kurları.
170
+ responses:
171
+ "200":
172
+ description: Döviz kurları
173
+ content:
174
+ application/json:
175
+ schema:
176
+ type: object
177
+ properties:
178
+ EUR:
179
+ type: object
180
+ properties:
181
+ buying: { type: number }
182
+ selling: { type: number }
183
+ mid: { type: number }
184
+ USD:
185
+ type: object
186
+ properties:
187
+ buying: { type: number }
188
+ selling: { type: number }
189
+ mid: { type: number }
190
+ date: { type: string }
191
+ source: { type: string }
192
+
193
+ /api/nearby:
194
+ get:
195
+ operationId: getAreaInfo
196
+ summary: Çevre bilgisi — POI, hava durumu, hava kalitesi
197
+ description: >
198
+ Koordinat çevresindeki okul, hastane, market, park, restoran, toplu taşıma.
199
+ Anlık hava durumu ve hava kalitesi (AQI) dahil.
200
+ İlan koordinatları getPropertyDetails'ten alınabilir.
201
+ parameters:
202
+ - name: lat
203
+ in: query
204
+ required: true
205
+ description: Enlem
206
+ schema:
207
+ type: number
208
+ - name: lng
209
+ in: query
210
+ required: true
211
+ description: Boylam
212
+ schema:
213
+ type: number
214
+ - name: radius
215
+ in: query
216
+ description: "Arama yarıçapı (metre, varsayılan: 1500)"
217
+ schema:
218
+ type: integer
219
+ default: 1500
220
+ responses:
221
+ "200":
222
+ description: Çevre bilgisi
223
+ content:
224
+ application/json:
225
+ schema:
226
+ type: object
227
+
228
+ /api/stats:
229
+ get:
230
+ operationId: getPlatformStats
231
+ summary: Evimnet platform istatistikleri
232
+ description: Toplam ilan, emlakçı ve kapsanan şehir sayısı.
233
+ responses:
234
+ "200":
235
+ description: İstatistikler
236
+ content:
237
+ application/json:
238
+ schema:
239
+ type: object
240
+ properties:
241
+ listingCount: { type: integer }
242
+ agentCount: { type: integer }
243
+ cityCount: { type: integer }
244
+
245
+ components:
246
+ schemas:
247
+ ListingSummary:
248
+ type: object
249
+ properties:
250
+ id: { type: string }
251
+ title: { type: string }
252
+ slug: { type: string }
253
+ type: { type: string }
254
+ propertyType: { type: string }
255
+ priceTRY: { type: number }
256
+ sqmNet: { type: integer }
257
+ rooms: { type: string }
258
+ city:
259
+ type: object
260
+ properties:
261
+ name: { type: string }
262
+ district:
263
+ type: object
264
+ properties:
265
+ name: { type: string }
266
+ images:
267
+ type: array
268
+ items:
269
+ type: object
270
+ properties:
271
+ url: { type: string }
272
+
273
+ ListingDetail:
274
+ allOf:
275
+ - $ref: "#/components/schemas/ListingSummary"
276
+ - type: object
277
+ properties:
278
+ description: { type: string }
279
+ lat: { type: number }
280
+ lng: { type: number }
281
+ bathrooms: { type: integer }
282
+ floor: { type: integer }
283
+ totalFloors: { type: integer }
284
+ buildingAge: { type: integer }
285
+ agent:
286
+ type: object
287
+ properties:
288
+ id: { type: string }
289
+ name: { type: string }
290
+ phone: { type: string }
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "evimnet-mcp",
3
+ "version": "1.0.0",
4
+ "description": "Evimnet MCP Server — AI asistanlar için Türkiye gayrimenkul araçları",
5
+ "type": "module",
6
+ "bin": {
7
+ "evimnet-mcp": "./server.js"
8
+ },
9
+ "scripts": {
10
+ "start": "node server.js",
11
+ "dev": "node --watch server.js"
12
+ },
13
+ "dependencies": {
14
+ "@modelcontextprotocol/sdk": "^1.0.0"
15
+ },
16
+ "engines": {
17
+ "node": ">=18"
18
+ },
19
+ "keywords": ["mcp", "evimnet", "real-estate", "turkey", "property"],
20
+ "license": "MIT"
21
+ }