Interactive Leetcode MCP
Um servidor MCP que possibilita aprendizado guiado de DSA com IA no leetcode.com
Documentação
Interactive LeetCode MCP
O projeto atual está em desenvolvimento ativo e pode não funcionar perfeitamente
Recursos
- 🔐 Autenticação guiada por IA - O Claude orienta você na configuração única de credenciais
- 🎓 Modo guiado de aprendizado - A IA fornece dicas antes das soluções para maximizar o aprendizado
- 📝 Envio de soluções - Envie código e obtenha resultados instantâneos
- 💬 Fluxo de trabalho conversacional - Pratique naturalmente com o Claude Code
- 🌍 Suporte a múltiplos idiomas - Java, Python, C++, JavaScript, TypeScript e outros
- 📊 Feedback detalhado - Estatísticas de execução, uso de memória, casos de teste com falha
- 📚 Dados do problema - Descrições, restrições, exemplos, soluções editoriais
- 👤 Rastreamento do usuário - Dados de perfil, histórico de envios, classificações em competições
Pré-requisitos
- Node.js v20.x ou superior
- Conta no LeetCode
- Qualquer navegador moderno (Chrome, Firefox, Safari, Edge, etc.)
Instalação
Via NPM (Recomendado)
npm install -g @sperekrestova/interactive-leetcode-mcp
interactive-leetcode-mcp --version
interactive-leetcode-mcp --help
Você também pode executar o pacote sem instalá-lo globalmente:
npx -y @sperekrestova/interactive-leetcode-mcp@latest --version
A partir do código-fonte
git clone https://github.com/SPerekrestova/interactive-leetcode-mcp.git
cd interactive-leetcode-mcp
npm install && npm run build
npm link
Teste rápido em ambiente limpo
Use isto para verificar o pacote npm publicado a partir de um diretório limpo, sem nenhuma credencial do 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
Esses comandos confirmam que o Node consegue instalar o pacote e expor o binário da CLI. Para validação real do servidor MCP, use um teste de integração que se conecta via stdio e completa o handshake do MCP.
Configuração
Claude Code e Claude Desktop
Você pode executar este comando na CLI
claude mcp add --transport stdio leetcode -- npx -y @sperekrestova/interactive-leetcode-mcp@latest
Ou adicionar ao seu arquivo de configuração do MCP (~/.config/claude-code/mcp.json) ou (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"leetcode": {
"command": "npx",
"args": ["-y", "@sperekrestova/interactive-leetcode-mcp@latest"]
}
}
}
Build local
{
"mcpServers": {
"leetcode": {
"command": "node",
"args": ["/path/to/this/project/interactive-leetcode-mcp/build/index.js"]
}
}
}
Início Rápido
1. Autorize com o 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. Pratique um Problema
You: "I want to practice two-sum"
Claude: [Fetches problem and creates working file]
3. Obtenha Ajuda Quando Estiver Travado
You: "Give me a hint"
Claude: [Provides contextual guidance based on your code]
4. Envie Sua Solução
You: "Submit my solution"
Claude: "🎉 Accepted! Runtime: 2ms (beats 95.3%)"
Ferramentas Disponíveis
Começando
get_started
- Retorna o guia de uso do servidor, fluxo de aprendizado, fluxo de autenticação e mapa de idiomas de envio
- Chame isto no início de uma sessão de prática no LeetCode
Autorização
start_leetcode_auth
- Inicia o fluxo de autenticação
- Abre o navegador para o login do LeetCode (quando possível)
- Retorna instruções estruturadas para o agente de IA guiá-lo
- Nenhum parâmetro necessário
save_leetcode_credentials
- Valida e salva suas credenciais do LeetCode
- Parâmetros:
csrftoken,session(valores de cookie que você fornece) - Faz uma chamada de API de teste para verificar as credenciais
- Armazena as credenciais com segurança para uso futuro
check_auth_status
- Verifica se você está autenticado
- Retorna o nome de usuário e a idade das credenciais
- Avisa se as credenciais podem expirar em breve
- Nenhum parâmetro necessário
Ferramentas de Problemas
get_daily_challenge
- Busca o desafio diário de codificação de hoje
get_problem
- Obtém informações detalhadas do problema pelo slug
- Parâmetros:
titleSlug(ex.: "two-sum")
search_problems
- Busca problemas por dificuldade, tags, palavras-chave
- Suporta filtragem e paginação
Ferramentas de Sessão e Aprendizado
start_problem
- Abre ou retoma uma sessão de tutoria para um problema
- Parâmetros:
titleSlug, opcionallanguage - Necessário antes das ferramentas de dicas e soluções específicas do problema
request_hint
- Avança os níveis progressivos de dicas para a sessão ativa
- Parâmetros:
titleSlug - Desbloqueia ferramentas de soluções da comunidade após o nível final de dicas
get_session_state
- Mostra o nível atual de dicas e metadados da sessão
- Parâmetros:
titleSlug
reset_session
- Redefine o progresso das dicas para um problema
- Parâmetros:
titleSlug
Ferramentas de Execução Local
runner_doctor
- Informa quais runtimes locais estão disponíveis para os idiomas suportados
run_local_tests
- Executa o código do usuário contra testes de exemplo em um sandbox de subprocesso local
- Parâmetros:
titleSlug,language,code, opcionaltimeoutMs
Ferramentas de Soluções
list_problem_solutions
- Lista artigos de solução da comunidade/editorial para um problema
- Parâmetros:
questionSlug, opcionallimit,skip,orderBy,userInput,tagSlugs - Requer que a sessão atinja o nível de dicas com soluções desbloqueadas
get_problem_solution
- Busca um artigo de solução específico
- Parâmetros:
topicId,titleSlug - Requer que a sessão atinja o nível de dicas com soluções desbloqueadas
Ferramentas de Envio
submit_solution
- Envie código e obtenha resultados em tempo real
- Parâmetros:
problemSlug,code,language - Retorna: status de aceitação, tempo de execução, memória ou caso de teste com falha
Ferramentas do Usuário
get_user_profile
- Recupera informações do perfil do usuário
get_recent_submissions
- Obtém histórico de envios com filtragem
get_recent_ac_submissions
- Obtém envios aceitos recentes
get_user_status
- Obtém status/resumo do perfil do usuário autenticado
get_problem_submission_report
- Obtém relatório de envios para um problema
get_problem_progress
- Obtém progresso de resolvidos/tentados para um problema
get_all_submissions
- Obtém histórico de envios paginado
get_user_contest_ranking
- Visualiza desempenho e classificações em competições
Modo de Aprendizado
O Interactive LeetCode MCP inclui orientação do agente de IA por meio de Prompts do MCP para criar uma melhor experiência de aprendizado.
Recursos
Configuração do Workspace: Quando o modo de aprendizado está ativo, o Claude irá:
- Criar um arquivo de workspace chamado
{problem-slug}.{extension} - Colar o template de código no arquivo
- Configurar convenções de nomenclatura adequadas (ex.: nomes de classes Java)
Modo Guiado de Aprendizado: Quando ativo, o Claude segue estas diretrizes:
- Fornece dicas progressivas (4 níveis) antes de revelar soluções
- Faz perguntas orientadoras sobre abordagem e complexidade
- Incentiva a resolução independente de problemas
- Só mostra soluções completas quando solicitado explicitamente
Fluxo de Trabalho do Problema: Orienta você pelo ciclo completo:
- Entenda o problema
- Planeje a abordagem
- Configure o workspace
- Implemente com dicas
- Otimize e analise a complexidade
- Envie e revise os resultados
Como Usar o Modo de Aprendizado
Para ativar o modo de aprendizado, diga ao Claude que você quer praticar com orientação — por exemplo, "Vamos praticar no modo de aprendizado" ou "Quero aprender two-sum com dicas." Uma vez ativo:
- Chame
get_startedpara carregar o guia de uso do servidor - Busque um problema com
get_daily_challenge,search_problemsouget_problem - Abra uma sessão com
start_problem - Peça dicas via
request_hintem vez de ir direto para as soluções - Implemente sua solução com orientação progressiva
- Solicite a solução somente após o nível final de dicas ou quando quiser comparar com uma abordagem ideal
Teste Dogfood
Para testar o servidor MCP como um cliente MCP de caixa-preta sem tráfego real do LeetCode:
npm run dogfood:local
Isso compila o servidor, inicia o build/index.js via stdio, conecta-se com o
cliente do SDK do MCP, usa um HOME isolado, serve respostas do LeetCode a partir de fixtures,
e conduz um fluxo semelhante ao de um usuário por meio de runner_doctor, start_problem,
request_hint, run_local_tests e get_session_state.
Consulte DOGFOOD_TESTING.md para o fluxo de trabalho completo e um prompt de copiar e colar para testes dogfood locais com Claude/agente.
Solução de Problemas
Erro "Não autorizado" ou "Credenciais inválidas"
- Peça ao Claude para "Autorizar com o LeetCode" para iniciar uma nova autenticação
- Certifique-se de estar logado no LeetCode no seu navegador antes de extrair os cookies
- Verifique se você copiou os valores completos dos cookies (eles podem ser bem longos)
- Confira se você não copiou espaços ou caracteres extras acidentalmente
"Credenciais expiradas"
- Os cookies do LeetCode normalmente expiram após 7 a 14 dias
- Basta pedir ao Claude para "Autorizar com o LeetCode" novamente
- Você precisará extrair cookies novos do seu navegador
Não consigo encontrar DevTools ou cookies
- Pergunte ao Claude qual navegador você está usando — o Claude fornecerá instruções específicas para o navegador
- No Chrome: Pressione F12, clique na aba "Application", expanda "Cookies"
- No Firefox: Pressione F12, clique na aba "Storage", expanda "Cookies"
- No Safari: Ative o menu de desenvolvedor primeiro (Preferências → Avançado), depois Desenvolver → Mostrar Inspetor Web
Valores copiados errados
- Certifique-se de copiar a coluna VALOR, não o nome
- Os valores devem ser strings aleatórias longas (50+ caracteres)
- Clique duas vezes no valor para selecionar tudo antes de copiar
- Se não tiver certeza, o Claude pode orientá-lo pelo processo novamente
O navegador não abre durante a autorização
- Tudo bem! Basta abrir https://leetcode.com/accounts/login/ manualmente
- O Claude ainda vai orientá-lo no processo de extração de cookies
Erro "Idioma não suportado"
- Idiomas suportados: java, python, python3, cpp, c++, javascript, js, typescript, ts
Tempo limite de envio
- O LeetCode pode estar com alto tráfego — aguarde e tente novamente
- Verifique sua conexão com a internet
Skills e Plugins
Este repositório também inclui uma skill de agente que ensina o Claude (e outros agentes de IA) a usar o servidor MCP corretamente — incluindo fluxo de sessão, invocações de prompt, modo de aprendizado e autenticação.
Plugin do Claude Code
Instale a skill diretamente como um plugin do Claude Code:
/plugin marketplace add SPerekrestova/interactive-leetcode-mcp
/plugin install interactive-leetcode-mcp@interactive-leetcode-mcp
Depois, inicie uma sessão de prática com:
/interactive-leetcode-mcp:interactive-leetcode-mcp
ClawHub (OpenClaw / Clawbot)
A skill também é publicada no ClawHub para uso com agentes compatíveis com OpenClaw.
Agradecimentos
Fork do Leetcode mcp)
Licença
MIT © SPerekrestova