LeetCode MCP Server 是一个 Model Context Protocol(MCP)服务器,旨在提供与 LeetCode APIs 的无缝集成,从而实现对 LeetCode 编程问题、竞赛、题解和用户数据的高级自动化与智能交互。
主要能力
- 多站点支持:同时支持 leetcode.com(全球站)和 leetcode.cn(中国站)平台。
- 双重传输模式:可作为 stdio 进程(默认)运行,也可作为 Streamable HTTP 服务器运行,便于基于 Web 的集成。
- 题目数据检索:获取详细的题目描述、约束、示例、官方题解和用户提交的题解。
- 用户数据访问:检索用户资料、提交历史和竞赛表现。
- 私有数据访问:创建和查询用户笔记,跟踪解题进度,分析提交详情(AC/WA 分析)。
- 高级搜索能力:按标签、难度级别、类别和关键词过滤题目。
- 每日挑战访问:轻松访问每日挑战题目。
使用方式 运行环境要求:Node.js(v20.x 或以上版本);可选:用于认证 API 访问的 LeetCode 会话 Cookie。也可以克隆仓库并在本地运行。
服务器支持两种传输模式:
命令行选项 环境变量:
- LEETCODE_SITE:LeetCode API 端点(global 或 cn,默认:global)
- LEETCODE_SESSION:用于认证 API 访问的 LeetCode 会话 Cookie(默认:空)
- LEETCODE_TRANSPORT:传输模式(stdio 或 http,默认:stdio)
- LEETCODE_HTTP_PORT:使用 Streamable HTTP 时的 HTTP 服务器端口(默认:3000)
- LEETCODE_HTTP_HOST:使用 Streamable HTTP 时的 HTTP 服务器主机(默认:127.0.0.1)
- LEETCODE_HTTP_ENDPOINT:使用 Streamable HTTP 时的 HTTP 端点路径(默认:/mcp) 优先级说明:当同时指定时,命令行参数优先于环境变量。例如:如果设置了 LEETCODE_SITE=cn 但运行 leetcode-mcp-server --site global,服务器将使用 global;如果存在 LEETCODE_SESSION 但提供了 --session "new_cookie",将使用命令行会话值。
MCP 客户端配置(stdio):在 MCP 客户端配置文件中添加服务器条目。对于 LeetCode 中国站,将 --site 参数修改为 cn。确切的配置文件位置和 JSON 结构可能因 MCP 客户端而异。某些客户端使用 mcp.servers 包装或 type 字段——请参考客户端文档并相应调整示例。
MCP 客户端配置(Streamable HTTP):首先以 HTTP 模式启动服务器,然后将 MCP 客户端连接到正在运行的服务器。要使用认证端点,请在启动服务器时传递会话 Cookie。某些 MCP 客户端使用 "type": "http" 或 "type": "streamableHttp" 以及 url 字段。请参考客户端文档了解确切的 HTTP 传输配置格式。
可用工具
- get_daily_challenge:获取今天的 LeetCode 每日挑战题目及完整详情。无参数。
- get_problem:获取特定 LeetCode 题目的详情。参数:titleSlug(题目的 URL slug/标识符,字符串,必需)。
- search_problems:根据多个过滤条件搜索 LeetCode 题目。参数:category(题目类别过滤,字符串,可选,默认 "all-code-essentials")、tags(用于过滤题目的主题标签列表,string[],可选)、difficulty(题目难度级别过滤,枚举:"EASY"、"MEDIUM"、"HARD",可选)、searchKeywords(在题目标题和描述中搜索的关键词,字符串,可选)、limit(返回的最大题目数,数字,可选,默认 10)、offset(跳过的题目数,数字,可选)。
- get_user_profile:获取 LeetCode 用户的资料信息。参数:username(LeetCode 用户名,字符串,必需)。
- get_user_contest_ranking:获取用户的竞赛排名信息。参数:username(LeetCode 用户名,字符串,必需)、attended(是否仅包含用户参加过的竞赛,布尔值,可选,默认 true)。
- get_recent_submissions:获取用户在 LeetCode Global 上的最近提交。参数:username(字符串,必需)、limit(返回的最大提交数,数字,可选,默认 10)。
- get_recent_ac_submissions:获取用户最近的已接受提交。参数:username(字符串,必需)、limit(数字,可选,默认 10)。
- get_user_status:获取当前用户的状态。无参数。
- get_problem_submission_report:获取特定提交的详细信息。参数:id(数字提交 ID,数字,必需)。
- get_problem_progress:获取当前用户的解题进度。参数:offset(跳过的问题数,数字,可选,默认 0)、limit(返回的最大问题数,数字,可选,默认 100)、questionStatus(按问题状态过滤,枚举:"ATTEMPTED"、"SOLVED",可选)、difficulty(按难度级别过滤,string[],可选)。
- get_all_submissions:获取用户提交的分页列表。参数:limit(数字,默认 20)、offset(数字,默认 0)、questionSlug(可选题目标识符,字符串,可选)、lang(编程语言过滤,字符串,可选,仅中国站)、status(提交状态过滤,枚举:"AC"、"WA",可选,仅中国站)、lastKey(用于检索下一页的分页令牌,字符串,可选,仅中国站)。
- run_code:运行特定问题的代码并等待完成(需要认证)。参数:titleSlug(字符串,必需)、lang(编程语言,字符串枚举,必需)、typedCode(要运行的源代码,字符串,必需)、dataInput(要运行的自定义输入,字符串,可选)、timeoutMs(轮询超时毫秒数,数字,可选,默认 120000)、pollIntervalMs(轮询间隔毫秒数,数字,可选,默认 1500)。
- submit_solution:提交特定问题的代码并等待完成(需要认证)。参数:titleSlug(字符串,必需)、lang(字符串枚举,必需)、typedCode(要提交的源代码,字符串,必需)、timeoutMs(数字,可选,默认 120000)、pollIntervalMs(数字,可选,默认 1500)。
- search_notes:在 LeetCode China 上搜索用户笔记。参数:keyword(用于过滤笔记的搜索词,字符串,可选)、limit(数字,可选,默认 10)、skip(数字,可选,默认 0)、orderBy(排序顺序,枚举:"ASCENDING"、"DESCENDING",可选,默认 "DESCENDING")。
- get_note:获取特定 LeetCode 题目的用户笔记。参数:questionId(题目的问题 ID,字符串,必需)、limit(数字,可选,默认 10)、skip(数字,可选,默认 0)。
- create_note:为特定 LeetCode 题目创建新笔记。参数:questionId(字符串,必需)、content(笔记内容,支持 markdown 格式,字符串,必需)、summary(可选的简短摘要或标题,字符串,可选)。
- update_note:用新内容或摘要更新现有笔记。参数:noteId(要更新的笔记 ID,字符串,必需)、content(笔记的新内容,支持 markdown 格式,字符串,必需)、summary(可选的新简短摘要或标题,字符串,可选)。
- list_problem_solutions:获取特定题目的社区题解列表。参数:questionSlug(题目的 URL slug/标识符,字符串,必需)、limit(数字,可选,默认 10)、skip(数字,可选)、userInput(用于过滤题解的搜索词,字符串,可选)、tagSlugs(用于过滤题解的标签标识符数组,string[],可选,默认 [])、orderBy(返回题解的排序条件:Global 枚举 "HOT"、"MOST_RECENT"、"MOST_VOTES",可选,默认 "HOT";CN 枚举 "DEFAULT"、"MOST_UPVOTE"、"HOT"、"NEWEST_TO_OLDEST"、"OLDEST_TO_NEWEST",可选,默认 "DEFAULT")。
- get_problem_solution:获取特定题解的完整内容。参数:topicId(题解的唯一主题 ID,字符串,必需,仅 Global)、slug(题解的唯一 slug/标识符,字符串,必需,仅 CN)。
可用资源
- problem-categories:所有题目分类的列表。