Coding Agents TypeScript ★ 118

jinzcdev/leetcode-mcp-server

LeetCode'nin programlama problemleri, çözümleri, submissions ve genel verilerine otomatik erişim sağlayan MCP sunucusu; kullanıcıya özel özellikleri (örneğin notlar) için isteğe bağlı kimlik doğrulaması desteği ve leetcode.com (global) ile leetcode.cn (Çin) sitelerine uyumluluk sunuyor.

Claude Desktop config.json'a ekle

{
  "mcpServers": {
    "jinzcdev-leetcode-mcp-server": {
      "command": "node",
      "args": [
        "~/.mcp/leetcode-mcp-server/index.js"
      ]
    }
  }
}

LeetCode MCP Server

NPM Version NPM Downloads GitHub License Chinese Doc Stars

LeetCode MCP Server, Model Context Protocol (MCP) sunucusu olup LeetCode API'leri ile kusursuz entegrasyon sağlayarak LeetCode'un programlama problemleri, yarışmaları, çözümleri ve kullanıcı verileri ile gelişmiş otomasyon ve akıllı etkileşim imkanı sunar.

Özellikler

  • 🌐 Çoklu Site Desteği: leetcode.com (Global) ve leetcode.cn (Çin) platformlarını destekler
  • 📊 Problem Verisi Alma: Detaylı problem açıklamaları, kısıtlamalar, örnekler, resmi editöryaller ve kullanıcı tarafından gönderilen çözümleri alır
  • 👤 Kullanıcı Verilerine Erişim: Kullanıcı profilleri, gönderim geçmişi ve yarışma performansını alır
  • 🔒 Özel Veri Erişimi: Kullanıcı notları oluşturur ve sorgular, problem çözme ilerleme durumunu takip eder ve gönderim detaylarını analiz eder (AC/WA analizi)
  • 🔍 Gelişmiş Arama Yetenekleri: Problemleri etiketlere, zorluk seviyelerine, kategorilere ve anahtar kelimelere göre filtreler
  • 📅 Günlük Sorunu Erişimi: Günlük sorunu problemlerine kolayca erişir

Ön Koşullar

  1. Node.js (v20.x veya üzeri)
  2. (İsteğe bağlı) Kimliği doğrulanmış API erişimi için LeetCode session cookie

Kurulum

Smithery Üzerinden Kurulum

leetcode-mcp-server'ı Claude Desktop için otomatik olarak Smithery üzerinden kurmak için:

npx -y @smithery/cli install @jinzcdev/leetcode-mcp-server --client claude

Manuel Kurulum

# npm'den kur
npm install @jinzcdev/leetcode-mcp-server -g

# Veya Global site konfigürasyonu ile çalıştır
npx -y @jinzcdev/leetcode-mcp-server --site global

# Kimlik doğrulama ile çalıştır (özel verilere erişim için)
npx -y @jinzcdev/leetcode-mcp-server --site global --session <YOUR_LEETCODE_SESSION_COOKIE>

Alternatif olarak, repository'yi clone edip yerel olarak çalıştırabilirsiniz:

# Repository'yi clone et
git clone https://github.com/jinzcdev/leetcode-mcp-server.git

# Proje dizinine git
cd leetcode-mcp-server

# Projeyi derle
npm install && npm run build

# Sunucuyu çalıştır
node build/index.js --site global

Kullanım

Visual Studio Code Entegrasyonu

Aşağıdaki JSON konfigürasyonunu User Settings (JSON) dosyanıza ekleyin. Ctrl/Cmd + Shift + P tuşlarına basıp Preferences: Open User Settings (JSON) arayarak erişebilirsiniz.

Seçenek 1: Ortam Değişkenlerini Kullanma

{
  "mcp": {
    "servers": {
      "leetcode": {
        "type": "stdio",
        "command": "npx",
        "args": ["-y", "@jinzcdev/leetcode-mcp-server"],
        "env": {
          "LEETCODE_SITE": "global",
          "LEETCODE_SESSION": "<YOUR_LEETCODE_SESSION_COOKIE>"
        }
      }
    }
  }
}

Seçenek 2: Komut Satırı Argümanlarını Kullanma

{
  "mcp": {
    "servers": {
      "leetcode": {
        "type": "stdio",
        "command": "npx",
        "args": [
          "-y",
          "@jinzcdev/leetcode-mcp-server",
          "--site",
          "global",
          "--session",
          "<YOUR_LEETCODE_SESSION_COOKIE>"
        ]
      }
    }
  }
}

LeetCode Çin sitesi için --site parametresini cn olarak değiştirin.

[!TIP]

Sunucu aşağıdaki isteğe bağlı ortam değişkenlerini destekler:

  • LEETCODE_SITE: LeetCode API endpoint ('global' veya 'cn', varsayılan: 'global')
  • LEETCODE_SESSION: Kimliği doğrulanmış API erişimi için LeetCode session cookie (varsayılan: boş)

Öncelik Notu: Her iki parametre de belirtildiğinde komut satırı argümanları ortam değişkenlerine göre öncelik alır. Örneğin:

  • Eğer LEETCODE_SITE=cn ayarlanmış fakat leetcode-mcp-server --site global komutunu çalıştırırsanız, sunucu global kullanacaktır.
  • Eğer LEETCODE_SESSION var fakat --session "new_cookie" sağlarsanız, komut satırı session değeri kullanılacaktır.

Mevcut Araçlar

Problemler

Araç Global CN Kimlik Doğrulama Gerekli Açıklama
get_daily_challenge Bugünün LeetCode Günlük Sorusunu alır
get_problem Belirli bir LeetCode probleminin detaylarını alır
search_problems Çoklu filtre kriterleri ile LeetCode problemlerini arar

Kullanıcılar

Araç Global CN Kimlik Doğrulama Gerekli Açıklama
get_user_profile LeetCode kullanıcısının profil bilgilerini alır
get_user_contest_ranking Kullanıcının yarışma sıralama istatistiklerini alır
get_recent_ac_submissions Kullanıcının son kabul edilen gönderimlerini alır
get_recent_submissions Kullanıcının son gönderim geçmişini alır
get_user_status Mevcut kullanıcının durumunu alır
get_problem_submission_report Belirli bir sorun için detaylı gönderim analizi sağlar
get_problem_progress Mevcut kullanıcının problem çözme ilerleme durumunu alır
get_all_submissions Mevcut kullanıcının gönderim geçmişini alır

Gönderimler

Araç Global CN Kimlik Doğrulama Gerekli Açıklama
run_code Problem için kod çalıştırır ve /check/ bitene kadar bekler
submit_solution Problem için kod gönderir ve /check/ bitene kadar bekler

Notlar

Araç Global CN Kimlik Doğrulama Gerekli Açıklama
search_notes Filtreleme seçenekleri ile kullanıcı notlarını arar
get_note Soru ID'sine göre belirli bir sorun için notları alır
create_note Belirli bir sorun için yeni not oluşturur
update_note Mevcut notu yeni içerik ile günceller

Çözümler

Araç Global CN Kimlik Doğrulama Gerekli Açıklama
list_problem_solutions Belirli bir sorun için topluluk çözümlerinin listesini alır
get_problem_solution Belirli bir çözümün tam içeriğini alır

Araç Parametreleri

Problemler

  • get_daily_challenge - Bugünün LeetCode Günlük Sorusunu tam detaylar ile alır

    • Parametre gerekli değildir
  • get_problem - Belirli bir LeetCode probleminin detaylarını alır

    • titleSlug: Problemin URL slug/tanımlayıcısı (string, zorunlu)
  • search_problems - Çoklu filtre kriterine göre LeetCode problemlerini arar

    • category: Problem kategori filtresi (string, isteğe bağlı, varsayılan: "all-code-essentials")
    • tags: Problemleri filtrelemek için konu etiketleri listesi (string[], isteğe bağlı)
    • difficulty: Problem zorluk seviyesi filtresi (enum: "EASY", "MEDIUM", "HARD", isteğe bağlı)
    • searchKeywords: Problem başlıkları ve açıklamalarında aranacak anahtar kelimeler (string, isteğe bağlı)
    • limit: Döndürülecek maksimum problem sayısı (number, isteğe bağlı, varsayılan: 10)
    • offset: Atlanacak problem sayısı (number, isteğe bağlı)

Kullanıcılar

  • get_user_profile - LeetCode kullanıcısı hakkında profil bilgilerini alır

    • username: LeetCode kullanıcı adı (string, zorunlu)
  • get_user_contest_ranking - Kullanıcının yarışma sıralama bilgilerini alır

    • username: LeetCode kullanıcı adı (string, zorunlu)
    • attended: Yalnızca kullanıcının katıldığı yarışmaları dahil etmek isteyip istemediğinizi belirtir (boolean, isteğe bağlı, varsayılan: true)
  • get_recent_submissions - Kullanıcının LeetCode Global'deki son gönderimlerini alır

    • username: LeetCode kullanıcı adı (string, zorunlu)
    • limit: Döndürülecek maksimum gönderim sayısı (number, isteğe bağlı, varsayılan: 10)
  • get_recent_ac_submissions - Kullanıcının son kabul edilen gönderimlerini alır

    • username: LeetCode kullanıcı adı (string, zorunlu)
    • limit: Döndürülecek maksimum gönderim sayısı (number, isteğe bağlı, varsayılan: 10)
  • get_user_status - Mevcut kullanıcının durumunu alır

    • Parametre gerekli değildir
  • get_problem_submission_report - Belirli bir gönderim hakkında detaylı bilgi alır

    • id: Sayısal gönderim ID'si (number, zorunlu)
  • get_problem_progress - Mevcut kullanıcının problem çözme ilerleme durumunu alır

    • offset: Atlanacak soru sayısı (number, isteğe bağlı, varsayılan: 0)
    • limit: Döndürülecek maksimum soru sayısı (number, isteğe bağlı, varsayılan: 100)
    • questionStatus: Soru durumuna göre filtrele (enum: "ATTEMPTED", "SOLVED", isteğe bağlı)
    • difficulty: Zorluk seviyelerine göre filtrele (string[], isteğe bağlı)
  • get_all_submissions - Kullanıcının gönderimlerinin sayfalı listesini alır

    • limit: Döndürülecek maksimum gönderim sayısı (number, varsayılan: 20)
    • offset: Atlanacak gönderim sayısı (number, varsayılan: 0)
    • questionSlug: İsteğe bağlı problem tanımlayıcı (string, isteğe bağlı)
    • lang: Programlama dili filtresi (string, isteğe bağlı, yalnızca CN)
    • status: Gönderim durumu filtresi (enum: "AC", "WA", isteğe bağlı, yalnızca CN)
    • lastKey: Sonraki sayfa için pagination tokeni (string, isteğe bağlı, yalnızca CN)

Gönderimler

  • run_code - Belirli bir problem için kod çalıştırır ve bitene kadar bekler (kimlik doğrulama gereklidir)

    • titleSlug: Problemin URL slug/tanımlayıcısı (string, zorunlu)
    • lang: Programlama dili (string enum, zorunlu)
    • typedCode: Çalıştırılacak kaynak kod (string, zorunlu)
    • dataInput: Çalıştırmak için özel input (string, isteğe bağlı)
    • timeoutMs: Polling timeout milisaniye cinsinden (number, isteğe bağlı, varsayılan: 120000)
    • pollIntervalMs: Polling aralığı milisaniye cinsinden (number, isteğe bağlı, varsayılan: 1500)
  • submit_solution - Belirli bir problem için kod gönderir ve bitene kadar bekler (kimlik doğrulama gereklidir)

    • titleSlug: Problemin URL slug/tanımlayıcısı (string, zorunlu)
    • lang: Programlama dili (string enum, zorunlu)
    • typedCode: Gönderilecek kaynak kod (string, zorunlu)
    • timeoutMs: Polling timeout milisaniye cinsinden (number, isteğe bağlı, varsayılan: 120000)
    • pollIntervalMs: Polling aralığı milisaniye cinsinden (number, isteğe bağlı, varsayılan: 1500)

Notlar

  • search_notes - LeetCode Çin'de kullanıcı notlarını arar

    • keyword: Notları filtrelemek için arama terimi (string, isteğe bağlı)
    • limit: Döndürülecek maksimum not sayısı (number, isteğe bağlı, varsayılan: 10)
    • skip: Atlanacak not sayısı (number, isteğe bağlı, varsayılan: 0)
    • orderBy: Döndürülen notlar için sıralama düzeni (enum: "ASCENDING", "DESCENDING", isteğe bağlı, varsayılan: "DESCENDING")
  • get_note - Belirli bir LeetCode problemi için kullanıcı notlarını alır

    • questionId: LeetCode probleminin soru ID'si (string, zorunlu)
    • limit: Döndürülecek maksimum not sayısı (number, isteğe bağlı, varsayılan: 10)
    • skip: Atlanacak not sayısı (number, isteğe bağlı, varsayılan: 0)
  • create_note - Belirli bir LeetCode problemi için yeni not oluşturur

    • questionId: LeetCode probleminin soru ID'si (string, zorunlu)
    • content: Notun içeriği, markdown formatını destekler (string, zorunlu)
    • summary: Not için isteğe bağlı kısa özet veya başlık (string, isteğe bağlı)
  • update_note - Mevcut notu yeni içerik veya özet ile günceller

    • noteId: Güncellenecek notun ID'si (string, zorunlu)
    • content: Not için yeni içerik, markdown formatını destekler (string, zorunlu)
    • summary: Not için isteğe bağlı yeni kısa özet veya başlık (string, isteğe bağlı)

Çözümler

  • list_problem_solutions - Belirli bir problem için topluluk çözümlerinin listesini alır

    • questionSlug: Problemin URL slug/tanımlayıcısı (string, zorunlu)
    • limit: Döndürülecek maksimum çözüm sayısı (number, isteğe bağlı, varsayılan: 10)
    • skip: Atlanacak çözüm sayısı (number, isteğe bağlı)
    • userInput: Çözümleri filtrelemek için arama terimi (string, isteğe bağlı)
    • tagSlugs: Çözümleri filtrelemek için etiket tanımlayıcılarının dizisi (string[], isteğe bağlı, varsayılan: [])
    • orderBy: Döndürülen çözümler için sıralama kriterleri
      • Global: enum: "HOT", "MOST_RECENT", "MOST_VOTES", isteğe bağlı, varsayılan: "HOT"
      • CN: enum: "DEFAULT", "MOST_UPVOTE", "HOT", "NEWEST_TO_OLDEST", "OLDEST_TO_NEWEST", isteğe bağlı, varsayılan: "DEFAULT"
  • get_problem_solution - Belirli bir çözümün tam içeriğini alır

    • topicId: Çözümün benzersiz topic ID'si (string, zorunlu, yalnızca Global)
    • slug: Çözümün benzersiz slug/tanımlayıcısı (string, zorunlu, yalnızca CN)

Mevcut Kaynaklar

Kaynak Adı Global CN Kimlik Doğrulama Gerekli Açıklama
problem-categories Tüm problem sınıflandırma kategorilerinin listesi
problem-tags Algoritmik ve veri yapı etiketlerinin detaylı koleksiyonu
problem-langs Desteklenen tüm programlama dillerinin tam listesi
problem-detail Belirli bir problem hakkında detay sağlar
problem-solution Belirli bir çözümün tam içeriğini sağlar

Kaynak URI'leri

  • problem-categories - Tüm problem sınıflandırma kategorilerinin listesi

    • URI: categories://problems/all
  • problem-tags - Algoritmik ve veri yapı etiketlerinin detaylı koleksiyonu

    • URI: tags://problems/all
  • problem-langs - LeetCode tarafından desteklenen tüm programlama dillerinin tam listesi

    • URI: langs://problems/all
  • problem-detail - Belirli bir LeetCode probleminin detaylarını sağlar

    • URI: problem://{titleSlug}
    • Parametreler:
      • titleSlug: LeetCode URL'sinde göründüğü şekildeki problem tanımlayıcısı
  • problem-solution - Belirli bir çözümün tam içeriğini sağlar

    • Global URI: solution://{topicId}
      • Parametreler:
        • topicId: Çözümün benzersiz topic ID'si
    • CN URI: solution://{slug}
      • Parametreler:
        • slug: Çözümün benzersiz slug/tanımlayıcısı

Kimlik Doğrulama

Kullanıcıya özgü veri erişimi LeetCode session kimlik doğrulama gerektirir:

  1. LeetCode'a giriş yapın (Global veya Çin sitesi)
  2. Tarayıcı geliştirici araçlarından LEETCODE_SESSION cookie'sini çıkartın
  3. Sunucuyu --session bayrağı veya LEETCODE_SESSION ortam değişkeni ile yapılandırın

Yanıt Formatı

Tüm araçlar aşağıdaki yapıya sahip JSON formatında yanıtlar döndürür:

{
  "content": [
    {
      "type": "text",
      "text": "JSON_DATA_STRING"
    }
  ]
}

JSON_DATA_STRING, istenen verileri veya başarısız istekler için bir hata mesajını içerir.

Lisans

Bu proje MIT Lisansı altında lisanslanmıştır.

Benzer MCP sunucuları

Daha fazla: Coding Agents →