Сервер MCP LeetCode
Сервер LeetCode MCP — это сервер протокола контекста модели (MCP) , который обеспечивает бесшовную интеграцию с API LeetCode, позволяя реализовать расширенную автоматизацию и интеллектуальное взаимодействие с задачами программирования LeetCode, конкурсами, решениями и пользовательскими данными.
Функции
🌐 Поддержка нескольких сайтов : поддержка платформ leetcode.com (глобальная) и leetcode.cn (китайская)
📊 Извлечение данных о проблемах : получение подробных описаний проблем, ограничений, примеров, официальных редакционных статей и решений, предоставленных пользователями.
👤 Доступ к данным пользователей : получение профилей пользователей, истории отправки заявок и результатов конкурсов.
🔒 Доступ к закрытым данным : создание и запрос пользовательских заметок, отслеживание хода решения проблем и анализ сведений об отправке (анализ AC/WA)
🔍 Расширенные возможности поиска : фильтрация задач по тегам, уровням сложности, категориям и ключевым словам.
📅 Доступ к ежедневным задачам : легкий доступ к ежедневным задачам
Related MCP server: mcp-server-code-assist
Предпосылки
Среда выполнения Node.js
(Необязательно) Файл cookie сеанса LeetCode для аутентифицированного доступа к API
Установка
Установка через Smithery
Чтобы автоматически установить leetcode-mcp-server для Claude Desktop через Smithery :
Ручная установка
Кроме того, вы можете клонировать репозиторий и запустить его локально:
Использование
Интеграция кода Visual Studio
Добавьте следующую конфигурацию JSON в файл настроек пользователя (JSON). Чтобы получить к нему доступ, нажмите Ctrl/Cmd + Shift + P и выполните поиск Preferences: Open User Settings (JSON) .
Вариант 1: использование переменных среды
Вариант 2: использование аргументов командной строки
Для сайта LeetCode China измените параметр --site на cn .
[!КОНЧИК]
Сервер поддерживает следующие переменные среды:
LEETCODE_SITE: конечная точка API LeetCode («глобальная» или «cn»)
LEETCODE_SESSION: сеансовый cookie LeetCode для аутентифицированного доступа к APIПримечание о приоритете : Аргументы командной строки имеют приоритет над переменными среды, если указаны оба. Например:
Если установлено
LEETCODE_SITE=cn, но вы запускаетеleetcode-mcp-server --site global, сервер будет использоватьglobal.Если
LEETCODE_SESSIONсуществует, но вы указали--session "new_cookie", будет использовано значение сеанса командной строки.
Доступные инструменты
Проблемы
Инструмент | Глобальный | КН | Требуется аутентификация | Описание |
получить_ежедневный_вызов | ✅ | ✅ | ❌ | Возвращает сегодняшнюю задачу LeetCode Daily Challenge |
получить_проблему | ✅ | ✅ | ❌ | Извлекает сведения о конкретной проблеме LeetCode |
поиск_проблем | ✅ | ✅ | ❌ | Поиск проблем LeetCode с несколькими критериями фильтрации |
Пользователи
Инструмент | Глобальный | КН | Требуется аутентификация | Описание |
получить_профиль_пользователя | ✅ | ✅ | ❌ | Извлекает информацию профиля пользователя LeetCode |
получить_рейтинг_пользователя_конкурса | ✅ | ✅ | ❌ | Получает статистику рейтинга конкурса для пользователя |
получить_последние_ac_отправления | ✅ | ✅ | ❌ | Извлекает последние принятые заявки пользователя. |
получить_последние_отправления | ✅ | ❌ | ❌ | Извлекает историю последних отправок пользователя |
получить_статус_пользователя | ✅ | ✅ | ✅ | Возвращает текущий статус текущего пользователя. |
получить_отчет_о_проблеме_отчете | ✅ | ✅ | ✅ | Предоставляет подробный анализ представленных материалов по конкретной проблеме |
получить_проблему_прогресс | ✅ | ✅ | ✅ | Возвращает прогресс решения проблемы текущего пользователя. |
получить_все_отправления | ✅ | ✅ | ✅ | Извлекает историю отправок текущего пользователя |
Примечания
Инструмент | Глобальный | КН | Требуется аутентификация | Описание |
поиск_заметок | ❌ | ✅ | ✅ | Поиск заметок пользователя с возможностью фильтрации |
получить_заметку | ❌ | ✅ | ✅ | Извлекает заметки по конкретной проблеме по идентификатору вопроса |
создать_заметку | ❌ | ✅ | ✅ | Создает новую заметку для конкретной проблемы |
обновление_заметки | ❌ | ✅ | ✅ | Обновляет существующую заметку новым содержанием. |
Решения
Инструмент | Глобальный | КН | Требуется аутентификация | Описание |
список_решений_проблем | ✅ | ✅ | ❌ | Получает список решений сообщества для определенной проблемы |
получить_решение_проблемы | ✅ | ✅ | ❌ | Извлекает полное содержание определенного решения |
Параметры инструмента
Проблемы
get_daily_challenge — получает сегодняшнюю задачу LeetCode Daily Challenge с полными подробностями
Параметры не требуются
get_problem — получает сведения о конкретной проблеме LeetCode
titleSlug: URL-адрес/идентификатор проблемы (строка, обязательно)
search_problems — Поиск проблем LeetCode на основе нескольких критериев фильтрации
category: Фильтр категории проблемы (строка, необязательно, по умолчанию: "all-code-essentials")tags: Список тегов тем для фильтрации проблем (string[], необязательно)difficulty: Фильтр уровня сложности проблемы (перечисление: «ЛЕГКИЙ», «СРЕДНИЙ», «СЛОЖНЫЙ», необязательно)searchKeywords: Ключевые слова для поиска в названиях и описаниях проблем (строка, необязательно)limit: Максимальное количество возвращаемых проблем (число, необязательно, по умолчанию: 10)offset: Количество пропускаемых задач (число, необязательно)
Пользователи
get_user_profile — извлекает информацию профиля пользователя LeetCode
username: LeetCode имя пользователя (строка, обязательно)
get_user_contest_ranking — получает информацию о рейтинге пользователя в конкурсе
username: LeetCode имя пользователя (строка, обязательно)attended: следует ли включать только те конкурсы, в которых участвовал пользователь (логическое значение, необязательное, по умолчанию: true)
get_recent_submissions — извлекает последние отправленные пользователем материалы на LeetCode Global
username: LeetCode имя пользователя (строка, обязательно)limit: Максимальное количество возвращаемых отправлений (число, необязательно, по умолчанию: 10)
get_recent_ac_submissions — извлекает последние принятые заявки пользователя
username: LeetCode имя пользователя (строка, обязательно)limit: Максимальное количество возвращаемых отправлений (число, необязательно, по умолчанию: 10)
get_user_status — получает текущий статус пользователя
Параметры не требуются
get_problem_submission_report — получает подробную информацию о конкретной отправке
id: числовой идентификатор отправки (номер, обязательно)
get_problem_progress — Получает прогресс решения проблемы текущего пользователя.
offset: Количество вопросов, которые нужно пропустить (число, необязательно, по умолчанию: 0)limit: максимальное количество вопросов для возврата (число, необязательно, по умолчанию: 100)questionStatus: Фильтр по статусу вопроса (перечисление: «ПЫТКА», «РЕШЕНО», необязательно)difficulty: Фильтр по уровням сложности (string[], необязательно)
get_all_submissions — извлекает постраничный список отправленных пользователем материалов
limit: Максимальное количество возвращаемых отправлений (число, по умолчанию: 20)offset: Количество пропущенных отправлений (число, по умолчанию: 0)questionSlug: Необязательный идентификатор проблемы (строка, необязательно)lang: Фильтр языка программирования (строка, необязательно, только CN)status: Фильтр статуса отправки (перечисление: «AC», «WA», необязательно, только CN)lastKey: токен пагинации для получения следующей страницы (строка, необязательно, только CN)
Примечания
search_notes — Поиск заметок пользователей на LeetCode China
keyword: поисковый запрос для фильтрации заметок (строка, необязательно)limit: Максимальное количество возвращаемых заметок (число, необязательно, по умолчанию: 10)skip: Количество пропускаемых заметок (число, необязательно, по умолчанию: 0)orderBy: порядок сортировки возвращаемых заметок (перечисление: "ASCENDING", "DESCENDING", необязательно, по умолчанию: "DESCENDING")
get_note — извлекает заметки пользователя для конкретной проблемы LeetCode
questionId: Идентификатор вопроса проблемы LeetCode (строка, обязательно)limit: Максимальное количество возвращаемых заметок (число, необязательно, по умолчанию: 10)skip: Количество пропускаемых заметок (число, необязательно, по умолчанию: 0)
create_note — создает новую заметку для определенной проблемы LeetCode.
questionId: Идентификатор вопроса проблемы LeetCode (строка, обязательно)content: Содержимое заметки, поддерживает формат markdown (строка, обязательно)summary: необязательное краткое резюме или название заметки (строка, необязательно)
update_note — обновляет существующую заметку новым содержимым или резюме.
noteId: идентификатор заметки для обновления (строка, обязательно)content: Новое содержимое заметки, поддерживает формат markdown (строка, обязательно)summary: необязательное новое краткое резюме или название заметки (строка, необязательно)
Решения
list_problem_solutions — извлекает список решений сообщества для определенной проблемы.
questionSlug: URL-адрес/идентификатор проблемы (строка, обязательно)limit: Максимальное количество возвращаемых решений (число, необязательно, по умолчанию: 10)skip: Количество решений для пропуска (число, необязательно)userInput: поисковый запрос для фильтрации решений (строка, необязательно)tagSlugs: Массив идентификаторов тегов для фильтрации решений (string[], необязательно, по умолчанию: [])orderBy: Критерии сортировки для возвращенных решенийГлобально: enum: "HOT", "MOST_RECENT", "MOST_VOTES", необязательно, по умолчанию: "HOT"
CN: enum: "DEFAULT", "MOST_UPVOTE", "HOT", "NEWEST_TO_OLDEST", "OLDEST_TO_NEWEST", необязательно, по умолчанию: "DEFAULT"
get_problem_solution — извлекает полное содержание определенного решения
topicId: уникальный идентификатор темы решения (строка, обязательно, только глобальный)slug: Уникальный слаг/идентификатор решения (строка, обязательно, только CN)
Доступные ресурсы
Имя ресурса | Глобальный | КН | Требуется аутентификация | Описание |
проблемные категории | ✅ | ✅ | ❌ | Список всех категорий классификации проблем |
проблемные теги | ✅ | ✅ | ❌ | Подробный набор алгоритмических и структурных тегов данных |
проблемные языки | ✅ | ✅ | ❌ | Полный список всех поддерживаемых языков программирования |
проблема-деталь | ✅ | ✅ | ❌ | Предоставляет подробную информацию о конкретной проблеме |
проблема-решение | ✅ | ✅ | ❌ | Предоставляет полное содержание конкретного решения |
URI ресурсов
problem-categories - Список всех категорий классификации проблем
URI:
categories://problems/all
problem-tags - Подробный сборник алгоритмических и структурных тегов данных
URI:
tags://problems/all
problem-langs — Полный список всех языков программирования, поддерживаемых LeetCode
URI:
langs://problems/all
problem-detail — предоставляет подробную информацию о конкретной проблеме LeetCode.
URI:
problem://{titleSlug}Параметры:
titleSlug: Идентификатор проблемы, как он отображается в URL-адресе LeetCode
проблема-решение - Предоставляет полное содержание конкретного решения
Глобальный URI:
solution://{topicId}Параметры:
topicId: уникальный идентификатор темы решения
CN URI:
solution://{slug}Параметры:
slug: Уникальный слаг/идентификатор решения
Аутентификация
Для доступа к данным пользователя требуется аутентификация сеанса LeetCode:
Войдите в LeetCode ( глобальный или китайский сайт)
Извлечь cookie-файл
LEETCODE_SESSIONиз инструментов разработчика браузераНастройте сервер с помощью флага
--sessionили переменной средыLEETCODE_SESSION
Формат ответа
Все инструменты возвращают ответы в формате JSON со следующей структурой:
JSON_DATA_STRING содержит либо запрошенные данные, либо сообщение об ошибке в случае неудачных запросов.
Лицензия
Данный проект лицензирован по лицензии MIT.