LeetCode MCP 服务器
](https://hub.docker.com/r/ahm215/leetcode-mcp-server)  
一个兼容MCP的服务器,它提供了一组工具来与LeetCode API进行交互。这使您可以编程获取题目、生成代码模板、运行并提交解决方案。
概述
这个项目提供了一种简单有效的方式来与LeetCode的服务进行交互。它是使用Python构建的,并且 mcp 框架,将功能作为工具暴露出来,这些工具可以轻松集成到其他应用程序中,或用于自动化LeetCode任务。
特点/特性
- 获取问题详情获取任何LeetCode问题的完整描述、示例和约束条件。
- 代码模板生成为任意问题生成您偏好的语言的初始代码。
- 运行代码将你的解决方案与示例测试用例进行对比测试。
- 提交代码提交您的解决方案以进行全面测试套件的评估。
- 每日挑战获取当前的每日LeetCode挑战。
- 搜索问题使用标签、难度和关键词等各种过滤器来搜索问题。
入门指南
先决条件
- Python 3.12及以上版本
- Docker(用于容器化部署)
- Git
配置
要与LeetCode API进行交互,您需要提供您的 LEETCODE_SESSION 和 LEETCODE_CSRFTOKEN cookies(网络术语,可译为“小甜饼”或直接保留原英文,根据上下文决定具体用法)。
- 登录 在您的网页浏览器中登录您的LeetCode账户。
- 打开开发者工具 (通常通过按下
F12或者Ctrl+Shift+I)。 - 前往 应用 (或者 存储) 表格(tab. 为表格的英文缩写,意为 "table")。
- 找到 Cookies(网络小甜饼/浏览器缓存文件) 选择并选取(或“选定并选择”,根据上下文,“section”在这里可能指的是某个特定的区域或部分,而“select”则是指进行选择的动作)
https://leetcode.com。 - 找到/定位
LEETCODE_SESSION和csrftoken获取cookie并复制其值。
创建一个 .env 在项目的根目录下创建文件并添加您的凭据:
# .env
LEETCODE_SESSION=your_leetcode_session_cookie
LEETCODE_CSRFTOKEN=your_leetcode_csrftoken本地安装
- 克隆仓库:
git clone https://github.com/AHM215/leetcode-mcp.git
cd leetcode-mcp- 安装依赖项:
pip install uv
uv pip install -e .- 运行服务器:
uv run python run_server.py服务器将启动,您可以使用MCP客户端与其进行交互。
Docker 使用方法
从 Docker Hub 拉取
你可以从Docker Hub拉取预构建的Docker镜像。
docker pull ahm215/leetcode-mcp-server:latest使用 Docker 运行
要使用Docker运行服务器,您需要将您的LeetCode凭据作为环境变量传递。
docker run -d \
-p 8000:8000 \
--name leetcode-mcp-server \
-e LEETCODE_SESSION="your_leetcode_session_cookie" \
-e LEETCODE_CSRFTOKEN="your_leetcode_csrftoken" \
ahm215/leetcode-mcp-server:latest从源代码构建
你也可以从源代码构建Docker镜像。
- 克隆仓库 (如果你还没做的话)。
- 构建镜像:
docker build -t leetcode-mcp-server .- 运行容器 如“使用 Docker 运行”部分所示,使用
leetcode-mcp-server作为图像名称。
Claude桌面版使用
如果你想在Claude桌面环境中将此服务器作为工具运行,可以使用以下JSON配置。该配置定义了一个工具,用于运行Docker容器并传递必要的凭据。
注: 你必须替换占位符值为 --leetcode-session 并且 --csrftoken 使用你实际的LeetCode登录信息(或cookie)。
"docker-leetcode-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ahm215/leetcode-mcp-server:v1.0.0",
"--leetcode-session",
"your_leetcode_session_cookie",
"--csrftoken",
"your_leetcode_csrftoken"
]
}可用工具(API)
服务器提供了以下工具:
______________________________________________________________________
fetch_problem_plain_text
根据给定的LeetCode问题URL,获取该问题的纯文本内容。
- 参数:
- link (str): LeetCode 问题的完整 URL。
- 返回值: (str) 问题的纯文本描述。
______________________________________________________________________
generate_template
为给定的LeetCode问题生成特定语言的代码模板。
- 参数:
- problem_slug (str): 从问题的URL中提取的问题别名(例如,“two-sum”)。 - code_lang (str): 语言标识符(例如,“python3”,“java”,“cpp”)。
- 返回: (str) 代码模板。
______________________________________________________________________
run_code
针对LeetCode问题中的示例测试用例执行代码。
- 参数:
- problem_slug (str): 问题的别名(或简短描述)。 - code_lang (str): 语言标识符(或语言别名)。 - code (str): 要执行的代码。
- 返回值: (字典)执行结果。
______________________________________________________________________
submit_code
提交一个LeetCode问题的代码以进行全面测试套件的评估。
- 参数:
- problem_slug (str): 问题的别名(或简短描述)。 - code_lang (str): 语言标识符(或语言别名)。 - code (str): 需要提交的代码。
- 返回值: (字典) 提交结果。
______________________________________________________________________
get_daily_challenge
获取今天的LeetCode每日挑战问题。
- 参数: 无
- 返回值: (字典) 每日挑战问题的详细信息。
______________________________________________________________________
get_problem
检索特定LeetCode问题的详细信息。
- 参数:
- titleSlug (str): 问题的别名(或简短描述)。
- 返回值: (字典)有关问题的详细信息。
______________________________________________________________________
search_problems
根据各种筛选条件搜索LeetCode问题。
- 参数:
- category (字符串,可选):要搜索的类别。默认为“all-code-essentials”。 - tags (可选参数,类型为 List\[str\]):一个用于过滤的标签列表。 - difficulty (字符串,可选):难度级别(“简单”,“中等”,“困难”)。 - searchKeywords (str, optional):要搜索的关键词。 - limit (int, 可选): 要返回的结果数量。默认值为10。 - offset (int, 可选): 分页的偏移量。默认值为0。
- 返回值: (字典) 符合条件的问题列表。
做出贡献
欢迎贡献!如果您有任何建议或发现任何错误,请随时提交拉取请求或打开一个议题。
- 为该仓库创建一个分支(或译为“克隆该仓库”)。
- 创建你的特性分支(
git checkout -b feature/AmazingFeature)。 - 提交您的更改(
git commit -m 'Add some AmazingFeature')。 - 推送到分支(
git push origin feature/AmazingFeature)。 - 提交一个拉取请求。
许可证
这个项目采用MIT许可证授权。详见 许可证 文件中有详细信息。
