Provides access to weather data through Open-Meteo API, mathematical calculations, and timezone-aware date/time information via Google's Gemini AI integration
🤖 Gemini AI + MCP (Model Context Protocol) Örneği
Bu proje, Model Context Protocol (MCP) standardına uygun bir araç sunucusu (tool server) implementasyonudur.
İki şekilde kullanabilirsiniz:
🖥️ Claude Desktop ile - Server'ı Claude Desktop'a ekleyin (önerilen - en kolay!)
🤖 Gemini AI CLI ile - Terminal'den interaktif kullanım
Her iki durumda da aynı MCP server (mcp-server.js
) kullanılır!
🚀 Hızlı Başlangıç
Claude Desktop Kullanıcıları için (Önerilen)
Gemini CLI Kullanıcıları için
🎯 Model Context Protocol (MCP) Nedir?
MCP (Model Context Protocol), AI uygulamalarının harici araçları ve veri kaynaklarını standart bir şekilde kullanmasını sağlayan açık bir protokoldür. Bu projede:
🔧 MCP Server (
mcp-server.js
): Araçları (tools) standart MCP formatında tanımlar ve sunarStdio üzerinden iletişim kurar
Tool definitions ve implementations içerir
Bağımsız bir process olarak çalışır
🔌 MCP Client (
index.js
): Server'a bağlanır ve Gemini AI'a araçları iletirServer'ı child process olarak başlatır
Stdio transport ile server'a bağlanır
Tool çağrılarını yönetir
📡 Standart İletişim: JSON-RPC formatında tool çağrıları ve yanıtları
MCP'nin Avantajları:
✅ Standart, birlikte çalışabilir araç tanımları
✅ Kolay genişletilebilir mimari
✅ Client-Server mimarisi ile temiz ayrım
✅ Çoklu AI modeli desteği (Claude, Gemini, vb.)
✅ Araç yönetimi ve versiyonlama
📋 Özellikler
🏗️ Mimari
🔗 MCP Client-Server Mimarisi: Temiz ayrılmış, profesyonel yapı
📄 İki Dosya Sistemi:
mcp-server.js
: MCP Server (tool provider)index.js
: MCP Client + Gemini AI + CLI
📡 Stdio Transport: Standart MCP iletişim protokolü
🔄 Otomatik Server Yönetimi: Client otomatik olarak server'ı başlatır
🖥️ Claude Desktop Desteği: Server doğrudan Claude Desktop'ta kullanılabilir!
🛠️ Araçlar (Tools)
✅ Gerçek Hava Durumu Sorgulama: Open-Meteo API ile gerçek zamanlı, ücretsiz hava durumu bilgisi
✅ API Key Gerektirmez: Hava durumu için API key'e gerek yok!
✅ Hesap Makinesi: Matematiksel işlemler (toplama, çıkarma, çarpma, bölme)
✅ Zaman Bilgisi: Farklı zaman dilimleri için tarih ve saat
✅ Çoklu Fonksiyon Çağrısı: AI, gerektiğinde birden fazla fonksiyonu otomatik çağırabilir
💻 Kullanıcı Deneyimi
✅ Hata Yönetimi: Kapsamlı hata yakalama ve raporlama
✅ İnteraktif CLI: Readline ile komut satırından sürekli soru sorabilme
✅ Demo Modu: Otomatik örneklerle hızlı test
✅ Tools Komutu: Kullanılabilir araçları listele
🚀 Kurulum
1. Bağımlılıkları Yükleyin
2. Claude Desktop ile Kullanım (Opsiyonel)
Bu MCP server'ı Claude Desktop uygulamasında kullanabilirsiniz!
Adım 1: Config dosyasını hazırlayın
Proje içindeki claude_desktop_config.json
dosyasını açın ve path'i kendi sisteminize göre düzenleyin.
Dosya içinde tüm sistemler için örnekler var:
💡 Önemli:
Windows'ta path'lerde
\\
(çift ters slash) kullanınmacOS/Linux'ta normal
/
(slash) kullanınNode.js'in PATH'inizde olduğundan emin olun
Dosya içindeki
_examples
kısmına bakın, sisteminize uygun olanı seçin
Adım 2: Config dosyasını Claude Desktop klasörüne kopyalayın
Windows:
macOS:
Linux:
Adım 3: Claude Desktop'ı yeniden başlatın
Config dosyasını kaydettikten sonra Claude Desktop'ı kapatıp tekrar açın.
Adım 4: Server'ı test edin
Claude Desktop içinde şöyle sorular sorabilirsiniz:
"İstanbul'da hava nasıl?" 🌤️
"25 ile 17'yi çarp" 🧮
"Şu an saat kaç?" ⏰
Claude otomatik olarak MCP araçlarınızı kullanacak!
🔍 Server'ın çalıştığını doğrulama:
Claude Desktop'ta yeni bir konuşma başlatın
Sağ alt köşede "🔌" simgesine tıklayın
"weather-tools" server'ını listede görmelisiniz
Yeşil nokta = Server çalışıyor ✅
Kırmızı nokta = Server hatası ❌
💡 İpucu: Claude Desktop'ta araçlar otomatik kullanılır. Gemini CLI'dan farklı olarak, hangi aracın çağrıldığını görmezsiniz - sadece sonucu görürsünüz.
3. Environment Variables Ayarlayın (Gemini CLI kullanımı için)
.env.example
dosyasını .env
olarak kopyalayın:
Ardından .env
dosyasını düzenleyip Gemini API key'inizi ekleyin:
Gemini API Key Nasıl Alınır?
Google AI Studio adresine gidin
Google hesabınızla giriş yapın
"Create API Key" butonuna tıklayın
Oluşturulan key'i kopyalayıp
.env
dosyasına yapıştırın
💡 Not: Hava durumu için Open-Meteo API kullanıldığından, hava durumu API key'ine gerek yoktur!
4. Uygulamayı Çalıştırın (Gemini CLI)
İnteraktif Mod (Varsayılan) - Soru sorarak kullanın:
Bu modda:
✅ CLI'dan istediğiniz soruyu sorabilirsiniz
✅ Sürekli soru sorabilirsiniz
✅
help
yazarak komutları görebilirsiniz✅
exit
yazarak çıkabilirsiniz
Demo Mod - Otomatik örnekleri izleyin:
Geliştirme Modu - Otomatik yeniden başlatma:
📖 Nasıl Çalışır?
MCP + Function Calling Akışı
MCP Server Başlatma: Server, araçları MCP standardında tanımlar (
get_current_weather
,calculate
,get_current_time
)Tool Registration: Araçlar, input şemaları ve açıklamalarıyla MCP Server'a kaydedilir
Gemini AI Entegrasyonu: MCP araçları Gemini AI'a iletilir
Kullanıcı Mesajı: Kullanıcı doğal dilde bir soru sorar (CLI readline ile)
AI Analizi: Gemini AI, soruyu analiz eder ve uygun MCP araçlarını seçer
MCP Tool Çağrısı: Seçilen araçlar MCP Server üzerinden çağrılır (JSON-RPC formatında)
Tool Execution: MCP Server aracı çalıştırır ve sonucu döndürür
Sonuç AI'a İletilir: Tool sonuçları Gemini AI'a geri gönderilir
Final Yanıt: AI, sonuçları kullanarak kullanıcıya anlamlı bir yanıt oluşturur
MCP Client-Server Mimarisi
İletişim Akışı:
Kullanıcı CLI'dan soru sorar
Gemini AI, uygun MCP aracını seçer
MCP Client, server'a tool çağrısı yapar (stdio)
MCP Server aracı çalıştırır ve sonucu döndürür
Client sonucu Gemini AI'a gönderir
AI final yanıtı kullanıcıya sunar
Örnek Kullanım Senaryoları
🎮 İnteraktif Mod Komutları
İnteraktif modda kullanabileceğiniz komutlar:
Komut | Açıklama |
Herhangi bir soru | AI'a soru sorun (örn: "İstanbul'da hava nasıl?") |
veya
| Yardım mesajını göster |
| Örnek soruları listele |
veya
| Ekranı temizle |
veya
| Programdan çık |
Örnek Kullanım:
🔧 Kod Yapısı
📄 mcp-server.js
- MCP Server
Model Context Protocol standardında server implementasyonu:
MCP Server Instance: Stdio transport ile çalışan server
const server = new Server({ name: 'weather-tools-server', version: '1.0.0', }, { capabilities: { tools: {} } });Tool Definitions (
mcpTools
): MCP formatında araç tanımları{ name: 'get_current_weather', description: 'Hava durumu bilgisi getirir', inputSchema: { /* JSON Schema */ } }Tool Implementations (
toolImplementations
): Gerçek araç fonksiyonlarıget_current_weather
: Open-Meteo API ile hava durumucalculate
: Matematiksel hesaplamalarget_current_time
: Tarih ve saat bilgisi
Request Handlers:
ListToolsRequestSchema
: Araçları listelerCallToolRequestSchema
: Araç çağrılarını işler
📄 index.js
- MCP Client + Gemini AI
Client ve AI entegrasyonu:
MCP Client Setup (
initializeMCPClient
):MCP Server'ı child process olarak başlatır
Stdio transport ile server'a bağlanır
Araçları alır ve Gemini formatına dönüştürür
Tool Calling (
callMCPTool
):MCP server'a araç çağrısı yapar
Sonuçları parse eder ve döndürür
Gemini Integration (
runConversation
):Gemini API ile chat başlatır
MCP araçlarını Gemini'ye function declarations olarak iletir
Function call'ları MCP Server üzerinden işler
Sonuçları AI'a geri gönderir
Interactive CLI:
Readline ile kullanıcı etkileşimi
Komut işleme (help, examples, tools, exit)
Demo modu desteği
toolConfig
- Function Calling Modu
Proje AUTO modunda çalışır:
AUTO (Varsayılan): AI, gerektiğinde otomatik olarak fonksiyon çağırır veya direkt yanıt verir
ANY: AI her durumda en az bir fonksiyon çağırmaya zorlanır
NONE: AI hiçbir fonksiyon çağırmaz, sadece text yanıt verir
🔌 Dosya İlişkileri
Gemini CLI Kullanımı:
Claude Desktop Kullanımı:
📦 Dosyalar
Dosya | Açıklama | Kullanım |
| MCP Server - Araçları sağlar | Her iki kullanımda da çalışır ⭐ |
| MCP Client + Gemini AI + CLI | Sadece Gemini CLI kullanımı için |
| Claude Desktop config (şablon) | Claude Desktop kurulumu için 🖥️ |
| NPM bağımlılıkları ve scriptler | Proje yönetimi |
| Detaylı dokümantasyon | Kurulum ve kullanım rehberi |
🌟 MCP Araçları (Tools)
1. get_current_weather
Open-Meteo API kullanarak belirtilen şehir için gerçek zamanlı, ücretsiz hava durumu bilgisi getirir.
MCP Tool Name: get_current_weather
Parametreler:
city
(string, zorunlu): Şehir adı (örn: "Istanbul", "London", "New York", "Tokyo")unit
(string, opsiyonel): "celsius" veya "fahrenheit" (varsayılan: celsius)
Dönen Veriler:
Şehir adı, ülke kodu ve koordinatlar
Sıcaklık (gerçek ve hissedilen)
Hava durumu açıklaması (WMO kodlarına göre Türkçe)
Nem oranı
Atmosfer basıncı
Rüzgar hızı
Yağış miktarı
Zaman dilimi
MCP Yanıt Formatı:
Avantajlar:
✅ API key gerektirmez
✅ Ücretsiz ve sınırsız kullanım
✅ Dünya çapında tüm şehirler
✅ WMO standart hava kodları
2. calculate
Matematiksel işlem yapar.
MCP Tool Name: calculate
Parametreler:
operation
(string, zorunlu): "add", "subtract", "multiply", "divide"a
(number, zorunlu): İlk sayıb
(number, zorunlu): İkinci sayı
MCP Call Örneği:
3. get_current_time
Belirtilen zaman dilimi için tarih ve saat bilgisi getirir.
MCP Tool Name: get_current_time
Parametreler:
timezone
(string, opsiyonel): Zaman dilimi (varsayılan: "Europe/Istanbul")
MCP Call Örneği:
🛠️ Özelleştirme
Yeni MCP Aracı Ekleme
Model Context Protocol standardına uygun yeni bir araç eklemek çok kolay! Sadece mcp-server.js
dosyasını düzenlemeniz yeterli:
1. mcp-server.js
2. Aynı dosyada implementasyon ekleyin:
O kadar! 🎉
MCP Client (index.js
) otomatik olarak:
Server'dan yeni aracı alır
Gemini AI formatına dönüştürür
Kullanıma hazır hale getirir
Server'ı yeniden başlattığınızda yeni araç hemen kullanılabilir olur!
MCP Server'ı Ayrı Çalıştırma (Opsiyonel)
Server'ı ayrı bir terminal'de manuel olarak çalıştırmak isterseniz:
Bu şekilde server loglarını ayrı görebilirsiniz.
📝 Notlar
✅ Gerçek Hava Durumu: Open-Meteo API ile gerçek zamanlı hava durumu bilgisi
🔐 Güvenlik: API key'inizi asla git'e commit etmeyin!
🏗️ Production: Rate limiting ve hata yönetimi production için geliştirilmelidir
🔧 MCP Standardı: Server-Client mimarisi MCP spesifikasyonuna uygun
📡 Stdio Transport: Client-Server iletişimi stdio üzerinden (stdin/stdout)
🔄 Otomatik Bağlantı: Client otomatik olarak server'ı başlatır ve bağlanır
🛠️ Geliştirme: Server logları stderr'e yazılır, bu sayede debugging kolay
🔒 Güvenlik
.env
dosyası.gitignore
'a eklenmiştirAPI key'ler asla kod içinde hardcode edilmemelidir
Environment variables kullanarak hassas bilgileri koruyun
📚 Kaynaklar
Model Context Protocol (MCP)
Claude Desktop
Gemini AI
Hava Durumu API
📄 Lisans
MIT
Geliştirici Notu: Bu proje eğitim amaçlıdır ve Model Context Protocol (MCP) standardı ile Gemini API'nin function calling özelliğini entegre ederek nasıl kullanılabileceğini göstermek için tasarlanmıştır. MCP, AI uygulamalarında araç yönetimi için açık ve standart bir protokol sağlar.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Provides real-time weather data from Open-Meteo API, mathematical calculations, and time zone information through MCP protocol. Works with both Claude Desktop and Gemini AI CLI for natural language interactions.