Skip to main content
Glama
jinzcdev

LeetCode MCP Server

Сервер MCP LeetCode

Версия НПМ Лицензия GitHub значок кузнеца Китайский док Звезды

Сервер LeetCode MCP — это сервер протокола контекста модели (MCP) , который обеспечивает бесшовную интеграцию с API LeetCode, позволяя реализовать расширенную автоматизацию и интеллектуальное взаимодействие с задачами программирования LeetCode, конкурсами, решениями и пользовательскими данными.

Функции

  • 🌐 Поддержка нескольких сайтов : поддержка платформ leetcode.com (глобальная) и leetcode.cn (китайская)

  • 📊 Извлечение данных о проблемах : получение подробных описаний проблем, ограничений, примеров, официальных редакционных статей и решений, предоставленных пользователями.

  • 👤 Доступ к данным пользователей : получение профилей пользователей, истории отправки заявок и результатов конкурсов.

  • 🔒 Доступ к закрытым данным : создание и запрос пользовательских заметок, отслеживание хода решения проблем и анализ сведений об отправке (анализ AC/WA)

  • 🔍 Расширенные возможности поиска : фильтрация задач по тегам, уровням сложности, категориям и ключевым словам.

  • 📅 Доступ к ежедневным задачам : легкий доступ к ежедневным задачам

Related MCP server: Linear MCP Server

Предпосылки

  1. Среда выполнения Node.js

  2. (Необязательно) Файл cookie сеанса LeetCode для аутентифицированного доступа к API

Установка

Установка через Smithery

Чтобы автоматически установить leetcode-mcp-server для Claude Desktop через Smithery :

npx -y @smithery/cli install @jinzcdev/leetcode-mcp-server --client claude

Ручная установка

# Install from npm
npm install @jinzcdev/leetcode-mcp-server -g

# Or run with Global site configuration
npx -y @jinzcdev/leetcode-mcp-server --site global

# Run with authentication (for accessing private data)
npx -y @jinzcdev/leetcode-mcp-server --site global --session <YOUR_LEETCODE_SESSION_COOKIE>

Кроме того, вы можете клонировать репозиторий и запустить его локально:

# Clone the repository
git clone https://github.com/jinzcdev/leetcode-mcp-server.git

# Navigate to the project directory
cd leetcode-mcp-server

# Build the project
npm install && npm run build

# Run the server
node build/index.js --site global

Использование

Интеграция кода Visual Studio

Добавьте следующую конфигурацию JSON в файл настроек пользователя (JSON). Чтобы получить к нему доступ, нажмите Ctrl/Cmd + Shift + P и выполните поиск Preferences: Open User Settings (JSON) .

Вариант 1: использование переменных среды

{
  "mcp": {
    "servers": {
      "leetcode": {
        "type": "stdio",
        "command": "npx",
        "args": ["-y", "@jinzcdev/leetcode-mcp-server"],
        "env": {
          "LEETCODE_SITE": "global",
          "LEETCODE_SESSION": "<YOUR_LEETCODE_SESSION_COOKIE>"
        }
      }
    }
  }
}

Вариант 2: использование аргументов командной строки

{
  "mcp": {
    "servers": {
      "leetcode": {
        "type": "stdio",
        "command": "npx",
        "args": [
          "-y",
          "@jinzcdev/leetcode-mcp-server",
          "--site",
          "global",
          "--session",
          "<YOUR_LEETCODE_SESSION_COOKIE>"
        ]
      }
    }
  }
}

Для сайта 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:

  1. Войдите в LeetCode ( глобальный или китайский сайт)

  2. Извлечь cookie-файл LEETCODE_SESSION из инструментов разработчика браузера

  3. Настройте сервер с помощью флага --session или переменной среды LEETCODE_SESSION

Формат ответа

Все инструменты возвращают ответы в формате JSON со следующей структурой:

{
  "content": [
    {
      "type": "text",
      "text": "JSON_DATA_STRING"
    }
  ]
}

JSON_DATA_STRING содержит либо запрошенные данные, либо сообщение об ошибке в случае неудачных запросов.

Лицензия

Данный проект лицензирован по лицензии MIT.

Available Tools

1 tool
get_problem_solutionA

Retrieves full content of a community solution article (read-only, no auth). Requires topicId from list_problem_solutions. Returns article text, author, and metadata as JSON. Use list_problem_solutions first to discover solutions and obtain topicId.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicIdYesSolution topicId from list_problem_solutions response

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully covers behavioral traits: read-only, no authentication, and return format (JSON with text, author, metadata).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, front-loaded with purpose and safety, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a simple retrieval tool with one parameter and no output schema; mentions return fields and prerequisite step. Could specify error cases, but not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds value by explaining the topicId's origin from list_problem_solutions, which is not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieves full content of a community solution article' with specific verb and resource. It is unambiguous and needs no sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to first use list_problem_solutions to obtain topicId, providing clear prerequisite and sequential usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.4.0
    • Addedget_problem_solution
    • Removedget_user_contest_ranking
  2. 9 tool updatesv1.4.0
    • Removedget_daily_challenge
    • Removedget_problem
    • Removedget_problem_solution
    • Removedget_recent_ac_submissions
    • Removedget_recent_submissions
    • Changedget_user_contest_ranking2 fields changed
      • changedInput schema / properties / attended / description
        Previous value: -"Whether to include only the contests the user has participated in (true) or all contests (false); defaults to true"New value: +"true = only contests the user attended (default); false = include all contests in history"
      • changedInput schema / properties / username / description
        Previous value: -"LeetCode username to retrieve contest ranking information for"New value: +"LeetCode username whose contest ranking to fetch"
    • Removedget_user_profile
    • Removedlist_problem_solutions
    • Removedsearch_problems
  3. 1 tool updatev1.0.0
    • Changedget_daily_challenge1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  4. 9 tool updates
    • First observedget_daily_challenge
    • First observedget_problem
    • First observedget_problem_solution
    • First observedget_recent_ac_submissions
    • First observedget_recent_submissions
    • First observedget_user_contest_ranking
    • First observedget_user_profile
    • First observedlist_problem_solutions
    • First observedsearch_problems

TDQS

A4.2/5.0
Disambiguation4/5

Only one tool exists, so there is no ambiguity with other tools. However, the tool's dependency on a missing listing tool could cause confusion for agents trying to use it.

Naming Consistency5/5

With a single tool, naming is trivially consistent. The pattern 'get_problem_solution' follows verb_noun convention.

Tool Count1/5

A single tool for a LeetCode server is far too few. Expected operations (list problems, get problem details, submit solutions, etc.) are missing, making the surface extremely limited.

Completeness1/5

The only tool requires a topicId from a non-existent list_problem_solutions tool, rendering it unusable. The surface is severely incomplete.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jinzcdev/leetcode-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server