返回市场
力扣-MCP服务器

力扣-MCP服务器

作者:jinzcdev71 星标更新:2025-05-31

项目介绍

LeetCode MCP 服务器

NPM 版本 GitHub 许可证 smithery 徽章 中文文档 Stars

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>

功能

  • 🌐 多站点支持:同时支持 leetcode.com(全球)和 leetcode.cn(中国)平台
  • 📊 问题数据检索:获取详细的问题描述、约束条件、示例、官方题解和用户提交的解决方案
  • 👤 用户数据访问:获取用户资料、提交历史和竞赛表现
  • 🔒 私有数据访问:创建和查询用户笔记,跟踪问题解决进度,分析提交详情(AC/WA 分析)
  • 🔍 高级搜索功能:按标签、难度级别、类别和关键词过滤问题
  • 📅 每日挑战访问:轻松访问每日挑战问题

先决条件

  1. Node.js (v20.x 或以上)
  2. (可选)LeetCode 会话 cookie 以进行认证 API 访问

安装

通过 Smithery 安装

要通过 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

使用方法

Visual Studio Code 集成

在你的用户设置(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 中国站点,修改 --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:返回解决方案的排序标准
      • 全球:枚举:"HOT","MOST_RECENT","MOST_VOTES",可选,默认值:"HOT"
      • CN:枚举:"DEFAULT","MOST_UPVOTE","HOT","NEWEST_TO_OLDEST","OLDEST_TO_NEWEST",可选,默认值:"DEFAULT"
  • get_problem_solution - 获取特定解决方案的完整内容

    • topicId:解决方案的唯一主题 ID(字符串,必需,仅限全球)
    • slug:解决方案的唯一滑块/标识符(字符串,必需,仅限 CN)

可用资源

资源名称全球CN是否需要认证描述
problem-categories所有问题分类类别的列表
problem-tags算法和数据结构标签的详细集合
problem-langsLeetCode 支持的所有编程语言的完整列表
problem-detail提供特定问题的详细信息
problem-solution提供特定解决方案的完整内容

资源 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:问题在 LeetCode URL 中显示的标识符
  • problem-solution - 提供特定解决方案的完整内容

    • 全球 URI:solution://{topicId}
      • 参数:
        • topicId:解决方案的唯一主题 ID
    • CN URI:solution://{slug}
      • 参数:
        • slug:解决方案的唯一滑块/标识符

认证

访问用户特定的数据需要 LeetCode 会话认证:

  1. 登录 LeetCode(全球中国 站点)
  2. 从浏览器开发者工具中提取 LEETCODE_SESSION cookie
  3. 使用 --session 标志或 LEETCODE_SESSION 环境变量配置服务器

响应格式

所有工具都返回具有以下结构的 JSON 格式的响应:

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

JSON_DATA_STRING 包含请求的数据或失败请求的错误消息。

许可证

本项目采用 MIT 许可证。