Interactive Leetcode MCP

Um servidor MCP que possibilita aprendizado guiado de DSA com IA no leetcode.com

Documentação

Interactive LeetCode MCP

npm version npm downloads GitHub stars MCP Registry GitHub license

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, opcional language
  • 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, opcional timeoutMs

Ferramentas de Soluções

list_problem_solutions

  • Lista artigos de solução da comunidade/editorial para um problema
  • Parâmetros: questionSlug, opcional limit, 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:

  1. Entenda o problema
  2. Planeje a abordagem
  3. Configure o workspace
  4. Implemente com dicas
  5. Otimize e analise a complexidade
  6. 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:

  1. Chame get_started para carregar o guia de uso do servidor
  2. Busque um problema com get_daily_challenge, search_problems ou get_problem
  3. Abra uma sessão com start_problem
  4. Peça dicas via request_hint em vez de ir direto para as soluções
  5. Implemente sua solução com orientação progressiva
  6. 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

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

Links