Interactive Leetcode MCP
Un servidor MCP que permite el aprendizaje guiado de DSA con IA en leetcode.com
Documentación
Interactive LeetCode MCP
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, opcionallanguage - 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, opcionaltimeoutMs
Herramientas de soluciones
list_problem_solutions
- Lista los artículos de soluciones de la comunidad/editoriales para un problema
- Parámetros:
questionSlug, opcionallimit,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:
- Entiende el problema
- Planifica el enfoque
- Configura el espacio de trabajo
- Implementa con pistas
- Optimiza y analiza la complejidad
- 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:
- Llama a
get_startedpara cargar la guía de uso del servidor - Obtén un problema con
get_daily_challenge,search_problemsoget_problem - Abre una sesión con
start_problem - Pide pistas a través de
request_hinten lugar de ir directamente a las soluciones - Implementa tu solución con orientación progresiva
- 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
- ¡No hay problema! Simplemente abre https://leetcode.com/accounts/login/ manualmente
- Claude aún te guiará a través del proceso de extracción de cookies
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