Gemini AI Weather & Calculator Tools
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.
README
🤖 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)
# 1. Projeyi klonlayın ve bağımlılıkları yükleyin
npm install
# 2. claude_desktop_config.json dosyasını açın ve path'i düzenleyin
# (Dosya içinde Windows/macOS/Linux örnekleri var)
# 3. Config dosyasını Claude Desktop klasörüne kopyalayın
copy claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json # Windows
# veya
cp claude_desktop_config.json ~/Library/Application\ Support/Claude/ # macOS
# 4. Claude Desktop'ı yeniden başlatın
# 5. Claude'a "İstanbul'da hava nasıl?" diye sorun! ✨
Gemini CLI Kullanıcıları için
# 1. Projeyi klonlayın ve bağımlılıkları yükleyin
npm install
# 2. .env dosyası oluşturun ve GEMINI_API_KEY ekleyin
# 3. Uygulamayı başlatın
npm start
🎯 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 sunar- Stdio ü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ı iletir- Server'ı 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
npm install
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:
{
"mcpServers": {
"weather-tools": {
"command": "node",
"args": [
"BURAYA_PROJE_YOLUNU_YAZIN/mcp-server.js"
],
"env": {},
"_comment": "Yukarıdaki path'i kendi sisteminize göre değiştirin",
"_examples": {
"windows": "C:\\Users\\YourName\\Desktop\\MCP\\mcp-server.js",
"macos": "/Users/yourname/Desktop/MCP/mcp-server.js",
"linux": "/home/yourname/Desktop/MCP/mcp-server.js"
}
}
}
}
💡 Önemli:
- Windows'ta path'lerde
\\(çift ters slash) kullanın - macOS/Linux'ta normal
/(slash) kullanın - Node.js'in PATH'inizde olduğundan emin olun
- Dosya içindeki
_exampleskısmına bakın, sisteminize uygun olanı seçin
Adım 2: Config dosyasını Claude Desktop klasörüne kopyalayın
Windows:
# Dosyayı kopyalayın
copy claude_desktop_config.json %APPDATA%\Claude\claude_desktop_config.json
# Veya dizini manuel açıp kopyalayın:
explorer %APPDATA%\Claude
macOS:
cp claude_desktop_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.json
Linux:
cp claude_desktop_config.json ~/.config/Claude/claude_desktop_config.json
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:
copy .env.example .env
Ardından .env dosyasını düzenleyip Gemini API key'inizi ekleyin:
GEMINI_API_KEY=your_gemini_api_key_here
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
.envdosyası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:
npm start
Bu modda:
- ✅ CLI'dan istediğiniz soruyu sorabilirsiniz
- ✅ Sürekli soru sorabilirsiniz
- ✅
helpyazarak komutları görebilirsiniz - ✅
exityazarak çıkabilirsiniz
Demo Mod - Otomatik örnekleri izleyin:
npm run demo
Geliştirme Modu - Otomatik yeniden başlatma:
npm run dev
📖 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
┌─────────────────────────────────────────────────────┐
│ index.js │
│ (MCP Client + Gemini AI) │
│ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ User CLI │────────►│ Gemini AI │ │
│ │ (readline) │ │ (AI Model) │ │
│ └──────────────┘ └────────┬─────────┘ │
│ │ │
│ ┌────────▼─────────┐ │
│ │ MCP Client │ │
│ │ (Tool Caller) │ │
│ └────────┬─────────┘ │
└────────────────────────────────────┼──────────────┘
│
stdio transport
│
┌────────────────────────────────────▼──────────────┐
│ mcp-server.js │
│ (MCP Server) │
│ │
│ ┌──────────────────────────────────────────┐ │
│ │ MCP Server Handler │ │
│ │ - listTools: Araçları listele │ │
│ │ - callTool: Araç çağrılarını işle │ │
│ └─────────────────┬────────────────────────┘ │
│ │ │
│ ┌──────────▼───────────────┐ │
│ │ Tool Implementations │ │
│ │ - get_current_weather │ │
│ │ - calculate │ │
│ │ - get_current_time │ │
│ └──────────────────────────┘ │
└───────────────────────────────────────────────────┘
İ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ı
// Hava durumu sorgulama
"İstanbul'da hava nasıl?"
// Matematiksel hesaplama
"25 ile 17'yi çarp"
// Zaman bilgisi
"Şu an saat kaç?"
// Birden fazla fonksiyon çağrısı
"Ankara'da hava durumu nasıl ve şu an saat kaç?"
🎮 İnteraktif Mod Komutları
İnteraktif modda kullanabileceğiniz komutlar:
| Komut | Açıklama |
|---|---|
| Herhangi bir soru | AI'a soru sorun (örn: "İstanbul'da hava nasıl?") |
help veya ? |
Yardım mesajını göster |
examples |
Örnek soruları listele |
clear veya cls |
Ekranı temizle |
exit veya quit |
Programdan çık |
Örnek Kullanım:
$ npm start
🙋 Siz: İstanbul'da hava nasıl?
🤖 AI: [Hava durumu bilgisi...]
🙋 Siz: 50 ile 8'i böl
🤖 AI: [Hesaplama sonucu...]
🙋 Siz: examples
💡 Örnek Sorular:
1. "İstanbul'da hava nasıl?"
...
🙋 Siz: exit
👋 Görüşmek üzere!
🔧 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
toolConfig: {
functionCallingConfig: {
mode: 'AUTO' // İhtiyacınıza göre değiştirilebilir
}
}
🔌 Dosya İlişkileri
Gemini CLI Kullanımı:
index.js (Client)
↓ spawn child process
↓ stdio transport
mcp-server.js (Server)
↓ executes
Tool Implementations
Claude Desktop Kullanımı:
Claude Desktop
↓ reads config
claude_desktop_config.json
↓ spawns via stdio
mcp-server.js (Server)
↓ executes
Tool Implementations
📦 Dosyalar
| Dosya | Açıklama | Kullanım |
|---|---|---|
mcp-server.js |
MCP Server - Araçları sağlar | Her iki kullanımda da çalışır ⭐ |
index.js |
MCP Client + Gemini AI + CLI | Sadece Gemini CLI kullanımı için |
claude_desktop_config.json |
Claude Desktop config (şablon) | Claude Desktop kurulumu için 🖥️ |
package.json |
NPM bağımlılıkları ve scriptler | Proje yönetimi |
README.md |
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ı:
{
"city": "Istanbul",
"country": "TR",
"latitude": "41.01",
"longitude": "28.95",
"temperature": "18°C",
"feelsLike": "16°C",
"condition": "Parçalı bulutlu",
"humidity": "65%",
"pressure": "1013 hPa",
"windSpeed": "15 km/h",
"precipitation": "0 mm",
"timezone": "Europe/Istanbul"
}
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:
{
"method": "tools/call",
"params": {
"name": "calculate",
"arguments": {
"operation": "multiply",
"a": 25,
"b": 17
}
}
}
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:
{
"method": "tools/call",
"params": {
"name": "get_current_time",
"arguments": {
"timezone": "Europe/Istanbul"
}
}
}
🛠️ Ö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 içinde araç tanımı ekleyin:
// mcpTools dizisine yeni aracı ekle
const mcpTools = [
// Mevcut araçlar...
{
name: 'my_new_tool',
description: 'Aracın ne yaptığının açıklaması',
inputSchema: {
type: 'object',
properties: {
param1: {
type: 'string',
description: 'Parametre açıklaması'
},
param2: {
type: 'number',
description: 'İkinci parametre'
}
},
required: ['param1']
}
}
];
2. Aynı dosyada implementasyon ekleyin:
// toolImplementations objesine yeni fonksiyon ekle
const toolImplementations = {
// Mevcut implementasyonlar...
my_new_tool: async ({ param1, param2 }) => {
// Aracın mantığı
try {
// İşlemler...
const result = await someAsyncOperation(param1, param2);
return {
success: true,
result: result,
message: 'İşlem başarılı'
};
} catch (error) {
return {
error: true,
message: error.message
};
}
}
};
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:
# Terminal 1 - Server
npm run server
# Terminal 2 - Client
npm start
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
.envdosyası.gitignore'a eklenmiştir- API key'ler asla kod içinde hardcode edilmemelidir
- Environment variables kullanarak hassas bilgileri koruyun
📚 Kaynaklar
Model Context Protocol (MCP)
- MCP Resmi Dokümantasyon
- MCP GitHub Repository
- MCP SDK for TypeScript/JavaScript
- MCP Quickstart Guide
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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.