Skip to main content
Glama
jinzcdev

LeetCode MCP Server

LeetCode MCP Server

NPM-Version GitHub-Lizenz Schmiedeabzeichen Chinesischer Doc Sterne

Der LeetCode MCP-Server ist ein Model Context Protocol (MCP) -Server, der eine nahtlose Integration mit LeetCode-APIs bietet und erweiterte Automatisierung und intelligente Interaktion mit den Programmierproblemen, Wettbewerben, Lösungen und Benutzerdaten von LeetCode ermöglicht.

Merkmale

  • 🌐 Multi-Site-Support : Unterstützt sowohl die Plattformen leetcode.com (Global) als auch leetcode.cn (China)

  • 📊 Problemdatenabruf : Erhalten Sie detaillierte Problembeschreibungen, Einschränkungen, Beispiele, offizielle Leitartikel und von Benutzern übermittelte Lösungen

  • 👤 Zugriff auf Benutzerdaten : Abrufen von Benutzerprofilen, Übermittlungsverlauf und Wettbewerbsleistung

  • 🔒 ​Privater Datenzugriff : Erstellen und Abfragen von Benutzernotizen, Verfolgen des Problemlösungsfortschritts und Analysieren von Übermittlungsdetails (AC/WA-Analyse)

  • 🔍 Erweiterte Suchfunktionen : Filtern Sie Probleme nach Tags, Schwierigkeitsgraden, Kategorien und Schlüsselwörtern

  • 📅 Zugriff auf tägliche Herausforderungen : Greifen Sie einfach auf tägliche Herausforderungsprobleme zu

Related MCP server: Linear MCP Server

Voraussetzungen

  1. Node.js-Laufzeitumgebung

  2. (Optional) LeetCode-Sitzungscookie für authentifizierten API-Zugriff

Installation

Installation über Smithery

So installieren Sie den Leetcode-MCP-Server für Claude Desktop automatisch über Smithery :

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

Manuelle Installation

# Install from npm
npm install @jinzcdev/leetcode-mcp-server -g

# Or run with Global site configuration
npx -y @jinzcdev/leetcode-mcp-server --site global

# Run with authentication (for accessing private data)
npx -y @jinzcdev/leetcode-mcp-server --site global --session <YOUR_LEETCODE_SESSION_COOKIE>

Alternativ können Sie das Repository klonen und lokal ausführen:

# Clone the repository
git clone https://github.com/jinzcdev/leetcode-mcp-server.git

# Navigate to the project directory
cd leetcode-mcp-server

# Build the project
npm install && npm run build

# Run the server
node build/index.js --site global

Verwendung

Visual Studio Code-Integration

Fügen Sie die folgende JSON-Konfiguration zu Ihrer Benutzereinstellungsdatei (JSON) hinzu. Greifen Sie darauf zu, indem Sie Ctrl/Cmd + Shift + P drücken und nach Preferences: Open User Settings (JSON) suchen.

Option 1: Verwenden von Umgebungsvariablen

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

Option 2: Verwenden von Befehlszeilenargumenten

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

Ändern Sie für die LeetCode China-Site den Parameter --site in cn .

[!TIPP]

Der Server unterstützt die folgenden Umgebungsvariablen:

  • LEETCODE_SITE : LeetCode API-Endpunkt ('global' oder 'cn')

  • LEETCODE_SESSION : LeetCode-Sitzungscookie für authentifizierten API-Zugriff

Prioritätshinweis : Befehlszeilenargumente haben Vorrang vor Umgebungsvariablen, wenn beide angegeben sind. Beispiel:

  • Wenn LEETCODE_SITE=cn festgelegt ist, Sie aber leetcode-mcp-server --site global ausführen, verwendet der Server global .

  • Wenn LEETCODE_SESSION vorhanden ist, Sie aber --session "new_cookie" angeben, wird der Sitzungswert der Befehlszeile verwendet.

Verfügbare Tools

Probleme

Werkzeug

Allgemein

CN

Authentifizierung erforderlich

Beschreibung

Holen Sie sich die tägliche Herausforderung

✅

✅

❌

Ruft das heutige LeetCode Daily Challenge-Problem ab

Problem lösen

✅

✅

❌

Ruft Details zu einem bestimmten LeetCode-Problem ab

Suchprobleme

✅

✅

❌

Sucht nach LeetCode-Problemen mit mehreren Filterkriterien

Benutzer

Werkzeug

Allgemein

CN

Authentifizierung erforderlich

Beschreibung

Benutzerprofil abrufen

✅

✅

❌

Ruft Profilinformationen für einen LeetCode-Benutzer ab

get_user_contest_ranking

✅

✅

❌

Ruft Wettbewerbsrankingstatistiken für einen Benutzer ab

Aktuelle AC-Einreichungen abrufen

✅

✅

❌

Ruft die zuletzt akzeptierten Einsendungen eines Benutzers ab

Aktuelle Einsendungen abrufen

✅

❌

❌

Ruft den Verlauf der letzten Übermittlungen eines Benutzers ab

get_user_status

✅

✅

✅

Ruft den aktuellen Status des aktuellen Benutzers ab

Problemübermittlungsbericht abrufen

✅

✅

✅

Bietet eine detaillierte Übermittlungsanalyse für ein bestimmtes Problem

Problemfortschritt abrufen

✅

✅

✅

Ruft den Problemlösungsfortschritt des aktuellen Benutzers ab

Alle Einsendungen abrufen

✅

✅

✅

Ruft den Übermittlungsverlauf des aktuellen Benutzers ab

Hinweise

Werkzeug

Allgemein

CN

Authentifizierung erforderlich

Beschreibung

Suchnotizen

❌

✅

✅

Sucht nach Benutzernotizen mit Filteroptionen

get_note

❌

✅

✅

Ruft Notizen zu einem bestimmten Problem anhand der Fragen-ID ab

Notiz erstellen

❌

✅

✅

Erstellt eine neue Notiz für ein bestimmtes Problem

Update-Hinweis

❌

✅

✅

Aktualisiert eine vorhandene Notiz mit neuem Inhalt

Lösungen

Werkzeug

Allgemein

CN

Authentifizierung erforderlich

Beschreibung

Problemlösungsliste

✅

✅

❌

Ruft eine Liste von Community-Lösungen für ein bestimmtes Problem ab

Problemlösung erhalten

✅

✅

❌

Ruft den kompletten Inhalt einer bestimmten Lösung ab

Werkzeugparameter

Probleme

  • get_daily_challenge - Ruft das heutige LeetCode Daily Challenge-Problem mit allen Details ab

    • Keine Parameter erforderlich

  • get_problem – Ruft Details zu einem bestimmten LeetCode-Problem ab

    • titleSlug : Der URL-Slug/Bezeichner des Problems (Zeichenfolge, erforderlich)

  • search_problems – Sucht nach LeetCode-Problemen basierend auf mehreren Filterkriterien

    • category : Problemkategoriefilter (Zeichenfolge, optional, Standard: „all-code-essentials“)

    • tags : Liste der Themen-Tags zum Filtern von Problemen (string[], optional)

    • difficulty : Filter für den Schwierigkeitsgrad des Problems (Aufzählung: „EINFACH“, „MITTEL“, „SCHWER“, optional)

    • searchKeywords : Schlüsselwörter für die Suche in Problemtiteln und -beschreibungen (Zeichenfolge, optional)

    • limit : Maximale Anzahl der zurückzugebenden Probleme (Zahl, optional, Standard: 10)

    • offset : Anzahl der zu überspringenden Probleme (Zahl, optional)

Benutzer

  • get_user_profile – Ruft Profilinformationen über einen LeetCode-Benutzer ab

    • username : LeetCode-Benutzername (Zeichenfolge, erforderlich)

  • get_user_contest_ranking - Ruft die Wettbewerbsranglisteninformationen eines Benutzers ab

    • username : LeetCode-Benutzername (Zeichenfolge, erforderlich)

    • attended : Ob nur die Wettbewerbe einbezogen werden sollen, an denen der Benutzer teilgenommen hat (Boolesch, optional, Standard: true)

  • get_recent_submissions – Ruft die letzten Einsendungen eines Benutzers auf LeetCode Global ab

    • username : LeetCode-Benutzername (Zeichenfolge, erforderlich)

    • limit : Maximale Anzahl der zurückzugebenden Einsendungen (Zahl, optional, Standard: 10)

  • get_recent_ac_submissions - Ruft die zuletzt akzeptierten Einsendungen eines Benutzers ab

    • username : LeetCode-Benutzername (Zeichenfolge, erforderlich)

    • limit : Maximale Anzahl der zurückzugebenden Einsendungen (Zahl, optional, Standard: 10)

  • get_user_status - Ruft den Status des aktuellen Benutzers ab

    • Keine Parameter erforderlich

  • get_problem_submission_report – Ruft detaillierte Informationen zu einer bestimmten Übermittlung ab

    • id : Die numerische Übermittlungs-ID (Nummer, erforderlich)

  • get_problem_progress - Ruft den Problemlösungsfortschritt des aktuellen Benutzers ab

    • offset : Anzahl der zu überspringenden Fragen (Zahl, optional, Standard: 0)

    • limit : Maximale Anzahl der zurückzugebenden Fragen (Anzahl, optional, Standard: 100)

    • questionStatus : Filtern nach Fragenstatus (Aufzählung: „VERSUCHT“, „GELÖST“, optional)

    • difficulty : Filtern nach Schwierigkeitsgraden (string[], optional)

  • get_all_submissions – Ruft eine paginierte Liste der Benutzereinreichungen ab

    • limit : Maximale Anzahl der zurückzugebenden Einsendungen (Zahl, Standard: 20)

    • offset : Anzahl der zu überspringenden Übermittlungen (Zahl, Standard: 0)

    • questionSlug : Optionale Problemkennung (Zeichenfolge, optional)

    • lang : Programmiersprachenfilter (Zeichenfolge, optional, nur CN)

    • status : Filter für den Übermittlungsstatus (Aufzählung: „AC“, „WA“, optional, nur CN)

    • lastKey : Paginierungstoken zum Abrufen der nächsten Seite (Zeichenfolge, optional, nur CN)

Hinweise

  • search_notes – Sucht nach Benutzernotizen zu LeetCode China

    • keyword : Suchbegriff zum Filtern von Notizen (Zeichenfolge, optional)

    • limit : Maximale Anzahl der zurückzugebenden Notizen (Zahl, optional, Standard: 10)

    • skip : Anzahl der zu überspringenden Noten (Anzahl, optional, Standard: 0)

    • orderBy : Sortierreihenfolge für zurückgegebene Notizen (Aufzählung: „ASCENDING“, „DESCENDING“, optional, Standard: „DESCENDING“)

  • get_note – Ruft Benutzernotizen für ein bestimmtes LeetCode-Problem ab

    • questionId : Die Frage-ID des LeetCode-Problems (Zeichenfolge, erforderlich)

    • limit : Maximale Anzahl der zurückzugebenden Notizen (Zahl, optional, Standard: 10)

    • skip : Anzahl der zu überspringenden Noten (Anzahl, optional, Standard: 0)

  • create_note – Erstellt eine neue Notiz für ein bestimmtes LeetCode-Problem

    • questionId : Die Frage-ID des LeetCode-Problems (Zeichenfolge, erforderlich)

    • content : Der Inhalt der Notiz, unterstützt das Markdown-Format (Zeichenfolge, erforderlich)

    • summary : Eine optionale kurze Zusammenfassung oder ein Titel für die Notiz (Zeichenfolge, optional)

  • update_note – Aktualisiert eine vorhandene Notiz mit neuem Inhalt oder einer Zusammenfassung

    • noteId : Die ID der zu aktualisierenden Notiz (Zeichenfolge, erforderlich)

    • content : Der neue Inhalt für die Notiz, unterstützt Markdown-Format (Zeichenfolge, erforderlich)

    • summary : Eine optionale neue kurze Zusammenfassung oder ein Titel für die Notiz (Zeichenfolge, optional)

Lösungen

  • list_problem_solutions - Ruft eine Liste von Community-Lösungen für ein bestimmtes Problem ab

    • questionSlug : Der URL-Slug/Bezeichner des Problems (Zeichenfolge, erforderlich)

    • limit : Maximale Anzahl der zurückzugebenden Lösungen (Zahl, optional, Standard: 10)

    • skip : Anzahl der zu überspringenden Lösungen (Zahl, optional)

    • userInput : Suchbegriff zum Filtern von Lösungen (Zeichenfolge, optional)

    • tagSlugs : Array von Tag-Kennungen zum Filtern von Lösungen (string[], optional, Standard: [])

    • orderBy : Sortierkriterien für die zurückgegebenen Lösungen

      • Global: Aufzählung: „HOT“, „MOST_RECENT“, „MOST_VOTES“, optional, Standard: „HOT“

      • CN: Aufzählung: "STANDARD", "MOST_UPVOTE", "HOT", "NEWEST_TO_OLDEST", "OLDEST_TO_NEWEST", optional, Standard: "STANDARD"

  • get_problem_solution - Ruft den vollständigen Inhalt einer bestimmten Lösung ab

    • topicId : Eindeutige Themen-ID der Lösung (Zeichenfolge, erforderlich, nur global)

    • slug : Eindeutiger Slug/Bezeichner der Lösung (Zeichenfolge, erforderlich, nur CN)

Verfügbare Ressourcen

Ressourcenname

Allgemein

CN

Authentifizierung erforderlich

Beschreibung

Problemkategorien

✅

✅

❌

Eine Liste aller Problemklassifizierungskategorien

Problem-Tags

✅

✅

❌

Eine detaillierte Sammlung von algorithmischen und Datenstruktur-Tags

Problemsprachen

✅

✅

❌

Eine vollständige Liste aller unterstützten Programmiersprachen

Problemdetail

✅

✅

❌

Bietet Details zu einem bestimmten Problem

Problemlösung

✅

✅

❌

Bietet den kompletten Inhalt einer spezifischen Lösung

Ressourcen-URIs

  • Problemkategorien – Eine Liste aller Problemklassifizierungskategorien

    • URI: categories://problems/all

  • problem-tags - Eine detaillierte Sammlung von algorithmischen und Datenstruktur-Tags

    • URI: tags://problems/all

  • problem-langs - Eine vollständige Liste aller von LeetCode unterstützten Programmiersprachen

    • URI: langs://problems/all

  • Problemdetail – Bietet Details zu einem bestimmten LeetCode-Problem

    • URI: problem://{titleSlug}

    • Parameter:

      • titleSlug : Problemkennung, wie sie in der LeetCode-URL erscheint

  • Problemlösung - Liefert den vollständigen Inhalt einer spezifischen Lösung

    • Globale URI: solution://{topicId}

      • Parameter:

        • topicId : Eindeutige Themen-ID der Lösung

    • CN-URI: solution://{slug}

      • Parameter:

        • slug : Eindeutiger Slug/Bezeichner der Lösung

Authentifizierung

Für den benutzerspezifischen Datenzugriff ist eine LeetCode-Sitzungsauthentifizierung erforderlich:

  1. Melden Sie sich bei LeetCode an ( globale oder chinesische Site)

  2. Extrahieren Sie LEETCODE_SESSION Cookie aus den Browser-Entwicklertools

  3. Konfigurieren Sie den Server mit dem Flag --session oder der Umgebungsvariable LEETCODE_SESSION

Antwortformat

Alle Tools geben Antworten im JSON-Format mit der folgenden Struktur zurück:

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

Der JSON_DATA_STRING enthält entweder die angeforderten Daten oder eine Fehlermeldung bei fehlgeschlagenen Anfragen.

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert.

Available Tools

1 tool
get_problem_solutionA

Retrieves full content of a community solution article (read-only, no auth). Requires topicId from list_problem_solutions. Returns article text, author, and metadata as JSON. Use list_problem_solutions first to discover solutions and obtain topicId.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicIdYesSolution topicId from list_problem_solutions response

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully covers behavioral traits: read-only, no authentication, and return format (JSON with text, author, metadata).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, front-loaded with purpose and safety, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a simple retrieval tool with one parameter and no output schema; mentions return fields and prerequisite step. Could specify error cases, but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds value by explaining the topicId's origin from list_problem_solutions, which is not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieves full content of a community solution article' with specific verb and resource. It is unambiguous and needs no sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to first use list_problem_solutions to obtain topicId, providing clear prerequisite and sequential usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.4.0
    • Addedget_problem_solution
    • Removedget_user_contest_ranking
  2. 9 tool updatesv1.4.0
    • Removedget_daily_challenge
    • Removedget_problem
    • Removedget_problem_solution
    • Removedget_recent_ac_submissions
    • Removedget_recent_submissions
    • Changedget_user_contest_ranking2 fields changed
      • changedInput schema / properties / attended / description
        Previous value: -"Whether to include only the contests the user has participated in (true) or all contests (false); defaults to true"New value: +"true = only contests the user attended (default); false = include all contests in history"
      • changedInput schema / properties / username / description
        Previous value: -"LeetCode username to retrieve contest ranking information for"New value: +"LeetCode username whose contest ranking to fetch"
    • Removedget_user_profile
    • Removedlist_problem_solutions
    • Removedsearch_problems
  3. 1 tool updatev1.0.0
    • Changedget_daily_challenge1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  4. 9 tool updates
    • First observedget_daily_challenge
    • First observedget_problem
    • First observedget_problem_solution
    • First observedget_recent_ac_submissions
    • First observedget_recent_submissions
    • First observedget_user_contest_ranking
    • First observedget_user_profile
    • First observedlist_problem_solutions
    • First observedsearch_problems

TDQS

A4.2/5.0

Scored across 1 tool

Disambiguation4/5

Only one tool exists, so there is no ambiguity with other tools. However, the tool's dependency on a missing listing tool could cause confusion for agents trying to use it.

Naming Consistency5/5

With a single tool, naming is trivially consistent. The pattern 'get_problem_solution' follows verb_noun convention.

Tool Count1/5

A single tool for a LeetCode server is far too few. Expected operations (list problems, get problem details, submit solutions, etc.) are missing, making the surface extremely limited.

Completeness1/5

The only tool requires a topicId from a non-existent list_problem_solutions tool, rendering it unusable. The surface is severely incomplete.

Maintenance

ActivityInactive
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers