Bir MCP (Model Context Protocol) Sunucusu Nasıl Oluşturulur: Yeni Başlayanlar İçin Bir Rehber

MCP Çerçevesi ile MCP sunucusu oluşturmayı öğrenin. Kılavuz, CLI kurulumu, hava aracı ve MCP Inspector ile test içerir.

Efe Demir

Efe Demir

5 June 2025

Bir MCP (Model Context Protocol) Sunucusu Nasıl Oluşturulur: Yeni Başlayanlar İçin Bir Rehber

Yapay zeka asistanınıza hava durumu verilerini getirme, hisse senedi fiyatlarını analiz etme veya görevleri otomatikleştirme yeteneği verdiğinizi hayal edin; hepsi tek bir protokol aracılığıyla. Model Context Protocol (MCP) bunu mümkün kılar ve yeni MCP Framework ile kendi sunucunuzu oluşturmak hiç bu kadar kolay olmamıştı.

Bu kılavuzda, MCP Framework'ün CLI araçlarını kullanarak bir MCP sunucusu oluşturma konusunda size yol göstereceğim. Daha önce MCP deneyimi gerekmiyor; sadece temel JavaScript/TypeScript bilgisi ve biraz merak yeterli!

💡
MCP geliştirmenizi bir sonraki seviyeye taşımaya hazır mısınız? Bugün ücretsiz olarak Apidog indirin ve bunun iş akışınızı nasıl dönüştürebileceğini keşfedin!
Apidog all in one image
button

MCP'yi Anlamak

Kuruluma geçmeden önce, MCP'nin ne olduğunu ve neden önemli olduğunu kısaca ele alalım:

MCP'ye Genel Bakış: The Model Context Protocol, yapay zeka modellerinin harici veri kaynaklarıyla nasıl etkileşim kurduğunu standartlaştırmak için Anthropic tarafından oluşturulmuş açık bir spesifikasyondur. Geliştiricilerin Claude Desktop gibi yapay zeka platformlarıyla kolayca entegre edilebilen araçlar oluşturmasını sağlar.

mcp image

MCP'nin Faydaları: MCP, araç geliştirme için standartlaştırılmış bir protokol sağlayarak entegrasyon sürecini basitleştirir. Bu, farklı platformlarda uyumluluk sorunları hakkında endişelenmeden araç oluşturmaya odaklanabileceğiniz anlamına gelir.

İlk MCP Sunucunuzu Oluşturma

Adım 1: İhtiyacınız Olanlar

Başlamadan önce, aşağıdakilerin yüklü olduğundan emin olun:

Adım 2: MCP Framework'ü Yükleyin

MCP Framework'e başlamanın iki yolu vardır:

Seçenek 1: MCP CLI'yi Kullanma (Önerilen)

Bir MCP sunucusu kurmanın en kolay yolu CLI'yi kullanmaktır. İşte nasıl yapılacağı:

# CLI'yi global olarak yükleyin  
npm install -g mcp-framework  

# Yeni bir proje oluşturun  
mcp create my-mcp-server  

# Projenize gidin  
cd my-mcp-server  

# Bağımlılıkları yükleyin  
npm install 

Bu, kullanıma hazır bir MCP sunucusunu şu özelliklerle hazırlar: Önceden yapılandırılmış TypeScript, Örnek araçlar ve Yerleşik hata işleme. Şuna benzer görünmelidir:

MCP server file structure

Artık yeni MCP projeniz kullanıma hazır.

Seçenek 2: Manuel Kurulum (Mevcut Projeler İçin)

MCP Framework'ü mevcut bir projeye eklemek istiyorsanız, şu adımları izleyin:

MCP Framework'ü Yükleyin:

npm install mcp-framewor

src/index.ts dosyası içinde temel bir sunucu oluşturun:

import { MCPServer } from "mcp-framework";  

const server = new MCPServer();  

server.start().catch((error) => {  
  console.error("Server error:", error);  
  process.exit(1);  
}); 

Adım 3: İlk Aracınızı Oluşturma (Hava Durumu Örneği)

Artık sunucunuz kurulduğuna göre, belirli bir şehir için hava durumu bilgilerini getiren bir hava durumu aracı oluşturalım.

Yeni bir araç oluşturun:

MCP CLI'yi kullanarak, hava durumu bilgileri için yeni bir araç oluşturabilirsiniz:

mcp add tool weather  

Bu, src/tools/WeatherTool.ts adlı bir dosya oluşturacaktır. Alternatif olarak, bu dosyayı kendiniz manuel olarak da oluşturabilirsiniz. Şimdi, bu dosyayı düzenleyelim.

Hava Durumu Aracını Düzenleyin:

WeatherTool.ts dosyasını açın ve aşağıdaki gibi güncelleyin:

import { MCPTool } from "mcp-framework";  
import { z } from "zod";  

interface WeatherInput {  
  city: string;  
}  

class WeatherTool extends MCPTool<WeatherInput> {  
  name = "weather";  
  description = "Get weather information for a city";  

  // Schema validation using Zod  
  schema = {  
    city: {  
      type: z.string(),  
      description: "City name (e.g., London)",  
    },  
  };  

  async execute({ city }: WeatherInput) {  
    // Replace this with a real API call  
    return {  
      city,  
      temperature: 22,  
      condition: "Sunny",  
      humidity: 45,  
    };  
  }  
}  

export default WeatherTool;

Bu kodda, bir şehir için hava durumunu getiren bir WeatherTool sınıfı tanımlıyoruz. Bu örnek uygulama statik veriler döndürürken, bunu gerçek bir API çağrısıyla değiştirebilirsiniz.

Adım 4: MCP Sunucunuzu Oluşturun ve Test Edin

Hava durumu aracını değiştirdikten sonra, MCP sunucunuzun beklendiği gibi çalışıp çalışmadığını görmek için oluşturma ve test etme zamanı geldi ve bunun için MCP inspector'ı kullanacağız.

Projeyi oluşturun:

npm run build

Bir taşıma yöntemi seçin: MCP Framework iki taşıma yöntemini destekler:

Bu eğitim için, yerel test için mükemmel olan STDIO Taşıma'yı kullanacağız.

MCP Inspector'ı Başlatın: şu komutu kullanın:

npx @modelcontextprotocol/inspector dist/index.js  

Hava Durumu Aracını Test Edin:

Hava durumu aracınızı test etmek için, weather aracını seçin ve "Paris" gibi bir şehir girin.

Select a tool image

Ardından, sahte hava durumu verilerini görün.

Test the tool image

Adım 5: MCP'yi Gerçek Hava Durumu Verilerine Bağlayın

Hava durumu aracımızı Open-Meteo'nun ücretsiz API'sini kullanacak şekilde yükseltelim - API anahtarları olmadan yerel tahminler sağlayan güçlü bir alternatif. Başlamak için, yeni bir araç oluşturabilir ve ona yeni bir ad verebilir veya eski araç kodunu aşağıdaki yeni kodla değiştirebilirsiniz:

import { MCPTool } from "mcp-framework";
import { z } from "zod";
import axios, { AxiosError } from "axios";

interface WeatherApiInput {
  city: string;
}

interface WeatherApiResponse {
  city: string;
  temperature: number;
  condition: string;
  humidity: number;
  windSpeed: number;
  feelsLike: number;
  precipitation: number;
}

class WeatherApiTool extends MCPTool<WeatherApiInput> {
  name = "weather_api";
  description = "Get real weather information for a city using Open-Meteo API";

  private readonly GEOCODING_URL = "https://geocoding-api.open-meteo.com/v1/search";
  private readonly WEATHER_URL = "https://api.open-meteo.com/v1/forecast";

  schema = {
    city: {
      type: z.string(),
      description: "City name to get weather for",
    },
  };

  async execute({ city }: WeatherApiInput): Promise<WeatherApiResponse> {
    try {
      // First, get coordinates for the city
      const geoResponse = await axios.get(this.GEOCODING_URL, {
        params: {
          name: city,
          count: 1,
          language: "en",
          format: "json"
        }
      });

      if (!geoResponse.data.results?.length) {
        throw new Error(`City '${city}' not found`);
      }

      const location = geoResponse.data.results[0];
      
      // Then get weather data using coordinates
      const weatherResponse = await axios.get(this.WEATHER_URL, {
        params: {
          latitude: location.latitude,
          longitude: location.longitude,
          current: ["temperature_2m", "relative_humidity_2m", "apparent_temperature", "precipitation", "weather_code", "wind_speed_10m"],
          timezone: "auto"
        }
      });

      const current = weatherResponse.data.current;
      
      // Map weather code to condition
      const condition = this.getWeatherCondition(current.weather_code);

      return {
        city: location.name,
        temperature: Math.round(current.temperature_2m),
        condition,
        humidity: Math.round(current.relative_humidity_2m),
        windSpeed: Math.round(current.wind_speed_10m),
        feelsLike: Math.round(current.apparent_temperature),
        precipitation: current.precipitation
      };
    } catch (error: unknown) {
      if (error instanceof Error) {
        throw new Error(`Failed to fetch weather data: ${error.message}`);
      }
      throw new Error('Failed to fetch weather data: Unknown error occurred');
    }
  }

  private getWeatherCondition(code: number): string {
    // WMO Weather interpretation codes (https://open-meteo.com/en/docs)
    const conditions: Record<number, string> = {
      0: "Clear sky",
      1: "Mainly clear",
      2: "Partly cloudy",
      3: "Overcast",
      45: "Foggy",
      48: "Depositing rime fog",
      51: "Light drizzle",
      53: "Moderate drizzle",
      55: "Dense drizzle",
      61: "Slight rain",
      63: "Moderate rain",
      65: "Heavy rain",
      71: "Slight snow",
      73: "Moderate snow",
      75: "Heavy snow",
      77: "Snow grains",
      80: "Slight rain showers",
      81: "Moderate rain showers",
      82: "Violent rain showers",
      85: "Slight snow showers",
      86: "Heavy snow showers",
      95: "Thunderstorm",
      96: "Thunderstorm with slight hail",
      99: "Thunderstorm with heavy hail"
    };
    
    return conditions[code] || "Unknown";
  }
}

export default WeatherApiTool;

Kod biraz uzun ama şimdilik kodun çalışmasına ve MCP'ye başlamanın hissini almaya odaklanın. Zaman ayırın ve bunu, daha da karmaşık MCP'ler oluşturmaya geçmenize yardımcı olacak bir örnek rehber olarak kullanın.

Aracı test etmek için, onu seçmeniz yeterlidir:

Select new MCP Tool image

Örneğin  "Lusaka" gibi bir şehir girin ve sonuçları görüntüleyin:

View new MCP tool's results image

Umarım bu aşamada, yapılandırma ve projeyi çalıştırmanın çoğu aksaklığını aşmışsınızdır, bu nedenle yeni MCP Aracını test etmek hiç de zor olmamalıdır!

Apidog ile Çalışmak

Unutmayın, API testini, sahtesini ve dokümantasyonunu basitleştiren çok yönlü bir araç olan Apidog ile MCP sunucu geliştirmenizi artırın. Ücretsiz katmanına kaydolarak başlayın, ardından API iş akışlarınızı merkezileştirmek için bir proje oluşturun. İstekleri izlemek, akıllı sahte sunucularla yanıtları simüle etmek ve gizli hataları erken yakalamak için testleri otomatikleştirmek için uç noktalarınızı içe aktarın. Apidog, hata ayıklamayı kolaylaştırır ve araçlarınızın kusursuz çalışmasını sağlar, bu da onu sağlam yapay zeka entegrasyonları oluşturmak için mükemmel bir arkadaştır.

Apidog Ui image

Sonuç

Bir MCP Sunucusu oluşturmak, yapay zeka iş akışlarınızı önemli ölçüde artırabilen basit bir işlemdir. Apidog gibi araçları entegre ederek, geliştirme sürecinizi kolaylaştırabilir, sağlam ve iyi belgelenmiş API'ler sağlayabilirsiniz. İster web hizmetleriyle ister yerel dosyalarla çalışıyor olun, MCP, yapay zeka modellerini harici veri kaynaklarına bağlamanın standartlaştırılmış bir yolunu sağlar.

API geliştirme iş akışınızı bir sonraki seviyeye taşımaya hazır mısınız? Bugün ücretsiz olarak Apidog indirin ve bunun iş akışınızı nasıl dönüştürebileceğini keşfedin!

button

Explore more

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Fathom-R1-14B: Hindistan'dan Gelişmiş Yapay Zeka Muhakeme Modeli

Yapay zeka hızla gelişiyor. FractalAIResearch/Fathom-R1-14B, 14.8 milyar parametreyle matematik ve genel akıl yürütmede başarılı.

5 June 2025

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code: İşletmeler için En Özelleştirilebilir Yapay Zeka Destekli Kodlama Asistanı

Mistral Code'u keşfedin: Kurumsal kullanıma özel, en özelleştirilebilir yapay zeka destekli kodlama asistanı.

5 June 2025

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code'un 2025'te Yapay Zeka Kodlamasını Nasıl Dönüştürdüğü

Claude Code, 2025'te yapay zeka destekli kodlamayı nasıl devrimleştiriyor? Özelliklerini, kullanımını ve Windsurf kısıtlamalarından sonra neden popüler olduğunu öğrenin. Geliştiriciler için okunması gereken!

5 June 2025

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

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