Skip to main content
Glama
jinzcdev

LeetCode MCP Server

Servidor MCP de LeetCode

Versión NPM Licencia de GitHub insignia de herrería Documento chino Estrellas

El servidor MCP de LeetCode es un servidor de protocolo de contexto de modelo (MCP) que proporciona una integración perfecta con las API de LeetCode, lo que permite una automatización avanzada y una interacción inteligente con los problemas de programación, concursos, soluciones y datos de usuario de LeetCode.

Características

  • 🌐 Soporte para múltiples sitios : compatible con las plataformas leetcode.com (Global) y leetcode.cn (China)

  • Recuperación de datos de problemas : obtenga descripciones detalladas de problemas, restricciones, ejemplos, editoriales oficiales y soluciones enviadas por los usuarios.

  • 👤 Acceso a datos de usuario : recupera perfiles de usuario, historial de envíos y rendimiento del concurso

  • 🔒 Acceso a datos privados : cree y consulte notas de usuario, realice un seguimiento del progreso de la resolución de problemas y analice los detalles de los envíos (análisis AC/WA)

  • 🔍 Capacidades de búsqueda avanzada : filtre problemas por etiquetas, niveles de dificultad, categorías y palabras clave

  • 📅 Acceso a desafíos diarios : accede fácilmente a los problemas de desafíos diarios

Related MCP server: Linear MCP Server

Prerrequisitos

  1. Entorno de ejecución de Node.js

  2. (Opcional) Cookie de sesión de LeetCode para acceso a API autenticado

Instalación

Instalación mediante herrería

Para instalar leetcode-mcp-server para Claude Desktop automáticamente a través de Smithery :

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

Instalación manual

# 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>

Alternativamente, puede clonar el repositorio y ejecutarlo localmente:

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

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

# Build and run the server
npm run build && node build/index.js --site global

Uso

Integración de Visual Studio Code

Agregue la siguiente configuración JSON a su archivo de configuración de usuario (JSON). Para acceder a ella, presione Ctrl/Cmd + Shift + P y busque Preferences: Open User Settings (JSON) .

Opción 1: Uso de variables de entorno

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

Opción 2: Uso de argumentos de la línea de comandos

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

Para el sitio LeetCode China, modifique el parámetro --site a cn .

[!CONSEJO]

El servidor admite las siguientes variables de entorno:

  • LEETCODE_SITE : Punto final de la API de LeetCode ('global' o 'cn')

  • LEETCODE_SESSION : cookie de sesión de LeetCode para acceso a API autenticado

Nota de prioridad : Los argumentos de la línea de comandos prevalecen sobre las variables de entorno cuando se especifican ambas. Por ejemplo:

  • Si se configura LEETCODE_SITE=cn pero ejecuta leetcode-mcp-server --site global , el servidor utilizará global .

  • Si LEETCODE_SESSION existe pero usted proporciona --session "new_cookie" , se utilizará el valor de la sesión de la línea de comandos.

Herramientas disponibles

Problemas

Herramienta

Global

CN

Se requiere autorización

Descripción

obtener_desafío_diario

✅

✅

❌

Recupera el problema del Desafío diario de LeetCode de hoy

obtener_problema

✅

✅

❌

Recupera detalles de un problema específico de LeetCode

problemas de búsqueda

✅

✅

❌

Busca problemas de LeetCode con múltiples criterios de filtro

Usuarios

Herramienta

Global

CN

Se requiere autorización

Descripción

obtener_perfil_de_usuario

✅

✅

❌

Recupera información de perfil de un usuario de LeetCode

obtener_clasificación_del_concurso_de_usuarios

✅

✅

❌

Obtiene estadísticas de clasificación del concurso para un usuario

obtener_envíos_ac_recientes

✅

✅

❌

Recupera los envíos aceptados recientes de un usuario

obtener_envíos_recientes

✅

❌

❌

Recupera el historial de envíos recientes de un usuario.

obtener_estado_del_usuario

✅

✅

✅

Recupera el estado actual del usuario actual

obtener_informe_de_envío_de_problemas

✅

✅

✅

Proporciona un análisis detallado del envío para un problema específico.

obtener_progreso_del_problema

✅

✅

✅

Recupera el progreso de resolución de problemas del usuario actual.

obtener_todos_los_envíos

✅

✅

✅

Recupera el historial de envíos del usuario actual

Notas

Herramienta

Global

CN

Se requiere autorización

Descripción

notas de búsqueda

❌

✅

✅

Busca notas de usuario con opciones de filtrado

obtener_nota

❌

✅

✅

Recupera notas para un problema específico por ID de pregunta

crear_nota

❌

✅

✅

Crea una nueva nota para un problema específico.

nota de actualización

❌

✅

✅

Actualiza una nota existente con contenido nuevo

Soluciones

Herramienta

Global

CN

Se requiere autorización

Descripción

lista_soluciones_de_problemas

✅

✅

❌

Recupera una lista de soluciones comunitarias para un problema específico

obtener_solución_del_problema

✅

✅

❌

Recupera el contenido completo de una solución específica

Parámetros de la herramienta

Problemas

  • get_daily_challenge : recupera el problema del desafío diario LeetCode de hoy con detalles completos

    • No se requieren parámetros

  • get_problem : recupera detalles sobre un problema específico de LeetCode

    • titleSlug : El slug/identificador de la URL del problema (cadena, obligatoria)

  • search_problems : busca problemas de LeetCode según múltiples criterios de filtro

    • category : filtro de categoría de problema (cadena, opcional, predeterminado: "all-code-essentials")

    • tags : Lista de etiquetas de temas para filtrar problemas por (cadena[], opcional)

    • difficulty : Filtro de nivel de dificultad del problema (enumeración: "FÁCIL", "MEDIO", "DIFÍCIL", opcional)

    • searchKeywords : Palabras clave para buscar en títulos y descripciones de problemas (cadena, opcional)

    • limit : Número máximo de problemas a devolver (número, opcional, predeterminado: 10)

    • offset : Número de problemas a omitir (número, opcional)

Usuarios

  • get_user_profile : recupera información de perfil sobre un usuario de LeetCode

    • username : nombre de usuario de LeetCode (cadena, obligatorio)

  • get_user_contest_ranking : recupera la información de clasificación del concurso de un usuario.

    • username : nombre de usuario de LeetCode (cadena, obligatorio)

    • attended : si se deben incluir solo los concursos en los que el usuario ha participado (booleano, opcional, predeterminado: verdadero)

  • get_recent_submissions : recupera los envíos recientes de un usuario en LeetCode Global

    • username : nombre de usuario de LeetCode (cadena, obligatorio)

    • limit : Número máximo de envíos a devolver (número, opcional, predeterminado: 10)

  • get_recent_ac_submissions : recupera los envíos aceptados recientes de un usuario

    • username : nombre de usuario de LeetCode (cadena, obligatorio)

    • limit : Número máximo de envíos a devolver (número, opcional, predeterminado: 10)

  • get_user_status - Recupera el estado del usuario actual

    • No se requieren parámetros

  • get_problem_submission_report : recupera información detallada sobre un envío específico

    • id : El ID de envío numérico (número, obligatorio)

  • get_problem_progress : recupera el progreso de resolución de problemas del usuario actual

    • offset : Número de preguntas a omitir (número, opcional, predeterminado: 0)

    • limit : Número máximo de preguntas a devolver (número, opcional, predeterminado: 100)

    • questionStatus : Filtrar por estado de la pregunta (enumeración: "INTENTADO", "RESUELTO", opcional)

    • difficulty : Filtrar por niveles de dificultad (cadena[], opcional)

  • get_all_submissions - Recupera la lista paginada de los envíos del usuario

    • limit : Número máximo de envíos a devolver (número, predeterminado: 20)

    • offset : Número de envíos a omitir (número, predeterminado: 0)

    • questionSlug : Identificador de problema opcional (cadena, opcional)

    • lang : Filtro de lenguaje de programación (cadena, opcional, solo CN)

    • status : Filtro de estado de envío (enumeración: "AC", "WA", opcional, solo CN)

    • lastKey : Token de paginación para recuperar la página siguiente (cadena, opcional, solo CN)

Notas

  • search_notes : busca notas de usuario en LeetCode China

    • keyword : término de búsqueda para filtrar notas (cadena, opcional)

    • limit : Número máximo de notas a devolver (número, opcional, predeterminado: 10)

    • skip : Número de notas a omitir (número, opcional, predeterminado: 0)

    • orderBy : Orden de clasificación para las notas devueltas (enumeración: "ASCENDENTE", "DESCENDENTE", opcional, predeterminado: "DESCENDENTE")

  • get_note - Recupera notas de usuario para un problema específico de LeetCode

    • questionId : El ID de la pregunta del problema LeetCode (cadena, obligatoria)

    • limit : Número máximo de notas a devolver (número, opcional, predeterminado: 10)

    • skip : Número de notas a omitir (número, opcional, predeterminado: 0)

  • create_note : crea una nueva nota para un problema específico de LeetCode

    • questionId : El ID de la pregunta del problema LeetCode (cadena, obligatoria)

    • content : El contenido de la nota, admite el formato Markdown (cadena, obligatorio)

    • summary : Un resumen breve o título opcional para la nota (cadena, opcional)

  • update_note - Actualiza una nota existente con nuevo contenido o resumen

    • noteId : El ID de la nota a actualizar (cadena, obligatoria)

    • content : El nuevo contenido para la nota, admite el formato Markdown (cadena, obligatorio)

    • summary : Un nuevo resumen breve o título opcional para la nota (cadena, opcional)

Soluciones

  • list_problem_solutions : recupera una lista de soluciones de la comunidad para un problema específico

    • questionSlug : El slug/identificador de la URL del problema (cadena, obligatoria)

    • limit : Número máximo de soluciones a devolver (número, opcional, predeterminado: 10)

    • skip : Número de soluciones a omitir (número, opcional)

    • userInput : término de búsqueda para filtrar soluciones (cadena, opcional)

    • tagSlugs : Matriz de identificadores de etiquetas para filtrar soluciones (cadena[], opcional, predeterminado: [])

    • orderBy : Criterios de ordenación para las soluciones devueltas

      • Global: enumeración: "HOT", "MÁS_RECENT", "MÁS_VOTOS", opcional, valor predeterminado: "HOT"

      • CN: enumeración: "PREDETERMINADO", "MÁS VOTADOS A FAVOR", "DESDE EL MÁS NUEVO AL MÁS ANTIGUO", "DE EL MÁS ANTIGUO AL MÁS NUEVO", opcional, valor predeterminado: "PREDETERMINADO"

  • get_problem_solution : recupera el contenido completo de una solución específica

    • topicId : ID de tema único de la solución (cadena, obligatoria, solo global)

    • slug : slug/identificador único de la solución (cadena, obligatorio, solo CN)

Recursos disponibles

Nombre del recurso

Global

CN

Se requiere autorización

Descripción

categorías de problemas

✅

✅

❌

Una lista de todas las categorías de clasificación de problemas

etiquetas de problemas

✅

✅

❌

Una colección detallada de etiquetas algorítmicas y de estructura de datos

lenguaje problemático

✅

✅

❌

Una lista completa de todos los lenguajes de programación compatibles

detalle del problema

✅

✅

❌

Proporciona detalles sobre un problema específico.

problema-solución

✅

✅

❌

Proporciona el contenido completo de una solución específica.

URI de recursos

  • categorías de problemas : una lista de todas las categorías de clasificación de problemas

    • URI: categories://problems/all

  • problem-tags : una colección detallada de etiquetas algorítmicas y de estructura de datos

    • URI: tags://problems/all

  • problem-langs : una lista completa de todos los lenguajes de programación compatibles con LeetCode

    • URI: langs://problems/all

  • problem-detail : proporciona detalles sobre un problema específico de LeetCode

    • URI: problem://{titleSlug}

    • Parámetros:

      • titleSlug : Identificador del problema tal como aparece en la URL de LeetCode

  • Problema-solución : Proporciona el contenido completo de una solución específica.

    • URI global: solution://{topicId}

      • Parámetros:

        • topicId : ID de tema único de la solución

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

      • Parámetros:

        • slug : slug/identificador único de la solución

Autenticación

El acceso a datos específicos del usuario requiere la autenticación de sesión de LeetCode:

  1. Inicie sesión en LeetCode (sitio global o de China )

  2. Extraer la cookie LEETCODE_SESSION de las herramientas para desarrolladores del navegador

  3. Configurar el servidor con el indicador --session o la variable de entorno LEETCODE_SESSION

Formato de respuesta

Todas las herramientas devuelven respuestas en formato JSON con la siguiente estructura:

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

JSON_DATA_STRING contiene los datos solicitados o un mensaje de error para solicitudes fallidas.

Licencia

Este proyecto está licenciado bajo la licencia MIT.

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