LeetCode MCP Server
Servidor MCP de LeetCode
El servidor MCP de LeetCode es un servidor de protocolo de contexto de modelo (MCP) que proporciona una integración perfecta con las API de LeetCode, lo que permite una automatización avanzada y una interacción inteligente con los problemas de programación, concursos, soluciones y datos de usuario de LeetCode.
Características
🌐 Soporte para múltiples sitios : compatible con las plataformas leetcode.com (Global) y leetcode.cn (China)
Recuperación de datos de problemas : obtenga descripciones detalladas de problemas, restricciones, ejemplos, editoriales oficiales y soluciones enviadas por los usuarios.
👤 Acceso a datos de usuario : recupera perfiles de usuario, historial de envíos y rendimiento del concurso
🔒 Acceso a datos privados : cree y consulte notas de usuario, realice un seguimiento del progreso de la resolución de problemas y analice los detalles de los envíos (análisis AC/WA)
🔍 Capacidades de búsqueda avanzada : filtre problemas por etiquetas, niveles de dificultad, categorías y palabras clave
📅 Acceso a desafíos diarios : accede fácilmente a los problemas de desafíos diarios
Related MCP server: Linear MCP Server
Prerrequisitos
Entorno de ejecución de Node.js
(Opcional) Cookie de sesión de LeetCode para acceso a API autenticado
Instalación
Instalación mediante herrería
Para instalar leetcode-mcp-server para Claude Desktop automáticamente a través de Smithery :
npx -y @smithery/cli install @jinzcdev/leetcode-mcp-server --client claudeInstalación manual
# 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>Alternativamente, puede clonar el repositorio y ejecutarlo localmente:
# Clone the repository
git clone https://github.com/jinzcdev/leetcode-mcp-server.git
# Navigate to the project directory
cd leetcode-mcp-server
# Build and run the server
npm run build && node build/index.js --site globalUso
Integración de Visual Studio Code
Agregue la siguiente configuración JSON a su archivo de configuración de usuario (JSON). Para acceder a ella, presione Ctrl/Cmd + Shift + P y busque Preferences: Open User Settings (JSON) .
Opción 1: Uso de variables de entorno
{
"mcp": {
"servers": {
"leetcode": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@jinzcdev/leetcode-mcp-server"],
"env": {
"LEETCODE_SITE": "global",
"LEETCODE_SESSION": "<YOUR_LEETCODE_SESSION_COOKIE>"
}
}
}
}
}Opción 2: Uso de argumentos de la línea de comandos
{
"mcp": {
"servers": {
"leetcode": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@jinzcdev/leetcode-mcp-server",
"--site",
"global",
"--session",
"<YOUR_LEETCODE_SESSION_COOKIE>"
]
}
}
}
}Para el sitio LeetCode China, modifique el parámetro --site a cn .
[!CONSEJO]
El servidor admite las siguientes variables de entorno:
LEETCODE_SITE: Punto final de la API de LeetCode ('global' o 'cn')
LEETCODE_SESSION: cookie de sesión de LeetCode para acceso a API autenticadoNota de prioridad : Los argumentos de la línea de comandos prevalecen sobre las variables de entorno cuando se especifican ambas. Por ejemplo:
Si se configura
LEETCODE_SITE=cnpero ejecutaleetcode-mcp-server --site global, el servidor utilizaráglobal.Si
LEETCODE_SESSIONexiste pero usted proporciona--session "new_cookie", se utilizará el valor de la sesión de la línea de comandos.
Herramientas disponibles
Problemas
Herramienta | Global | CN | Se requiere autorización | Descripción |
obtener_desafío_diario | ✅ | ✅ | ❌ | Recupera el problema del Desafío diario de LeetCode de hoy |
obtener_problema | ✅ | ✅ | ❌ | Recupera detalles de un problema específico de LeetCode |
problemas de búsqueda | ✅ | ✅ | ❌ | Busca problemas de LeetCode con múltiples criterios de filtro |
Usuarios
Herramienta | Global | CN | Se requiere autorización | Descripción |
obtener_perfil_de_usuario | ✅ | ✅ | ❌ | Recupera información de perfil de un usuario de LeetCode |
obtener_clasificación_del_concurso_de_usuarios | ✅ | ✅ | ❌ | Obtiene estadísticas de clasificación del concurso para un usuario |
obtener_envíos_ac_recientes | ✅ | ✅ | ❌ | Recupera los envíos aceptados recientes de un usuario |
obtener_envíos_recientes | ✅ | ❌ | ❌ | Recupera el historial de envíos recientes de un usuario. |
obtener_estado_del_usuario | ✅ | ✅ | ✅ | Recupera el estado actual del usuario actual |
obtener_informe_de_envío_de_problemas | ✅ | ✅ | ✅ | Proporciona un análisis detallado del envío para un problema específico. |
obtener_progreso_del_problema | ✅ | ✅ | ✅ | Recupera el progreso de resolución de problemas del usuario actual. |
obtener_todos_los_envíos | ✅ | ✅ | ✅ | Recupera el historial de envíos del usuario actual |
Notas
Herramienta | Global | CN | Se requiere autorización | Descripción |
notas de búsqueda | ❌ | ✅ | ✅ | Busca notas de usuario con opciones de filtrado |
obtener_nota | ❌ | ✅ | ✅ | Recupera notas para un problema específico por ID de pregunta |
crear_nota | ❌ | ✅ | ✅ | Crea una nueva nota para un problema específico. |
nota de actualización | ❌ | ✅ | ✅ | Actualiza una nota existente con contenido nuevo |
Soluciones
Herramienta | Global | CN | Se requiere autorización | Descripción |
lista_soluciones_de_problemas | ✅ | ✅ | ❌ | Recupera una lista de soluciones comunitarias para un problema específico |
obtener_solución_del_problema | ✅ | ✅ | ❌ | Recupera el contenido completo de una solución específica |
Parámetros de la herramienta
Problemas
get_daily_challenge : recupera el problema del desafío diario LeetCode de hoy con detalles completos
No se requieren parámetros
get_problem : recupera detalles sobre un problema específico de LeetCode
titleSlug: El slug/identificador de la URL del problema (cadena, obligatoria)
search_problems : busca problemas de LeetCode según múltiples criterios de filtro
category: filtro de categoría de problema (cadena, opcional, predeterminado: "all-code-essentials")tags: Lista de etiquetas de temas para filtrar problemas por (cadena[], opcional)difficulty: Filtro de nivel de dificultad del problema (enumeración: "FÁCIL", "MEDIO", "DIFÍCIL", opcional)searchKeywords: Palabras clave para buscar en títulos y descripciones de problemas (cadena, opcional)limit: Número máximo de problemas a devolver (número, opcional, predeterminado: 10)offset: Número de problemas a omitir (número, opcional)
Usuarios
get_user_profile : recupera información de perfil sobre un usuario de LeetCode
username: nombre de usuario de LeetCode (cadena, obligatorio)
get_user_contest_ranking : recupera la información de clasificación del concurso de un usuario.
username: nombre de usuario de LeetCode (cadena, obligatorio)attended: si se deben incluir solo los concursos en los que el usuario ha participado (booleano, opcional, predeterminado: verdadero)
get_recent_submissions : recupera los envíos recientes de un usuario en LeetCode Global
username: nombre de usuario de LeetCode (cadena, obligatorio)limit: Número máximo de envíos a devolver (número, opcional, predeterminado: 10)
get_recent_ac_submissions : recupera los envíos aceptados recientes de un usuario
username: nombre de usuario de LeetCode (cadena, obligatorio)limit: Número máximo de envíos a devolver (número, opcional, predeterminado: 10)
get_user_status - Recupera el estado del usuario actual
No se requieren parámetros
get_problem_submission_report : recupera información detallada sobre un envío específico
id: El ID de envío numérico (número, obligatorio)
get_problem_progress : recupera el progreso de resolución de problemas del usuario actual
offset: Número de preguntas a omitir (número, opcional, predeterminado: 0)limit: Número máximo de preguntas a devolver (número, opcional, predeterminado: 100)questionStatus: Filtrar por estado de la pregunta (enumeración: "INTENTADO", "RESUELTO", opcional)difficulty: Filtrar por niveles de dificultad (cadena[], opcional)
get_all_submissions - Recupera la lista paginada de los envíos del usuario
limit: Número máximo de envíos a devolver (número, predeterminado: 20)offset: Número de envíos a omitir (número, predeterminado: 0)questionSlug: Identificador de problema opcional (cadena, opcional)lang: Filtro de lenguaje de programación (cadena, opcional, solo CN)status: Filtro de estado de envío (enumeración: "AC", "WA", opcional, solo CN)lastKey: Token de paginación para recuperar la página siguiente (cadena, opcional, solo CN)
Notas
search_notes : busca notas de usuario en LeetCode China
keyword: término de búsqueda para filtrar notas (cadena, opcional)limit: Número máximo de notas a devolver (número, opcional, predeterminado: 10)skip: Número de notas a omitir (número, opcional, predeterminado: 0)orderBy: Orden de clasificación para las notas devueltas (enumeración: "ASCENDENTE", "DESCENDENTE", opcional, predeterminado: "DESCENDENTE")
get_note - Recupera notas de usuario para un problema específico de LeetCode
questionId: El ID de la pregunta del problema LeetCode (cadena, obligatoria)limit: Número máximo de notas a devolver (número, opcional, predeterminado: 10)skip: Número de notas a omitir (número, opcional, predeterminado: 0)
create_note : crea una nueva nota para un problema específico de LeetCode
questionId: El ID de la pregunta del problema LeetCode (cadena, obligatoria)content: El contenido de la nota, admite el formato Markdown (cadena, obligatorio)summary: Un resumen breve o título opcional para la nota (cadena, opcional)
update_note - Actualiza una nota existente con nuevo contenido o resumen
noteId: El ID de la nota a actualizar (cadena, obligatoria)content: El nuevo contenido para la nota, admite el formato Markdown (cadena, obligatorio)summary: Un nuevo resumen breve o título opcional para la nota (cadena, opcional)
Soluciones
list_problem_solutions : recupera una lista de soluciones de la comunidad para un problema específico
questionSlug: El slug/identificador de la URL del problema (cadena, obligatoria)limit: Número máximo de soluciones a devolver (número, opcional, predeterminado: 10)skip: Número de soluciones a omitir (número, opcional)userInput: término de búsqueda para filtrar soluciones (cadena, opcional)tagSlugs: Matriz de identificadores de etiquetas para filtrar soluciones (cadena[], opcional, predeterminado: [])orderBy: Criterios de ordenación para las soluciones devueltasGlobal: enumeración: "HOT", "MÁS_RECENT", "MÁS_VOTOS", opcional, valor predeterminado: "HOT"
CN: enumeración: "PREDETERMINADO", "MÁS VOTADOS A FAVOR", "DESDE EL MÁS NUEVO AL MÁS ANTIGUO", "DE EL MÁS ANTIGUO AL MÁS NUEVO", opcional, valor predeterminado: "PREDETERMINADO"
get_problem_solution : recupera el contenido completo de una solución específica
topicId: ID de tema único de la solución (cadena, obligatoria, solo global)slug: slug/identificador único de la solución (cadena, obligatorio, solo CN)
Recursos disponibles
Nombre del recurso | Global | CN | Se requiere autorización | Descripción |
categorías de problemas | ✅ | ✅ | ❌ | Una lista de todas las categorías de clasificación de problemas |
etiquetas de problemas | ✅ | ✅ | ❌ | Una colección detallada de etiquetas algorítmicas y de estructura de datos |
lenguaje problemático | ✅ | ✅ | ❌ | Una lista completa de todos los lenguajes de programación compatibles |
detalle del problema | ✅ | ✅ | ❌ | Proporciona detalles sobre un problema específico. |
problema-solución | ✅ | ✅ | ❌ | Proporciona el contenido completo de una solución específica. |
URI de recursos
categorías de problemas : una lista de todas las categorías de clasificación de problemas
URI:
categories://problems/all
problem-tags : una colección detallada de etiquetas algorítmicas y de estructura de datos
URI:
tags://problems/all
problem-langs : una lista completa de todos los lenguajes de programación compatibles con LeetCode
URI:
langs://problems/all
problem-detail : proporciona detalles sobre un problema específico de LeetCode
URI:
problem://{titleSlug}Parámetros:
titleSlug: Identificador del problema tal como aparece en la URL de LeetCode
Problema-solución : Proporciona el contenido completo de una solución específica.
URI global:
solution://{topicId}Parámetros:
topicId: ID de tema único de la solución
URI de CN:
solution://{slug}Parámetros:
slug: slug/identificador único de la solución
Autenticación
El acceso a datos específicos del usuario requiere la autenticación de sesión de LeetCode:
Extraer la cookie
LEETCODE_SESSIONde las herramientas para desarrolladores del navegadorConfigurar el servidor con el indicador
--sessiono la variable de entornoLEETCODE_SESSION
Formato de respuesta
Todas las herramientas devuelven respuestas en formato JSON con la siguiente estructura:
{
"content": [
{
"type": "text",
"text": "JSON_DATA_STRING"
}
]
}JSON_DATA_STRING contiene los datos solicitados o un mensaje de error para solicitudes fallidas.
Licencia
Este proyecto está licenciado bajo la licencia MIT.
Available Tools
1 toolget_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.
| Name | Required | Description | Default |
|---|---|---|---|
| topicId | Yes | Solution topicId from list_problem_solutions response |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v1.4.0- Added
get_problem_solution - Removed
get_user_contest_ranking
9 tool updates
v1.4.0- Removed
get_daily_challenge - Removed
get_problem - Removed
get_problem_solution - Removed
get_recent_ac_submissions - Removed
get_recent_submissions - Changed
get_user_contest_ranking2 fields changed- changed
Input schema / properties / attended / descriptionPrevious 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" - changed
Input schema / properties / username / descriptionPrevious value: -"LeetCode username to retrieve contest ranking information for"New value: +"LeetCode username whose contest ranking to fetch"
- Removed
get_user_profile - Removed
list_problem_solutions - Removed
search_problems
1 tool update
v1.0.0- Changed
get_daily_challenge1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
9 tool updates
- First observed
get_daily_challenge - First observed
get_problem - First observed
get_problem_solution - First observed
get_recent_ac_submissions - First observed
get_recent_submissions - First observed
get_user_contest_ranking - First observed
get_user_profile - First observed
list_problem_solutions - First observed
search_problems
TDQS
Scored across 1 tool
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.
With a single tool, naming is trivially consistent. The pattern 'get_problem_solution' follows verb_noun convention.
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.
The only tool requires a topicId from a non-existent list_problem_solutions tool, rendering it unusable. The surface is severely incomplete.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Model Context Protocol server for Studex tools, notifications, and profile integrations
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceServer that enhances the capabilities of the Cline coding agent. It provides intelligent code suggestions, reduces hallucinations, and documents the knowledge base by leveraging your project's documentation and detecting the technologies used in your codebase.15MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server that enables large language models to interact with Linear's issue tracking system, allowing management of issues, projects, teams, and other Linear resources.1935 npm1MIT
- AlicenseCqualityFmaintenanceA Model Context Protocol (MCP) server for LeetCode that enables AI assistants to access LeetCode problems, user information, and contest data.740 npm43MIT
- FlicenseNot gradedqualityNot gradedmaintenanceModel Context Protocol server that enables interaction with GitHub repositories, issues, pull requests, and search functionality through natural language.1-