https://github.com/jinzcdev/leetcode-mcp-server
MCP server for LeetCode API, enabling advanced automation and intelligent interaction with LeetCode problems, contests, solutions and user data.
https://github.com/jinzcdev/leetcode-mcp-server
algorithm leetcode mcp mcp-server
Last synced: 22 days ago
JSON representation
MCP server for LeetCode API, enabling advanced automation and intelligent interaction with LeetCode problems, contests, solutions and user data.
- Host: GitHub
- URL: https://github.com/jinzcdev/leetcode-mcp-server
- Owner: jinzcdev
- License: mit
- Created: 2025-04-12T18:13:47.000Z (28 days ago)
- Default Branch: main
- Last Pushed: 2025-04-13T17:12:40.000Z (27 days ago)
- Last Synced: 2025-04-13T18:27:48.333Z (27 days ago)
- Topics: algorithm, leetcode, mcp, mcp-server
- Language: TypeScript
- Homepage:
- Size: 85 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-devops-mcp-servers - jinzcdev/leetcode-mcp-server - MCP server enabling automated access to LeetCode's programming problems, solutions, submissions and public data with optional authentication for user-specific features (e.g., notes), supporting both `leetcode.com` (global) and `leetcode.cn` (China) sites. (CI/CD & DevOps Pipelines / 🤖 Coding Agents)
- awesome-devops-mcp-servers - jinzcdev/leetcode-mcp-server - MCP server enabling automated access to LeetCode's programming problems, solutions, submissions and public data with optional authentication for user-specific features (e.g., notes), supporting both `leetcode.com` (global) and `leetcode.cn` (China) sites. (CI/CD & DevOps Pipelines / 🤖 Coding Agents)
README
# LeetCode MCP Server
[](https://www.npmjs.com/package/@jinzcdev/leetcode-mcp-server)
[](https://img.shields.io/github/license/jinzcdev/leetcode-mcp-server.svg)
[](https://github.com/jinzcdev/leetcode-mcp-server)
[](https://smithery.ai/server/@jinzcdev/leetcode-mcp-server)The LeetCode MCP Server is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) server that provides seamless integration with LeetCode APIs, enabling advanced automation and intelligent interaction with LeetCode's programming problems, contests, solutions, and user data.
## Features
- **Multi-site Support**: Supports both leetcode.com and leetcode.cn platforms
- **Problem Data Retrieval**: Obtain detailed problem descriptions, constraints, examples, and solution approaches
- **User Data Access**: Retrieve user profiles, submission history, and contest performance
- **Advanced Search Capabilities**: Filter problems by tags, difficulty levels, and categories
- **Daily Challenge Tracking**: Easily access daily challenge problems## Prerequisites
1. Node.js runtime environment
2. (Optional) LeetCode session cookie for authenticated API access## Installation
### Installing via Smithery
To install leetcode-mcp-server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@jinzcdev/leetcode-mcp-server):
```bash
npx -y @smithery/cli install @jinzcdev/leetcode-mcp-server --client claude
```### Manual Installation
```bash
# Install from npm
npm install @jinzcdev/leetcode-mcp-server -g# Or run with Global site configuration
npx -y @jinzcdev/leetcode-mcp-server --site global# Run with authentication (for accessing private data)
npx -y @jinzcdev/leetcode-mcp-server --site global --session
```Alternatively, you can clone the repository and run it locally:
```bash
# Clone the repository
git clone https://github.com/jinzcdev/leetcode-mcp-server.git# Navigate to the project directory
cd leetcode-mcp-server# Build and run the server
npm run build && node build/index.js --site global
```## Usage
### Visual Studio Code Integration
Add the following JSON configuration to your User Settings (JSON) file Code. Access this by pressing `Ctrl/Cmd + Shift + P` and searching for `Preferences: Open User Settings (JSON)`.
```json
{
"mcp": {
"servers": {
"leetcode": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@jinzcdev/leetcode-mcp-server",
"--site",
"global",
"--session",
""
]
}
}
}
}
```For LeetCode China site, modify the `--site` parameter to `cn`.
## Environment Variables
The server supports the following environment variables:
- `LEETCODE_SITE`: LeetCode API endpoint ('global' or 'cn')
- `LEETCODE_SESSION`: LeetCode session cookie for authenticated API access**Priority Note**:
Command-line arguments take precedence over environment variables when both are specified. For example:- If `LEETCODE_SITE=cn` is set but you run `leetcode-mcp-server --site global`, the server will use `global`.
- If `LEETCODE_SESSION` exists but you provide `--session "new_cookie"`, the command-line session value will be used.## Tools
The server provides a comprehensive suite of tools categorized by functionality and platform compatibility.
### Problem Tools
Available on both Global and China sites, with optional authentication.
| Tool Name | Description | Parameters |
| ---------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **leetcode_daily_challenge** | Retrieves today's LeetCode Daily Challenge with complete metadata | None |
| **leetcode_problem** | Retrieves comprehensive details for a specified LeetCode problem | `titleSlug` (string, required): Problem URL identifier (e.g., 'two-sum') |
| **leetcode_search_problems** | Executes filtered searches across LeetCode problems | `category` (string, optional): Problem classification
`tags` (string[], optional): Topic tags filter
`difficulty` (string, optional): Problem complexity level ('EASY', 'MEDIUM', 'HARD')
`limit` (number, optional): Maximum results count
`offset` (number, optional): Pagination offset |### User Tools
Provides user-specific data across both platforms.
| Tool Name | Description | Parameters |
| --------------------------------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| **leetcode_user_profile** | Retrieves complete profile information for a LeetCode user | `username` (string, required): LeetCode username |
| **leetcode_user_contest_ranking** | Obtains contest ranking statistics for a user | `username` (string, required): LeetCode username
`attended` (boolean, optional): Filter for attended contests only |### Global Site-Specific User Tools
Exclusive to leetcode.com platform.
| Tool Name | Description | Parameters |
| ---------------------------------- | ------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| **leetcode_recent_submissions** | Retrieves a user's recent submission history (Global) | `username` (string, required): LeetCode username
`limit` (number, optional): Results limit |
| **leetcode_recent_ac_submissions** | Retrieves a user's recent accepted submissions (Global) | `username` (string, required): LeetCode username
`limit` (number, optional): Results limit |### China Site-Specific User Tools
Exclusive to leetcode.cn platform.
| Tool Name | Description | Parameters |
| --------------------------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| **leetcode_user_recent_ac_submissions** | Retrieves recent accepted submissions (China) | `username` (string, required): LeetCode China username
`limit` (number, optional): Results limit |### Authenticated Common Tools
Requires session authentication, available on both platforms.
| Tool Name | Description | Parameters |
| -------------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **leetcode_user_status** | Retrieves authenticated user's current status | None |
| **leetcode_problem_submission_detail** | Provides detailed submission analysis | `id` (number, required): Submission ID |
| **leetcode_user_progress_questions** | Tracks user's problem-solving progress | `offset` (number, required): Pagination offset
`limit` (number, required): Results limit
`questionStatus` (enum, optional): 'ATTEMPTED' or 'SOLVED' filter
`difficulty` (string[], optional): Complexity level filter |### Global Site-Specific Authenticated Tools
Authenticated tools exclusive to leetcode.com.
| Name | Description | Parameters |
| --------------------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **leetcode_user_all_submissions** | Retrieves paginated submission history (Global) | `limit` (number, required): Results limit
`offset` (number, required): Pagination offset
`questionSlug` (string, optional): Problem identifier filter |### China Site-Specific Authenticated Tools
Authenticated tools exclusive to leetcode.cn.
| Tool Name | Description | Parameters |
| --------------------------------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **leetcode_user_all_submissions** | Retrieves comprehensive submission history (China) | `limit` (number, required): Results limit
`offset` (number, required): Pagination offset
`questionSlug` (string, optional): Problem identifier
`lang` (string, optional): Programming language filter
`status` (string, optional): Submission status filter
`lastKey` (string, optional): Pagination token |## Resources
The server provides reference resources for platform metadata access via URI endpoints.
| Resource Name | Description | URI |
| ---------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------- |
| **problem-categories** | Complete problem classification categories | `leetcode://problems/categories/all` |
| **problem-tags** | Algorithmic and data structure tags collection | `leetcode://problems/tags/all` |
| **problem-langs** | Supported programming languages list | `leetcode://problems/langs/all` |
| **solution-article** | A LeetCode solution article | global: `leetcode://solutions/{topicId}`
cn: `leetcode://solutions/{slug}` |## Authentication
Advanced features require LeetCode session authentication:
1. Log in to LeetCode ([Global](https://leetcode.com) or [China](https://leetcode.cn) site)
2. Extract `LEETCODE_SESSION` cookie from browser developer tools
3. Configure server with `--session` flag or `LEETCODE_SESSION` environment variable## Response Format
All tools return JSON-formatted responses with the following structure:
```json
{
"content": [
{
"type": "text",
"text": "JSON_DATA_STRING"
}
]
}
```The `JSON_DATA_STRING` contains either the requested data or an error message for failed requests.
## License
This project is licensed under the MIT License.