MCP Nedir

MCP (Model Context Protocol): AI Modellerini Dış Dünyaya Bağlayan Devrimci Standart
Valla, AI geliştirme dünyasında büyük bir devrim yaşanıyor ve çoğumuz bunun farkında bile değiliz! Anthropic‘in geliştirdiği MCP (Model Context Protocol) tam anlamıyla oyun değiştirici bir teknoloji. Neden mi? Çünkü artık AI modellerimizi dış dünyaya bağlamanın standardize edilmiş bir yolu var!
Düşünsenize, daha önce her API entegrasyonu için ayrı kod yazmak zorundaydık. Slack API için bir kod, GitHub API için başka bir kod, Google Drive için bambaşka bir yapı… Bu kaos! Şimdi ise tek bir protokolle hepsini halledebiliyoruz!
Bu yazıda size MCP‘nin ne olduğunu, neden bu kadar önemli olduğunu ve nasıl kullanılacağını anlatacağım. Hem teorik hem de pratik olarak, sıfırdan bir MCP serveri nasıl yazılır, onu da göreceğiz!
![]() |
MCP (Model Context Protocol): AI Modellerini Dış Dünyaya Bağlayan Devrimci Standart |
{tocify} $title={İçindekiler}
Eğer AI geliştirme ile ilgileniyorsanız, bu teknoloji hayatınızı değiştirecek! Hazırsanız, MCP’nin büyülü dünyasına dalalım!
MCP Nedir? Sorundan Çözüme Giden Yol
Model Context Protocol (MCP), Large Language Model’ları (LLM) dış kaynaklara bağlamanın standardize edilmiş yoludur. Peki bu ne demek ve neden bu kadar önemli?
İlk olarak, AI modellerinin temel sorunu şu: Bilgi dağarcıkları sınırlı! Sadece eğitildikleri veri setiyle sınırlılar ve güncel bilgilerden izole çalışıyorlar. GPT-4 2023’te eğitilmişse, 2024’teki haberleri bilmiyor!
İkinci sorun ise şu: Her entegrasyon için ayrı kod yazmak zorundaydık. Slack ile konuşacaksa Slack API’sını bilmeli, GitHub ile konuşacaksa GitHub API’sını bilmeli… Bu N×M problemi yaratıyor!
N×M Problemi: N tane modeliniz, M tane API’niz varsa, her model için her API’yi ayrı ayrı entegre etmeniz gerekiyor. Bu N×M farklı entegrasyon demek!
MCP bu sorunu şöyle çözüyor: Unified API yaratıyor! Artık modeliniz MCP protokolünü biliyor, MCP serverleri ise farklı API’lerle konuşuyor. Böylece 1×N entegrasyon yeterli oluyor!
MCP’nin Mimarisi: Basit Ama Güçlü
MCP mimarisi üç ana komponente sahip:
- MCP Host/Client: Claude Desktop, ChatGPT gibi AI uygulamaları
- MCP Server: Bizim yazdığımız, API’lerle konuşan servis
- External Resources: Database’ler, API’ler, dosya sistemleri
İşleyiş şöyle: Kullanıcı “Ankara’da hava nasıl?” diye soruyor. AI model “Benim güncel hava durumu bilgim yok, external data lazım” diyor. MCP Server’a “get_weather” tool’unu çağırıyor. Server Weather API’den veri çekip model’e dönüyor!
Bu süreçte iki farklı transport layer kullanılıyor:
- STDIO: Local kullanım için (client ve server aynı makinede)
- HTTP Server-Sent Events: Remote kullanım için
Resources vs Tools: İki Farklı Yaklaşım
MCP’de iki farklı konsept var: Resources ve Tools. Bunları karıştırmamak önemli!
Resources (Kaynaklar)
Resources statik veya dinamik verilerdir. Bunlar “application control” – yani client (Claude Desktop gibi) karar veriyor hangi resource’u kullanacağına. Örnekler:
- Dosya sistemindeki belgeler
- Database’deki kayıtlar
- Git repository’lerindeki dosyalar
Tools (Araçlar)
Tools ise executable fonksiyonlardır. Bunlar “model control” – yani AI model karar veriyor hangi tool’u kullanacağına. Model function calling ile bu kararı veriyor. Örnekler:
- Hava durumu öğrenme fonksiyonu
- E-mail gönderme fonksiyonu
- Database’de arama yapma fonksiyonu
Pratik Uygulama: Hava Durumu MCP Server
Şimdi gerçek bir örnek yapalım! TypeScript ile basit bir hava durumu MCP server yazacağız:
1. Proje Kurulumu
“`typescript
// package.json dependencies
{
“@modelcontextprotocol/sdk”: “^0.4.0”,
“zod”: “^3.22.0”
}
“`
2. Server Yapısı
“`typescript
import { Server } from “@modelcontextprotocol/sdk/server/index.js”;
import { StdioServerTransport } from “@modelcontextprotocol/sdk/server/stdio.js”;
import { CallToolRequestSchema, ListToolsRequestSchema } from “@modelcontextprotocol/sdk/types.js”;
import { z } from “zod”;
// Server instance oluştur
const server = new Server(
{
name: “weather-server”,
version: “0.1.0”,
},
{
capabilities: {
tools: {},
},
}
);
“`
3. Tool Schema Tanımı
“`typescript
// Zod ile input validation
const GetWeatherArgsSchema = z.object({
city: z.string().describe(“Name of the city”),
});
// Tool listesi handler
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [
{
name: “get_weather”,
description: “Get current weather information for a city”,
inputSchema: {
type: “object”,
properties: {
city: {
type: “string”,
description: “Name of the city”,
},
},
required: [“city”],
},
},
],
};
});
“`
4. Tool Execution Handler
“`typescript
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
if (name === “get_weather”) {
try {
// Input validation
const { city } = GetWeatherArgsSchema.parse(args);
// Weather API’den veri çek
const response = await fetch(
`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${process.env.WEATHER_API_KEY}&units=metric`
);
if (!response.ok) {
return {
content: [
{
type: “text”,
text: `Weather data not found for ${city}`,
},
],
};
}
const data = await response.json();
return {
content: [
{
type: “text”,
text: `Temperature in ${city}: ${data.main.temp}°C`,
},
],
};
} catch (error) {
return {
content: [
{
type: “text”,
text: `Error getting weather data: ${error.message}`,
},
],
};
}
}
throw new Error(`Unknown tool: ${name}`);
});
“`
5. Server’ı Başlatma
“`typescript
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error(“Weather MCP server running on stdio”);
}
main().catch(console.error);
“`
Claude Desktop’ta MCP Server Kullanımı
MCP server’ımızı Claude Desktop‘ta kullanmak için config dosyası oluşturmamız gerekiyor:
“`json
// ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
// %APPDATA%Claudeclaude_desktop_config.json (Windows)
{
“mcpServers”: {
“weather”: {
“command”: “node”,
“args”: [“path/to/your/weather-server.js”],
“env”: {
“WEATHER_API_KEY”: “your-api-key-here”
}
}
}
}
“`
Claude Desktop’ı yeniden başlattıktan sonra, MCP server’ınız aktif olacak! Artık “Ankara’da hava nasıl?” diye sorduğunuzda, Claude otomatik olarak sizin weather tool’unuzu kullanacak!
MCP Sequence Diagram: İşleyiş Akışı
MCP’nin nasıl çalıştığını adım adım görelim:
- Initialization: MCP Client ve Server bağlantı kurar
- Capability Exchange: Server, available tools/resources listesini Client’a gönderir
- User Query: “Ankara’da hava nasıl?”
- Tool Decision: AI Model function calling ile get_weather tool’unu seçer
- Tool Call: Client, Server’a get_weather(city: “Ankara”) request’i gönderir
- External API Call: Server, Weather API’den veri çeker
- Response: Server, formatted response’u Client’a dönder
- User Response: Client, weather data’yı user’a sunar
MCP’nin Avantajları ve Sınırları
Avantajlar
- Standardization: Tek protokol, çoklu entegrasyon
- Scalability: Yeni tool eklemek kolay
- Maintainability: Merkezi tool yönetimi
- Reusability: Bir kez yaz, her yerde kullan
- Security: Controlled access to external resources
Sınırlar
- Adoption: Henüz yaygın değil, sadece Claude Desktop destekliyor
- Complexity: Basit use case’ler için overkill olabilir
- Performance: Extra layer, minimal latency ekler
- Debugging: Multi-layer architecture debugging zorluğu
Gerçek Dünya Use Case’leri
MCP’nin potansiyel kullanım alanları çok geniş:
İş Dünyası
- CRM Integration: Salesforce, HubSpot verilerine erişim
- Project Management: Jira, Asana task yönetimi
- Communication: Slack, Teams message gönderimi
- Document Management: Google Drive, SharePoint erişimi
Geliştirici Araçları
- Code Management: GitHub, GitLab operations
- CI/CD: Jenkins, GitHub Actions control
- Monitoring: Grafana, DataDog metrics
- Database: SQL, NoSQL query execution
Kişisel Kullanım
- Smart Home: IoT device control
- Financial: Banking, investment tracking
- Health: Fitness data, medical records
- Entertainment: Spotify, Netflix recommendations
MCP Best Practices ve Güvenlik
Development Best Practices
- Schema Validation: Zod gibi kütüphanelerle input validation
- Error Handling: Graceful error responses
- Logging: Comprehensive logging for debugging
- Testing: Unit ve integration testleri
- Documentation: Clear tool descriptions for AI models
Güvenlik Considerations
- Authentication: API key management
- Authorization: Role-based access control
- Input Sanitization: SQL injection prevention
- Rate Limiting: DOS attack prevention
- Audit Logging: All actions should be logged
MCP’nin Geleceği ve Ecosystem
MCP henüz emekleme aşamasında ama potansiyeli muazzam! İşte beklentilerim:
Platform Adoption
Claude Desktop’tan sonra diğer AI platformları da MCP’yi benimseyecek:
- OpenAI ChatGPT: Plugin architecture’ı MCP’ye evolve edebilir
- Google Bard/Gemini: Google Workspace entegrasyonu için ideal
- Microsoft Copilot: Office 365 ecosystem’i için mükemmel
Tool Marketplace
Gelecekte MCP Tool Marketplace ortaya çıkacak:
- Ready-made MCP servers
- Community-driven tool libraries
- Enterprise-grade solutions
- Monetization opportunities
Advanced Features
- Multi-modal Tools: Image, video, audio processing
- Streaming Support: Real-time data streams
- Collaborative Tools: Multi-user, multi-model scenarios
- Edge Computing: Local AI + MCP combinations
Sık Sorulan Sorular
MCP nedir ve neden önemlidir?
MCP (Model Context Protocol), AI modellerini dış kaynaklara bağlamanın standardize edilmiş yoludur. Önemi şurada: Her API entegrasyonu için ayrı kod yazmak yerine, tek bir protokolle tüm entegrasyonları halledebiliyorsunuz. Bu N×M problemini 1×N’e indirgiyor.
Resources ve Tools arasındaki fark nedir?
Resources statik/dinamik verilerdir ve client kontrol eder (application control). Tools ise executable fonksiyonlardır ve AI model karar verir hangisini kullanacağına (model control). Resources dosya, database gibi şeyler; Tools ise API call yapan fonksiyonlardır.
MCP server nasıl yazılır?
MCP SDK kullanarak server oluşturursunuz. İki handler gerekir: ListToolsRequest (available tools’u listeler) ve CallToolRequest (tool execution). Input validation için Zod, external API calls için fetch kullanabilirsiniz. STDIO veya HTTP transport seçebilirsiniz.
Hangi AI platformları MCP destekliyor?
Şu anda sadece Claude Desktop resmi olarak MCP destekliyor. Anthropic tarafından geliştirildi çünkü. Ancak açık protokol olduğu için diğer platformlar da (ChatGPT, Gemini, Copilot) gelecekte ekleyebilir.
MCP güvenli midir?
MCP’nin kendisi güvenli bir protokoldür ama implementation’a bağlı. API key management, input validation, rate limiting, audit logging gibi security best practices uygulamanız gerekir. Local STDIO transport daha güvenli, HTTP transport için extra security measures şart.
MCP’nin performance etkisi nedir?
MCP extra bir layer eklediği için minimal latency artışı var. Ancak bu genellikle negligible çünkü asıl bottleneck external API calls. Proper caching, connection pooling ve async processing ile performance optimize edilebilir.
Sonuç: AI Geliştirmenin Geleceği
MCP gerçekten de AI geliştirme dünyasında oyun değiştirici bir teknoloji! Neden?
İlk olarak, karmaşıklığı drastik olarak azaltıyor. Eskiden her API için ayrı entegrasyon yazıyorduk, şimdi tek protokol yeterli. Bu hem development time’ı kısaltıyor hem de maintenance effort’unu azaltıyor.
İkinci olarak, scalability sağlıyor. Yeni bir tool eklemek artık çok kolay – sadece MCP server’ınıza yeni bir handler ekliyorsunuz. Model otomatik olarak yeni tool’u keşfediyor ve kullanmaya başlıyor!
Üçüncü olarak, standardization getiriyor. Industry’de ortak bir dil oluşuyor. Bu da ecosystem’in gelişmesini hızlandırıyor.
Tabii ki henüz early stage’deyiz. Sadece Claude Desktop destekliyor, debugging zor olabiliyor, community henüz küçük. Ama potansiyel muazzam!
Benim tavsiyem: Şimdiden öğrenmeye başlayın! MCP skills’iniz gelecekte çok değerli olacak. AI agent’lar yaygınlaştıkça, onları external world’e bağlamanın standard yolu MCP olacak.
Eğer AI geliştirme ile ilgileniyorsanız, MCP’yi mutlaka deneyimleyin. Basit bir weather server ile başlayın, sonra kendi use case’leriniz için genişletin. Bu teknoloji AI’ın gerçek dünyayla nasıl etkileşime geçeceğinin anahtarı!