Model Context Protocol (MCP), yapay zeka asistanlarının harici araçlar ve veri kaynaklarıyla nasıl etkileşim kurduğunda önemli bir gelişmeyi temsil eder. Anthropic tarafından geliştirilen MCP, Claude'un özel sunucularla sorunsuz bir şekilde iletişim kurmasını sağlayarak, gerçek zamanlı bilgilere erişmesine, karmaşık iş akışlarını yürütmesine ve konuşma bağlamından ayrılmadan API'lerle etkileşim kurmasına olanak tanır. Bu yetenek, Claude'u bağımsız bir LLM'den, konuşma tutarlılığını korurken harici işlevlerden yararlanabilen çok yönlü bir asistana dönüştürür.
Bu kapsamlı kılavuzda, sıfırdan bir TypeScript MCP sunucusu oluşturma ve onu Claude Desktop'a bağlama sürecini inceleyeceğiz. Bu entegrasyonu uygulayarak, Claude'un gerçek zamanlı verileri alma, hesaplamalar yapma veya özel iş mantığınızla doğrudan konuşmalar içinde etkileşim kurma gibi görevleri gerçekleştirmesini sağlayacaksınız.
MCP sunucu uygulamamıza dalmadan önce, API geliştirme aracınızın seçiminin iş akışı verimliliğinizi önemli ölçüde etkileyebileceğini belirtmekte fayda var.

- Postman uzun süredir sektör standardı olsa da, Apidog, oluşturduğumuz gibi modern geliştirme iş akışlarını mükemmel bir şekilde tamamlayan üstün bir alternatif olarak ortaya çıktı.
- Postman'in geliştirme aşamasındaki API'lerle ilgili sınırlamalarından farklı olarak, Apidog, API özellikleriniz ve istekleriniz arasında gerçek zamanlı senkronizasyon sunarak, belgelerinizin ve testlerinizin API'leriniz geliştikçe otomatik olarak güncel kalmasını sağlar.
- Görsel API belirtimi oluşturma, sınırsız koleksiyon çalıştırmaları (Postman'in aylık 25 sınırı ile karşılaştırıldığında) ve otomatik oluşturulan istekler ve sahte yanıtlar gibi güçlü özelliklerle Apidog, tüm API yaşam döngüsünü kolaylaştırır. Görsel test oluşturma ve kendi kendine barındırılan çalıştırıcılar dahil olmak üzere kapsamlı test yetenekleri, onu MCP sunucumuz gibi karmaşık entegrasyonlar uygulayan ekipler için ideal hale getirir.
TypeScript MCP sunucumuzu oluştururken, Apidog'un işbirliğine dayalı özelliklerinin ve geliştirme odaklı yaklaşımının, ekibinizin üretkenliğini nasıl artırabileceğini ve API'lerinizin süreç boyunca tutarlı, iyi test edilmiş ve kapsamlı bir şekilde belgelenmiş kalmasını nasıl sağlayabileceğini düşünün.
Model Context Protocol'ü Anlama
Model Context Protocol, Claude'un harici hizmetlerle iletişim kurması için standartlaştırılmış bir yol tanımlar. Claude, harici bir kaynaktan bilgiye ihtiyaç duyduğunu belirlediğinde, özel olarak biçimlendirilmiş bir JSON isteği aracılığıyla bir MCP sunucusunu çağırabilir. Sunucu bu isteği işler ve Claude'un daha sonra yanıtına dahil edebileceği istenen verileri döndürür.
MCP, geleneksel yapay zeka entegrasyon yaklaşımlarına göre çeşitli avantajlar sunar:
- Bağlamsal farkındalık: Claude, istek yaparken tüm konuşma geçmişini korur
- Çift yönlü iletişim: Protokol, Claude ve sunucunuz arasındaki karmaşık etkileşimleri destekler
- Güvenlik ve kontrol: Hangi işlevselliği açığa çıkaracağınıza ve isteklerin nasıl işleneceğine siz karar verirsiniz
- Kesintisiz deneyim: Kullanıcılar, temel entegrasyonları bilmelerine gerek kalmadan Claude ile doğal bir şekilde etkileşim kurar
Önkoşullar
MCP sunucumuzu oluşturmaya başlamadan önce, aşağıdakilere sahip olduğunuzdan emin olun:
- Node.js (v18 veya üzeri) yüklü
- Visual Studio Code gibi bir kod düzenleyici
- TypeScript hakkında temel bilgi
- Claude Desktop uygulaması yüklü
- Express.js'ye aşinalık (sunucu uç noktalarını oluşturmak için)
TypeScript Projenizi Kurma
MCP sunucumuz için yeni bir TypeScript projesi oluşturarak başlayalım:
mkdir claude-mcp-server
cd claude-mcp-server
npm init -y
npm install typescript @types/node ts-node express @types/express cors @types/cors
npx tsc --init
Ardından, tsconfig.json
dosyanızı bu ayarları içerecek şekilde güncelleyin:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"outDir": "./dist",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
}
}
MCP Sunucusunu Uygulama
Proje kök dizininizde server.ts
adlı yeni bir dosya oluşturun. Bu, MCP sunucumuz için giriş noktası olacaktır:
import express from 'express';
import cors from 'cors';
import { Request, Response } from 'express';
// MCP protokolü için türleri tanımlayın
interface MCPRequest {
query: string;
conversation_id: string;
request_id: string;
parameters?: Record<string, any>;
}
interface MCPResponse {
response: string;
status: 'success' | 'error';
error?: string;
}
const app = express();
app.use(cors());
app.use(express.json());
// Sağlık kontrolü uç noktası
app.get('/health', (req: Request, res: Response) => {
res.status(200).json({ status: 'healthy' });
});
// MCP uç noktası
app.post('/mcp', (req: Request, res: Response) => {
try {
const mcpRequest = req.body as MCPRequest;
console.log('Received MCP request:', JSON.stringify(mcpRequest, null, 2));
// İsteği sorguya göre işleyin
const response = processQuery(mcpRequest);
res.status(200).json({
status: 'success',
response
} as MCPResponse);
} catch (error) {
console.error('Error processing MCP request:', error);
res.status(500).json({
status: 'error',
error: error instanceof Error ? error.message : 'Unknown error',
response: 'Sorry, there was an error processing your request.'
} as MCPResponse);
}
});
// Farklı sorgu türlerini işlemek için işlev
function processQuery(request: MCPRequest): string {
const { query, parameters } = request;
// Örnek sorgu işleme - bunu kullanım durumunuz için özelleştirin
switch (query) {
case 'getCurrentTime':
return `The current time is ${new Date().toLocaleTimeString()}`;
case 'getWeather':
const location = parameters?.location || 'Unknown';
// Gerçek bir uygulamada, burada bir hava durumu API'si çağırırdınız
return `The weather in ${location} is currently sunny and 72°F`;
case 'calculateSum':
if (parameters?.numbers && Array.isArray(parameters.numbers)) {
const sum = parameters.numbers.reduce((a: number, b: number) => a + b, 0);
return `The sum of the numbers is ${sum}`;
}
return 'Invalid parameters for sum calculation';
default:
return `Unrecognized query: ${query}`;
}
}
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`MCP server running on port ${PORT}`);
});
MCP Sunucunuzu Çalıştırma
Sunucunuzu çalıştırmak için şunları yürütün:
npx ts-node server.ts
MCP sunucunuz artık 3000 numaralı portta (veya belirttiğiniz portta) çalışıyor olmalıdır.
Claude Desktop'a Bağlanma
MCP sunucunuz çalıştığına göre, Claude Desktop'ı ona bağlanacak şekilde yapılandırmanız gerekir. İşte nasıl yapılacağı:
- Claude Desktop uygulamasını açın
- Ayarlara gidin (genellikle sağ üst köşede)
- "Deneysel Özellikler" bölümüne gidin
- "Model Context Protocol" geçişini etkinleştirin
http://localhost:3000/mcp
URL'si ile yeni bir MCP uç noktası ekleyin- Ayarlarınızı kaydedin
Claude Desktop artık özel MCP sunucunuzla iletişim kurabilecektir.
Entegrasyonu Test Etme
MCP sunucunuzu Claude ile test etmek için, Claude'a uyguladığınız belirli sorguları tetikleyecek sorular sormayı deneyin. Örneğin:
- "Şu anda saat kaç?" (
getCurrentTime
sorgusunu tetiklemelidir) - "San Francisco'da hava nasıl?" (konum parametresi olarak "San Francisco" ile
getWeather
sorgusunu tetiklemelidir) - "5, 10, 15 ve 20'nin toplamını hesaplayabilir misiniz?" (
calculateSum
sorgusunu tetiklemelidir)
Claude, bu soruları yanıtlamak için harici bilgiye ihtiyaç duyduğunu fark ettiğinde, otomatik olarak sunucunuza bir MCP isteği gönderecek ve yanıtı cevabına dahil edecektir.
MCP Sunucunuzu Genişletme
Oluşturduğumuz temel sunucu sadece bir başlangıç noktasıdır. İşte işlevselliğini genişletmek için bazı fikirler:
Kimlik Doğrulama Ekleme
MCP sunucunuzu güvenli hale getirmek için kimlik doğrulama ekleyin:
// Temel kimlik doğrulama için ara yazılım
const authenticateMCP = (req: Request, res: Response, next: Function) => {
const apiKey = req.headers['x-api-key'];
if (!apiKey || apiKey !== process.env.MCP_API_KEY) {
return res.status(401).json({
status: 'error',
error: 'Unauthorized',
response: 'Authentication failed'
});
}
next();
};
// MCP uç noktasına ara yazılım uygulayın
app.post('/mcp', authenticateMCP, (req: Request, res: Response) => {
// Mevcut işleyici kodu
});
Veritabanı Entegrasyonu Uygulayın
MCP sunucunuzu bilgi almak veya depolamak için bir veritabanına bağlayın:
import { MongoClient } from 'mongodb';
// Veritabanı bağlantısını başlat
const dbClient = new MongoClient('mongodb://localhost:27017');
let db: any;
async function connectToDb() {
await dbClient.connect();
db = dbClient.db('mcpDatabase');
console.log('Connected to database');
}
connectToDb().catch(console.error);
// Veritabanı etkileşimleri için bir sorgu işleyici ekleyin
case 'getUserData':
if (parameters?.userId) {
const user = await db.collection('users').findOne({ id: parameters.userId });
return user ? JSON.stringify(user) : 'User not found';
}
return 'Invalid user ID';
Webhook Desteği Ekleme
Harici hizmetleri bilgilendirmek için webhook işlevselliği uygulayın:
case 'sendNotification':
if (parameters?.message && parameters?.destination) {
// Harici bildirim hizmetini çağırın
await fetch('https://your-webhook-url.com', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ message: parameters.message })
});
return `Notification sent to ${parameters.destination}`;
}
return 'Invalid notification parameters';
MCP Sunucu Geliştirme için En İyi Uygulamalar
- Hataları zarif bir şekilde ele alın: Her zaman istisnaları yakalayın ve bilgilendirici hata mesajları döndürün
- Günlük kaydı uygulayın: Hata ayıklama ve denetim için tüm istekleri ve yanıtları günlüğe kaydedin
- TypeScript arayüzlerini kullanın: Tüm veri yapıları için net arayüzler tanımlayın
- Zaman aşımı ayarlayın: Asılı işlemleri önlemek için istek zaman aşımlarını uygulayın
- Girdileri doğrulayın: İşlemeden önce tüm girdi parametrelerini dikkatlice doğrulayın
- Birim testleri ekleyin: Güvenilirliği sağlamak için sorgu işleyicilerinizi iyice test edin
Sonuç
Bir TypeScript MCP sunucusu oluşturmak, Claude'un yeteneklerini genişletmek için heyecan verici olanaklar sunar. Bu kılavuzu izleyerek, Claude'u kendi hizmetleriniz ve verilerinizle entegre etmek için bir temel oluşturdunuz. Model Context Protocol, Claude'un konuşma akışını bozmadan harici bilgilere erişebileceği kesintisiz bir kullanıcı deneyimi sağlar.
MCP gelişmeye devam ettikçe, büyük dil modelleri ve harici sistemler arasında daha da gelişmiş entegrasyonlar bekleyebiliriz. İster üretkenlik araçları, bilgi yönetimi sistemleri veya özel iş uygulamaları oluşturuyor olun, MCP, Claude'un zekasını özel işlevselliğinizle birleştirmenin güçlü bir yolunu sunar.
Sunucunuzu kullanım durumlarınıza özgü ek sorgu işleyicileriyle genişleterek ve deneyimlerinizi büyüyen MCP geliştiricileri topluluğuyla paylaşarak olanakları keşfetmeye başlayın.