Interactive Leetcode MCP

Un servidor MCP que permite el aprendizaje guiado de DSA con IA en leetcode.com

Documentación

Interactive LeetCode MCP

npm version npm downloads GitHub stars MCP Registry GitHub license

El proyecto actual está en desarrollo activo y puede que no funcione perfectamente

Características

  • 🔐 Autenticación guiada por IA - Claude te guía en la configuración única de credenciales
  • 🎓 Modo guiado de aprendizaje - La IA proporciona pistas antes de las soluciones para maximizar el aprendizaje
  • 📝 Envío de soluciones - Envía código y obtén resultados al instante
  • 💬 Flujo de trabajo conversacional - Practica de forma natural con Claude Code
  • 🌍 Soporte multi-idioma - Java, Python, C++, JavaScript, TypeScript y más
  • 📊 Retroalimentación detallada - Estadísticas de ejecución, uso de memoria, casos de prueba fallidos
  • 📚 Datos de problemas - Descripciones, restricciones, ejemplos, soluciones editoriales
  • 👤 Seguimiento de usuario - Datos de perfil, historial de envíos, clasificaciones de concursos

Requisitos previos

  • Node.js v20.x o superior
  • Cuenta de LeetCode
  • Cualquier navegador web moderno (Chrome, Firefox, Safari, Edge, etc.)

Instalación

Vía NPM (Recomendado)

npm install -g @sperekrestova/interactive-leetcode-mcp
interactive-leetcode-mcp --version
interactive-leetcode-mcp --help

También puedes ejecutar el paquete sin instalarlo globalmente:

npx -y @sperekrestova/interactive-leetcode-mcp@latest --version

Desde el código fuente

git clone https://github.com/SPerekrestova/interactive-leetcode-mcp.git
cd interactive-leetcode-mcp
npm install && npm run build
npm link

Prueba de humo en entorno limpio

Usa esto para verificar el paquete npm publicado desde un directorio limpio sin ninguna credencial de LeetCode:

mkdir leetcode-mcp-smoke
cd leetcode-mcp-smoke
npm init -y
npm install @sperekrestova/interactive-leetcode-mcp
npx --no-install interactive-leetcode-mcp --version
npx --no-install interactive-leetcode-mcp --help

Esos comandos confirman que Node puede instalar el paquete y exponer el binario de CLI. Para la validación real del servidor MCP, usa una prueba de integración que se conecte a través de stdio y complete el protocolo de enlace MCP.

Configuración

Claude Code y Claude Desktop

Puedes ejecutar este comando en la CLI

claude mcp add --transport stdio leetcode -- npx -y @sperekrestova/interactive-leetcode-mcp@latest

O añadirlo a tu archivo de configuración MCP (~/.config/claude-code/mcp.json) o (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "leetcode": {
      "command": "npx",
      "args": ["-y", "@sperekrestova/interactive-leetcode-mcp@latest"]
    }
  }
}

Compilación local

{
  "mcpServers": {
    "leetcode": {
      "command": "node",
      "args": ["/path/to/this/project/interactive-leetcode-mcp/build/index.js"]
    }
  }
}

Inicio rápido

1. Autorízate con LeetCode

You: "Authorize with LeetCode"
Claude: [Opens LeetCode in your browser and guides you through the process]
Claude: "Please log in to your account. Once logged in, I'll walk you through
        getting two cookie values we need. First, press F12 to open DevTools..."
You: [Follows Claude's step-by-step guidance]
You: "Here are my cookies: csrftoken is abc123... and LEETCODE_SESSION is xyz789..."
Claude: "✓ Perfect! Your credentials are validated and saved. Welcome back, johndoe!"

2. Practica un problema

You: "I want to practice two-sum"
Claude: [Fetches problem and creates working file]

3. Obtén ayuda cuando estés atascado

You: "Give me a hint"
Claude: [Provides contextual guidance based on your code]

4. Envía tu solución

You: "Submit my solution"
Claude: "🎉 Accepted! Runtime: 2ms (beats 95.3%)"

Herramientas disponibles

Primeros pasos

get_started

  • Devuelve la guía de uso del servidor, el flujo de aprendizaje, el flujo de autenticación y el mapa de idiomas de envío
  • Llama a esto al inicio de una sesión de práctica de LeetCode

Autorización

start_leetcode_auth

  • Inicia el flujo de autenticación
  • Abre el navegador en el inicio de sesión de LeetCode (cuando sea posible)
  • Devuelve instrucciones estructuradas para que el agente de IA te guíe
  • No requiere parámetros

save_leetcode_credentials

  • Valida y guarda tus credenciales de LeetCode
  • Parámetros: csrftoken, session (valores de cookies que proporcionas)
  • Realiza una llamada API de prueba para verificar las credenciales
  • Almacena las credenciales de forma segura para uso futuro

check_auth_status

  • Comprueba si estás autenticado
  • Devuelve el nombre de usuario y la antigüedad de las credenciales
  • Advierte si las credenciales pueden expirar pronto
  • No requiere parámetros

Herramientas de problemas

get_daily_challenge

  • Obtén el desafío de codificación diario de hoy

get_problem

  • Obtén información detallada del problema por slug
  • Parámetros: titleSlug (por ejemplo, "two-sum")

search_problems

  • Busca problemas por dificultad, etiquetas, palabras clave
  • Soporta filtrado y paginación

Herramientas de sesión y aprendizaje

start_problem

  • Abre o reanuda una sesión de tutoría para un problema
  • Parámetros: titleSlug, opcional language
  • Requerido antes de las herramientas de pistas y soluciones específicas del problema

request_hint

  • Avanza los niveles de pistas progresivas para la sesión activa
  • Parámetros: titleSlug
  • Desbloquea las herramientas de soluciones de la comunidad después del nivel final de pistas

get_session_state

  • Muestra el nivel de pistas actual y los metadatos de la sesión
  • Parámetros: titleSlug

reset_session

  • Restablece el progreso de pistas para un problema
  • Parámetros: titleSlug

Herramientas de ejecución local

runner_doctor

  • Informa qué entornos de ejecución locales están disponibles para los idiomas soportados

run_local_tests

  • Ejecuta el código del usuario contra pruebas de muestra en un sandbox de subproceso local
  • Parámetros: titleSlug, language, code, opcional timeoutMs

Herramientas de soluciones

list_problem_solutions

  • Lista los artículos de soluciones de la comunidad/editoriales para un problema
  • Parámetros: questionSlug, opcional limit, skip, orderBy, userInput, tagSlugs
  • Requiere que la sesión alcance el nivel de pistas con soluciones desbloqueadas

get_problem_solution

  • Obtiene un artículo de solución específico
  • Parámetros: topicId, titleSlug
  • Requiere que la sesión alcance el nivel de pistas con soluciones desbloqueadas

Herramientas de envío

submit_solution

  • Envía código y obtén resultados en tiempo real
  • Parámetros: problemSlug, code, language
  • Devuelve: estado de aceptación, tiempo de ejecución, memoria o caso de prueba fallido

Herramientas de usuario

get_user_profile

  • Recupera la información del perfil del usuario

get_recent_submissions

  • Obtén el historial de envíos con filtrado

get_recent_ac_submissions

  • Obtén los envíos aceptados recientes

get_user_status

  • Obtén el estado/resumen del perfil del usuario autenticado

get_problem_submission_report

  • Obtén el informe de envíos para un problema

get_problem_progress

  • Obtén el progreso de resueltos/intentados para un problema

get_all_submissions

  • Obtén el historial de envíos paginado

get_user_contest_ranking

  • Consulta el rendimiento y las clasificaciones de concursos

Modo de aprendizaje

El Interactive LeetCode MCP incluye orientación del agente de IA a través de Prompts MCP para crear una mejor experiencia de aprendizaje.

Características

Configuración del espacio de trabajo: Cuando el modo de aprendizaje está activo, Claude:

  • Crea un archivo de espacio de trabajo llamado {problem-slug}.{extension}
  • Pega la plantilla de código en el archivo
  • Configura convenciones de nomenclatura adecuadas (por ejemplo, nombres de clases Java)

Modo guiado de aprendizaje: Cuando está activo, Claude sigue estas pautas:

  • Proporciona pistas progresivas (4 niveles) antes de revelar soluciones
  • Hace preguntas guiadas sobre el enfoque y la complejidad
  • Fomenta la resolución independiente de problemas
  • Solo muestra soluciones completas cuando se solicita explícitamente

Flujo de trabajo de problemas: Te guía a través del ciclo completo:

  1. Entiende el problema
  2. Planifica el enfoque
  3. Configura el espacio de trabajo
  4. Implementa con pistas
  5. Optimiza y analiza la complejidad
  6. Envía y revisa los resultados

Cómo usar el modo de aprendizaje

Para activar el modo de aprendizaje, dile a Claude que quieres practicar con orientación — por ejemplo, "Practiquemos en modo de aprendizaje" o "Quiero aprender two-sum con pistas". Una vez activo:

  1. Llama a get_started para cargar la guía de uso del servidor
  2. Obtén un problema con get_daily_challenge, search_problems o get_problem
  3. Abre una sesión con start_problem
  4. Pide pistas a través de request_hint en lugar de ir directamente a las soluciones
  5. Implementa tu solución con orientación progresiva
  6. Solicita la solución solo después del nivel final de pistas o cuando quieras comparar con un enfoque óptimo

Pruebas de dogfooding

Para probar el servidor MCP como un cliente MCP de caja negra sin tráfico en vivo de LeetCode:

npm run dogfood:local

Esto compila el servidor, inicia build/index.js a través de stdio, se conecta con el cliente del SDK MCP, usa un HOME aislado, sirve respuestas de LeetCode desde fixtures, y dirige un flujo similar al de un usuario a través de runner_doctor, start_problem, request_hint, run_local_tests y get_session_state.

Consulta DOGFOOD_TESTING.md para el flujo de trabajo completo y un prompt de copiar y pegar para pruebas de dogfooding locales con Claude/agente.

Solución de problemas

Error "No autorizado" o "Credenciales inválidas"

  • Pide a Claude que "Autorice con LeetCode" para iniciar una autenticación nueva
  • Asegúrate de haber iniciado sesión en LeetCode en tu navegador antes de extraer las cookies
  • Verifica que copiaste los valores completos de las cookies (pueden ser muy largos)
  • Comprueba que no copiaste espacios o caracteres adicionales por accidente

"Las credenciales han expirado"

  • Las cookies de LeetCode suelen expirar después de 7-14 días
  • Simplemente pide a Claude que "Autorice con LeetCode" de nuevo
  • Necesitarás extraer cookies nuevas de tu navegador

No encuentro DevTools o cookies

  • Pregunta a Claude qué navegador estás usando - Claude proporcionará instrucciones específicas para el navegador
  • En Chrome: Pulsa F12, haz clic en la pestaña "Application", expande "Cookies"
  • En Firefox: Pulsa F12, haz clic en la pestaña "Storage", expande "Cookies"
  • En Safari: Habilita primero el menú de desarrollador (Preferencias → Avanzado), luego Desarrollar → Mostrar inspector web

Valores copiados incorrectos

  • Asegúrate de copiar la columna VALOR, no el nombre
  • Los valores deben ser cadenas aleatorias largas (50+ caracteres)
  • Haz doble clic en el valor para seleccionarlo todo antes de copiar
  • Si no estás seguro, Claude puede guiarte a través del proceso de nuevo

El navegador no se abre durante la autorización

Error "Idioma no soportado"

  • Idiomas soportados: java, python, python3, cpp, c++, javascript, js, typescript, ts

Tiempo de espera agotado en el envío

  • LeetCode puede estar experimentando alto tráfico - espera y reintenta
  • Comprueba tu conexión a internet

Habilidades y complementos

Este repositorio también incluye una habilidad de agente que enseña a Claude (y a otros agentes de IA) cómo usar el servidor MCP correctamente — incluyendo el flujo de sesión, invocaciones de prompts, modo de aprendizaje y autenticación.

Complemento de Claude Code

Instala la habilidad directamente como un complemento de Claude Code:

/plugin marketplace add SPerekrestova/interactive-leetcode-mcp
/plugin install interactive-leetcode-mcp@interactive-leetcode-mcp

Luego inicia una sesión de práctica con:

/interactive-leetcode-mcp:interactive-leetcode-mcp

ClawHub (OpenClaw / Clawbot)

La habilidad también está publicada en ClawHub para su uso con agentes compatibles con OpenClaw.

Agradecimientos

Bifurcado de Leetcode mcp)

Licencia

MIT © SPerekrestova

Enlaces