LeetCode MCP 服务器是一个 模型上下文协议 (MCP) 服务器,它提供了与 LeetCode API 的无缝集成,支持高级自动化和智能交互,包括编程问题、竞赛、解决方案和用户数据。
<a href="https://glama.ai/mcp/servers/@jinzcdev/leetcode-mcp-server"> <img width="380" height="200" src="https://gips1.baidu.com/it/u=2965991958,2996503931&fm=3081&app=3081&f=PNG?w=760&h=400" alt="LeetCode Server MCP 服务器" /> </a>要通过 Smithery 自动安装 leetcode-mcp-server:
npx -y @smithery/cli install @jinzcdev/leetcode-mcp-server --client claude
# 从 npm 安装
npm install @jinzcdev/leetcode-mcp-server -g
# 或使用全局站点配置运行
npx -y @jinzcdev/leetcode-mcp-server --site global
# 使用认证运行(用于访问私有数据)
npx -y @jinzcdev/leetcode-mcp-server --site global --session <YOUR_LEETCODE_SESSION_COOKIE>
或者,你可以克隆仓库并在本地运行:
# 克隆仓库
git clone https://github.com/jinzcdev/leetcode-mcp-server.git
# 导航到项目目录
cd leetcode-mcp-server
# 构建项目
npm install && npm run build
# 运行服务器
node build/index.js --site global
在你的用户设置(JSON)文件中添加以下 JSON 配置。可以通过按 Ctrl/Cmd + Shift + P 并搜索 Preferences: Open User Settings (JSON) 来访问此文件。
{
"mcp": {
"servers": {
"leetcode": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@jinzcdev/leetcode-mcp-server"],
"env": {
"LEETCODE_SITE": "global",
"LEETCODE_SESSION": "<YOUR_LEETCODE_SESSION_COOKIE>"
}
}
}
}
}
{
"mcp": {
"servers": {
"leetcode": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@jinzcdev/leetcode-mcp-server",
"--site",
"global",
"--session",
"<YOUR_LEETCODE_SESSION_COOKIE>"
]
}
}
}
}
对于 LeetCode 中国站点,修改 --site 参数为 cn。
[!TIP]
该服务器支持以下可选环境变量:
LEETCODE_SITE:LeetCode API 端点('global' 或 'cn',默认值:'global')LEETCODE_SESSION:LeetCode 会话 cookie 以进行认证 API 访问(默认值:空)优先级说明: 当同时指定时,命令行参数优先于环境变量。例如:
- 如果设置了
LEETCODE_SITE=cn,但你运行leetcode-mcp-server --site global,则服务器将使用global。- 如果存在
LEETCODE_SESSION,但你提供--session "new_cookie",则将使用命令行会话值。
| 工具 | 全球 | CN | 是否需要认证 | 描述 |
|---|---|---|---|---|
| get_daily_challenge | ✅ | ✅ | ❌ | 获取今天的 LeetCode 每日挑战问题 |
| get_problem | ✅ | ✅ | ❌ | 获取特定 LeetCode 问题的详细信息 |
| search_problems | ✅ | ✅ | ❌ | 根据多个筛选条件搜索 LeetCode 问题 |
| 工具 | 全球 | CN | 是否需要认证 | 描述 |
|---|---|---|---|---|
| get_user_profile | ✅ | ✅ | ❌ | 获取 LeetCode 用户的资料信息 |
| get_user_contest_ranking | ✅ | ✅ | ❌ | 获取用户的竞赛排名统计 |
| get_recent_ac_submissions | ✅ | ✅ | ❌ | 获取用户的最近接受的提交 |
| get_recent_submissions | ✅ | ❌ | ❌ | 获取用户的最近提交历史 |
| get_user_status | ✅ | ✅ | ✅ | 获取当前用户的当前状态 |
| get_problem_submission_report | ✅ | ✅ | ✅ | 提供特定问题的详细提交分析 |
| get_problem_progress | ✅ | ✅ | ✅ | 获取当前用户的问题解决进度 |
| get_all_submissions | ✅ | ✅ | ✅ | 获取当前用户的提交历史 |
| 工具 | 全球 | CN | 是否需要认证 | 描述 |
|---|---|---|---|---|
| search_notes | ❌ | ✅ | ✅ | 按筛选条件搜索用户笔记 |
| get_note | ❌ | ✅ | ✅ | 根据问题 ID 获取特定问题的笔记 |
| create_note | ❌ | ✅ | ✅ | 创建特定问题的新笔记 |
| update_note | ❌ | ✅ | ✅ | 更新现有笔记的内容 |
| 工具 | 全球 | CN | 是否需要认证 | 描述 |
|---|---|---|---|---|
| list_problem_solutions | ✅ | ✅ | ❌ | 获取特定问题的社区解决方案列表 |
| get_problem_solution | ✅ | ✅ | ❌ | 获取特定解决方案的完整内容 |
get_daily_challenge - 获取今天的 LeetCode 每日挑战问题及其完整细节
get_problem - 获取特定 LeetCode 问题的详细信息
titleSlug:问题的 URL 滑块/标识符(字符串,必需)search_problems - 根据多个筛选条件搜索 LeetCode 问题
category:问题分类筛选器(字符串,可选,默认值:"all-code-essentials")tags:用于筛选问题的主题标签列表(字符串数组,可选)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:LeetCode 用户名(字符串,必需)limit:返回的最大提交数量(数字,可选,默认值:10)get_recent_ac_submissions - 获取用户的最近接受的提交
username:LeetCode 用户名(字符串,必需)limit:返回的最大提交数量(数字,可选,默认值:10)get_user_status - 获取当前用户的状况
get_problem_submission_report - 获取特定提交的详细信息
id:提交的数字 ID(数字,必需)get_problem_progress - 获取当前用户的问题解决进度
offset:跳过的问题数量(数字,可选,默认值:0)limit:返回的最大问题数量(数字,可选,默认值:100)questionStatus:按问题状态筛选(枚举:"ATTEMPTED","SOLVED",可选)difficulty:按难度级别筛选(字符串数组,可选)get_all_submissions - 获取用户提交的分页列表
limit:返回的最大提交数量(数字,默认值:20)offset:跳过的提交数量(数字,默认值:0)questionSlug:可选的问题标识符(字符串,可选)lang:编程语言筛选器(字符串,可选,仅限 CN)status:提交状态筛选器(枚举:"AC","WA",可选,仅限 CN)lastKey:用于获取下一页的分页令牌(字符串,可选,仅限 CN)search_notes - 在 LeetCode 中国上搜索用户笔记
keyword:用于筛选笔记的搜索词(字符串,可选)limit:返回的最大笔记数量(数字,可选,默认值:10)skip:跳过的笔记数量(数字,可选,默认值:0)orderBy:返回笔记的排序顺序(枚举:"ASCENDING","DESCENDING",可选,默认值:"DESCENDING")get_note - 获取特定 LeetCode 问题的用户笔记
questionId:LeetCode 问题的问题 ID(字符串,必需)limit:返回的最大笔记数量(数字,可选,默认值:10)skip:跳过的笔记数量(数字,可选,默认值:0)create_note - 为特定 LeetCode 问题创建新笔记
questionId:LeetCode 问题的问题 ID(字符串,必需)content:笔记的内容,支持 Markdown 格式(字符串,必需)summary:笔记的可选简短摘要或标题(字符串,可选)update_note - 更新现有笔记的内容或摘要
noteId:要更新的笔记的 ID(字符串,必需)content:笔记的新内容,支持 Markdown 格式(字符串,必需)summary:笔记的可选新简短摘要或标题(字符串,可选)list_problem_solutions - 获取特定问题的社区解决方案列表
questionSlug:问题的 URL 滑块/标识符(字符串,必需)limit:返回的最大解决方案数量(数字,可选,默认值:10)skip:跳过的解决方案数量(数字,可选)userInput:用于筛选解决方案的搜索词(字符串,可选)tagSlugs:用于筛选解决方案的主题标识符数组(字符串数组,可选,默认值:[])orderBy:返回解决方案的排序标准
get_problem_solution - 获取特定解决方案的完整内容
topicId:解决方案的唯一主题 ID(字符串,必需,仅限全球)slug:解决方案的唯一滑块/标识符(字符串,必需,仅限 CN)| 资源名称 | 全球 | CN | 是否需要认证 | 描述 |
|---|---|---|---|---|
| problem-categories | ✅ | ✅ | ❌ | 所有问题分类类别的列表 |
| problem-tags | ✅ | ✅ | ❌ | 算法和数据结构标签的详细集合 |
| problem-langs | ✅ | ✅ | ❌ | LeetCode 支持的所有编程语言的完整列表 |
| problem-detail | ✅ | ✅ | ❌ | 提供特定问题的详细信息 |
| problem-solution | ✅ | ✅ | ❌ | 提供特定解决方案的完整内容 |
problem-categories - 所有问题分类类别的列表
categories://problems/allproblem-tags - 算法和数据结构标签的详细集合
tags://problems/allproblem-langs - LeetCode 支持的所有编程语言的完整列表
langs://problems/allproblem-detail - 提供特定 LeetCode 问题的详细信息
problem://{titleSlug}titleSlug:问题在 LeetCode URL 中显示的标识符problem-solution - 提供特定解决方案的完整内容
solution://{topicId}
topicId:解决方案的唯一主题 IDsolution://{slug}
slug:解决方案的唯一滑块/标识符访问用户特定的数据需要 LeetCode 会话认证:
LEETCODE_SESSION cookie--session 标志或 LEETCODE_SESSION 环境变量配置服务器所有工具都返回具有以下结构的 JSON 格式的响应:
{
"content": [
{
"type": "text",
"text": "JSON_DATA_STRING"
}
]
}
JSON_DATA_STRING 包含请求的数据或失败请求的错误消息。
本项目采用 MIT 许可证。