LeetCode MCP Server

LeetCode MCP Server

An MCP server that provides tools to interact with the LeetCode API, enabling problem fetching, code template generation, and solution execution/submission.

Category
Visit Server

README

LeetCode MCP Server

Docker Pulls Build Status License: MIT

An MCP-compatible server that exposes a set of tools to interact with the LeetCode API. This allows you to fetch problems, generate code templates, run, and submit solutions programmatically.

Overview

This project provides a simple and effective way to interface with LeetCode's services. It's built using Python and the mcp framework, exposing functionalities as tools that can be easily integrated into other applications or used for automating LeetCode tasks.

Features

  • Fetch Problem Details: Get the full description, examples, and constraints for any LeetCode problem.
  • Code Template Generation: Generate starter code for any problem in your preferred language.
  • Run Code: Test your solution against the example test cases.
  • Submit Code: Submit your solution for evaluation against the full test suite.
  • Daily Challenge: Fetch the current daily LeetCode challenge.
  • Search Problems: Search for problems with various filters like tags, difficulty, and keywords.

Getting Started

Prerequisites

  • Python 3.12+
  • Docker (for containerized deployment)
  • Git

Configuration

To interact with the LeetCode API, you need to provide your LEETCODE_SESSION and LEETCODE_CSRFTOKEN cookies.

  1. Log in to your LeetCode account in your web browser.
  2. Open the developer tools (usually by pressing F12 or Ctrl+Shift+I).
  3. Go to the Application (or Storage) tab.
  4. Find the Cookies section and select https://leetcode.com.
  5. Locate the LEETCODE_SESSION and csrftoken cookies and copy their values.

Create a .env file in the root of the project and add your credentials:

# .env
LEETCODE_SESSION=your_leetcode_session_cookie
LEETCODE_CSRFTOKEN=your_leetcode_csrftoken

Local Installation

  1. Clone the repository:

    git clone https://github.com/AHM215/leetcode-mcp.git
    cd leetcode-mcp
    
  2. Install dependencies:

    pip install uv
    uv pip install -e .
    
  3. Run the server:

    uv run python run_server.py
    

    The server will start, and you can interact with it using an MCP client.

Docker Usage

Pull from Docker Hub

You can pull the pre-built Docker image from Docker Hub.

docker pull ahm215/leetcode-mcp-server:latest

Run with Docker

To run the server using Docker, you need to pass your LeetCode credentials as environment variables.

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

Build from Source

You can also build the Docker image from the source code.

  1. Clone the repository (if you haven't already).
  2. Build the image:
    docker build -t leetcode-mcp-server .
    
  3. Run the container as shown in the "Run with Docker" section, using leetcode-mcp-server as the image name.

Claude Desktop Usage

If you want to run this server as a tool in a Claude Desktop environment, you can use the following JSON configuration. This defines a tool that runs the Docker container and passes the necessary credentials.

Note: You must replace the placeholder values for --leetcode-session and --csrftoken with your actual LeetCode cookies.

"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"
  ]
}

Available Tools (API)

The server exposes the following tools:


fetch_problem_plain_text

Fetches the plain text content of a LeetCode problem given its URL.

  • Parameters:
    • link (str): The full URL of the LeetCode problem.
  • Returns: (str) The plain text description of the problem.

generate_template

Generates a language-specific code template for a given LeetCode problem.

  • Parameters:
    • problem_slug (str): The slug of the problem from its URL (e.g., "two-sum").
    • code_lang (str): The language slug (e.g., "python3", "java", "cpp").
  • Returns: (str) The code template.

run_code

Executes code against the example test cases for a LeetCode problem.

  • Parameters:
    • problem_slug (str): The slug of the problem.
    • code_lang (str): The language slug.
    • code (str): The code to be executed.
  • Returns: (dict) The results of the execution.

submit_code

Submits code for a LeetCode problem for evaluation against the full test suite.

  • Parameters:
    • problem_slug (str): The slug of the problem.
    • code_lang (str): The language slug.
    • code (str): The code to be submitted.
  • Returns: (dict) The submission result.

get_daily_challenge

Retrieves today's LeetCode Daily Challenge problem.

  • Parameters: None
  • Returns: (dict) Details of the daily challenge problem.

get_problem

Retrieves details about a specific LeetCode problem.

  • Parameters:
    • titleSlug (str): The slug of the problem.
  • Returns: (dict) Detailed information about the problem.

search_problems

Searches for LeetCode problems based on various filters.

  • Parameters:
    • category (str, optional): The category to search in. Defaults to "all-code-essentials".
    • tags (List[str], optional): A list of tags to filter by.
    • difficulty (str, optional): The difficulty level ("EASY", "MEDIUM", "HARD").
    • searchKeywords (str, optional): Keywords to search for.
    • limit (int, optional): The number of results to return. Defaults to 10.
    • offset (int, optional): The offset for pagination. Defaults to 0.
  • Returns: (dict) A list of problems matching the criteria.

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue if you have any suggestions or find any bugs.

  1. Fork the repository.
  2. Create your feature branch (git checkout -b feature/AmazingFeature).
  3. Commit your changes (git commit -m 'Add some AmazingFeature').
  4. Push to the branch (git push origin feature/AmazingFeature).
  5. Open a pull request.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured