Typescript ile Claude Desktop'a Bağlı Bir MCP Sunucusu Nasıl Oluşturduğum

Bu kapsamlı rehberde, sıfırdan bir TypeScript MCP sunucusu oluşturup Claude Desktop'a bağlayacağız.

Efe Demir

Efe Demir

5 June 2025

Typescript ile Claude Desktop'a Bağlı Bir MCP Sunucusu Nasıl Oluşturduğum

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.

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.

button

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:

Önkoşullar

MCP sunucumuzu oluşturmaya başlamadan önce, aşağıdakilere sahip olduğunuzdan emin olun:

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ğı:

  1. Claude Desktop uygulamasını açın
  2. Ayarlara gidin (genellikle sağ üst köşede)
  3. "Deneysel Özellikler" bölümüne gidin
  4. "Model Context Protocol" geçişini etkinleştirin
  5. http://localhost:3000/mcp URL'si ile yeni bir MCP uç noktası ekleyin
  6. 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:

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

  1. Hataları zarif bir şekilde ele alın: Her zaman istisnaları yakalayın ve bilgilendirici hata mesajları döndürün
  2. Günlük kaydı uygulayın: Hata ayıklama ve denetim için tüm istekleri ve yanıtları günlüğe kaydedin
  3. TypeScript arayüzlerini kullanın: Tüm veri yapıları için net arayüzler tanımlayın
  4. Zaman aşımı ayarlayın: Asılı işlemleri önlemek için istek zaman aşımlarını uygulayın
  5. Girdileri doğrulayın: İşlemeden önce tüm girdi parametrelerini dikkatlice doğrulayın
  6. 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.

Explore more

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Cursor ile Deepseek R1'i Yerel Olarak Nasıl Kullanılır

Yerel DeepSeek R1'i Cursor IDE ile kurun ve yapılandırın. Özel, uygun maliyetli AI kodlama yardımı için.

4 June 2025

Android'de Gemma 3n Nasıl Çalıştırılır?

Android'de Gemma 3n Nasıl Çalıştırılır?

Google AI Edge Gallery'den Gemma 3n'i Android'e kurup çalıştırmayı öğrenin.

3 June 2025

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

GitHub Eylemleri ile Claude Kodunu Nasıl Kullanılır

Claude Code'u GitHub Actions ile entegre edin: Kod incelemeleri, hata düzeltmeleri ve özellik uygulamaları. Kurulum, iş akışları ve geliştiriciler için ipuçları.

29 May 2025

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin