Interactive LeetCode MCP
Provides tools for practicing LeetCode problems, including problem search, submission, user profile retrieval, and learning-guided hints.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Interactive LeetCode MCP practice two-sum problem"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Interactive LeetCode MCP
Current project is under active development and may not work perfectly
Features
🔐 AI-guided authentication - Claude walks you through one-time credential setup
🎓 Learning-guided mode - AI provides hints before solutions to maximize learning
📝 Solution submission - Submit code and get instant results
💬 Conversational workflow - Practice naturally with Claude Code
🌍 Multi-language support - Java, Python, C++, JavaScript, TypeScript, and more
📊 Detailed feedback - Runtime stats, memory usage, failed test cases
📚 Problem data - Descriptions, constraints, examples, editorial solutions
👤 User tracking - Profile data, submission history, contest rankings
Related MCP server: LeetCode MCP Server
Prerequisites
Node.js v20.x or above
LeetCode account
Any modern web browser (Chrome, Firefox, Safari, Edge, etc.)
Installation
Via NPM (Recommended)
npm install -g @sperekrestova/interactive-leetcode-mcp
interactive-leetcode-mcp --version
interactive-leetcode-mcp --helpYou can also run the package without installing it globally:
npx -y @sperekrestova/interactive-leetcode-mcp@latest --versionFrom Source
git clone https://github.com/SPerekrestova/interactive-leetcode-mcp.git
cd interactive-leetcode-mcp
npm install && npm run build
npm linkFresh Environment Smoke Test
Use this to verify the published npm package from a clean directory without any LeetCode credentials:
mkdir leetcode-mcp-smoke
cd leetcode-mcp-smoke
npm init -y
npm install @sperekrestova/interactive-leetcode-mcp
npx --no-install interactive-leetcode-mcp --version
npx --no-install interactive-leetcode-mcp --helpThose commands confirm that Node can install the package and expose the CLI binary. For actual MCP server validation, use an integration test that connects over stdio and completes the MCP handshake.
Configuration
Claude Code & Claude Desktop
You can execute this command in CLI
claude mcp add --transport stdio leetcode -- npx -y @sperekrestova/interactive-leetcode-mcp@latestOr add to your MCP configuration file (~/.config/claude-code/mcp.json) or (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"leetcode": {
"command": "npx",
"args": ["-y", "@sperekrestova/interactive-leetcode-mcp@latest"]
}
}
}Local build
{
"mcpServers": {
"leetcode": {
"command": "node",
"args": ["/path/to/this/project/interactive-leetcode-mcp/build/index.js"]
}
}
}Quick Start
1. Authorize with LeetCode
You: "Authorize with LeetCode"
Claude: [Opens LeetCode in your browser and guides you through the process]
Claude: "Please log in to your account. Once logged in, I'll walk you through
getting two cookie values we need. First, press F12 to open DevTools..."
You: [Follows Claude's step-by-step guidance]
You: "Here are my cookies: csrftoken is abc123... and LEETCODE_SESSION is xyz789..."
Claude: "✓ Perfect! Your credentials are validated and saved. Welcome back, johndoe!"2. Practice a Problem
You: "I want to practice two-sum"
Claude: [Fetches problem and creates working file]3. Get Help When Stuck
You: "Give me a hint"
Claude: [Provides contextual guidance based on your code]4. Submit Your Solution
You: "Submit my solution"
Claude: "🎉 Accepted! Runtime: 2ms (beats 95.3%)"Available Tools
Getting Started
get_started
Returns the server usage guide, learning flow, authentication flow, and submission language map
Call this at the start of a LeetCode practice session
Authorization
start_leetcode_auth
Initiates authentication flow
Opens browser to LeetCode login (when possible)
Returns structured instructions for AI agent to guide you
No parameters required
save_leetcode_credentials
Validates and saves your LeetCode credentials
Parameters:
csrftoken,session(cookie values you provide)Makes test API call to verify credentials
Securely stores credentials for future use
check_auth_status
Checks if you're authenticated
Returns username and credential age
Warns if credentials may expire soon
No parameters required
Problem Tools
get_daily_challenge
Fetch today's daily coding challenge
get_problem
Get detailed problem information by slug
Parameters:
titleSlug(e.g., "two-sum")
search_problems
Search problems by difficulty, tags, keywords
Supports filtering and pagination
Session and Learning Tools
start_problem
Opens or resumes a tutoring session for a problem
Parameters:
titleSlug, optionallanguageRequired before problem-specific hint and solution tools
request_hint
Advances progressive hint levels for the active session
Parameters:
titleSlugUnlocks community solution tools after the final hint level
get_session_state
Shows current hint level and session metadata
Parameters:
titleSlug
reset_session
Resets hint progress for a problem
Parameters:
titleSlug
Local Runner Tools
runner_doctor
Reports which local runtimes are available for supported languages
run_local_tests
Runs user code against sample tests in a local subprocess sandbox
Parameters:
titleSlug,language,code, optionaltimeoutMs
Solution Tools
list_problem_solutions
Lists community/editorial solution articles for a problem
Parameters:
questionSlug, optionallimit,skip,orderBy,userInput,tagSlugsRequires the session to reach the solution-unlocked hint level
get_problem_solution
Fetches a specific solution article
Parameters:
topicId,titleSlugRequires the session to reach the solution-unlocked hint level
Submission Tools
submit_solution
Submit code and get real-time results
Parameters:
problemSlug,code,languageReturns: acceptance status, runtime, memory, or failed test case
User Tools
get_user_profile
Retrieve user profile information
get_recent_submissions
Get submission history with filtering
get_recent_ac_submissions
Get recent accepted submissions
get_user_status
Get authenticated user's status/profile summary
get_problem_submission_report
Get submission report for one problem
get_problem_progress
Get solved/attempted progress for a problem
get_all_submissions
Get paginated submission history
get_user_contest_ranking
View contest performance and rankings
Learning Mode
The Interactive LeetCode MCP includes AI agent guidance through MCP Prompts to create a better learning experience.
Features
Workspace Setup: When learning mode is active, Claude will:
Create a workspace file named
{problem-slug}.{extension}Paste the code template into the file
Set up proper naming conventions (e.g., Java class names)
Learning-Guided Mode: When active, Claude follows these guidelines:
Provides progressive hints (4 levels) before revealing solutions
Asks guiding questions about approach and complexity
Encourages independent problem-solving
Only shows complete solutions when explicitly requested
Problem Workflow: Guides you through the complete cycle:
Understand the problem
Plan the approach
Set up workspace
Implement with hints
Optimize and analyze complexity
Submit and review results
How to Use Learning Mode
To activate learning mode, tell Claude you want to practice with guidance — for example, "Let's practice in learning mode" or "I want to learn two-sum with hints." Once active:
Call
get_startedto load the server's usage guideFetch a problem with
get_daily_challenge,search_problems, orget_problemOpen a session with
start_problemAsk for hints via
request_hintrather than jumping straight to solutionsImplement your solution with progressive guidance
Request the solution only after the final hint level or when you want to compare with an optimal approach
Dogfood Testing
To test the MCP server as a black-box MCP client without live LeetCode traffic:
npm run dogfood:localThis builds the server, spawns build/index.js over stdio, connects with the
MCP SDK client, uses an isolated HOME, serves LeetCode responses from fixtures,
and drives a user-like flow through runner_doctor, start_problem,
request_hint, run_local_tests, and get_session_state.
See DOGFOOD_TESTING.md for the full workflow and a copy-paste prompt for local Claude/agent dogfood testing.
Troubleshooting
"Not authorized" or "Invalid credentials" error
Ask Claude to "Authorize with LeetCode" to start fresh authentication
Make sure you're logged into LeetCode in your browser before extracting cookies
Verify you copied the complete cookie values (they can be very long)
Check that you didn't accidentally copy extra spaces or characters
"Credentials have expired"
LeetCode cookies typically expire after 7-14 days
Simply ask Claude to "Authorize with LeetCode" again
You'll need to extract fresh cookies from your browser
Can't find DevTools or cookies
Ask Claude which browser you're using - Claude will provide browser-specific instructions
In Chrome: Press F12, click "Application" tab, expand "Cookies"
In Firefox: Press F12, click "Storage" tab, expand "Cookies"
In Safari: Enable Developer menu first (Preferences → Advanced), then Develop → Show Web Inspector
Copied wrong values
Make sure you're copying the VALUE column, not the name
The values should be long random strings (50+ characters)
Double-click the value to select all of it before copying
If you're unsure, Claude can guide you through the process again
Browser doesn't open during authorization
That's okay! Just open https://leetcode.com/accounts/login/ manually
Claude will still guide you through the cookie extraction process
"Unsupported language" error
Supported languages: java, python, python3, cpp, c++, javascript, js, typescript, ts
Submission timeout
LeetCode may be experiencing high traffic - wait and retry
Check your internet connection
Skills & Plugins
This repo also ships an agent skill that teaches Claude (and other AI agents) how to use the MCP server correctly — including session flow, prompt invocations, learning mode, and authentication.
Claude Code Plugin
Install the skill directly as a Claude Code plugin:
/plugin marketplace add SPerekrestova/interactive-leetcode-mcp
/plugin install interactive-leetcode-mcp@interactive-leetcode-mcpThen start a practice session with:
/interactive-leetcode-mcp:interactive-leetcode-mcpClawHub (OpenClaw / Clawbot)
The skill is also published on ClawHub for use with OpenClaw-compatible agents.
Acknowledgements
Forked from Leetcode mcp)
License
MIT © SPerekrestova
Links
Available Tools
24 toolscheck_auth_statusA
Checks if LeetCode credentials exist and are still valid. Returns authentication status, username if authenticated, and credential age information.
Inputs: no named parameters.
get_all_submissionsA
Retrieves a paginated list of the current user's submissions for a specific problem or all problems on LeetCode Global, with detailed submission metadata (requires authentication)
Inputs: limit, offset, questionSlug.
get_daily_challengeA
Retrieves today's LeetCode Daily Challenge problem with complete details, including problem description, constraints, and examples. After fetching, invoke the leetcode_learning_mode and leetcode_problem_workflow prompts before helping the user work on it.
Inputs: no named parameters.
get_problemA
Retrieves details about a specific LeetCode problem, including its description, examples, constraints, and related information. After fetching, invoke the leetcode_learning_mode and leetcode_problem_workflow prompts before helping the user work on it.
Inputs: titleSlug (required).
get_problem_progressA
Retrieves the current user's problem-solving status with filtering options, including detailed solution history for attempted or solved questions (requires authentication)
Inputs: limit, offset, difficulty, questionStatus.
get_problem_solutionA
Retrieves the full content of a specific community solution. GATED: rejects with HINT_LEVEL_TOO_LOW unless the session for titleSlug has reached the maximum hint level. Pass the topicId returned by list_problem_solutions.
Inputs: topicId (required), titleSlug (required).
get_problem_submission_reportA
Retrieves detailed information about a specific LeetCode submission by its ID, including source code, runtime stats, and test results (requires authentication)
Inputs: id (required).
get_recent_ac_submissionsA
Retrieves a user's recent accepted (AC) submissions on LeetCode Global, focusing only on successfully completed problems
Inputs: username (required), limit.
get_recent_submissionsB
Retrieves a user's recent submissions on LeetCode Global, including both accepted and failed submissions with detailed metadata
Inputs: username (required), limit.
get_session_stateA
Returns the persisted session for a problem, or null if the user has not called start_problem for it. Useful for restoring context after a restart.
Inputs: titleSlug (required).
get_startedA
Returns the usage guide for this MCP server: which prompts to invoke and when, session flow, auth flow, and submission language map. Call this at the start of any LeetCode practice session.
Inputs: no named parameters.
get_user_contest_rankingA
Retrieves a user's contest ranking information on LeetCode, including overall ranking, participation history, and performance metrics across contests
Inputs: username (required), attended.
get_user_profileB
Retrieves profile information about a LeetCode user, including user stats, solved problems, and profile details
Inputs: username (required).
get_user_statusA
Retrieves the current user's status on LeetCode, including login status, premium membership details, and user information (requires authentication)
Inputs: no named parameters.
list_problem_solutionsA
Retrieves community solution metadata (topicIds) for a problem. GATED: rejects with HINT_LEVEL_TOO_LOW unless the active session for the slug has reached the maximum hint level. Drive the user through request_hint until that level is reached.
Inputs: questionSlug (required), skip, limit, orderBy, +2 more.
request_hintA
Advances the hint level for an active session and returns the next hint. Levels: 1 clarification → 2 approach → 3 implementation sketch → 4 solution unlock. The community-solutions tools become callable only after this has been driven to level 4.
Inputs: titleSlug (required).
reset_sessionA
Resets the tutoring session for a problem back to hint level 0. Use when the user wants to re-attempt the problem from scratch.
Inputs: titleSlug (required).
run_local_testsA
Runs the user's code locally in an isolated subprocess, captures stdout / stderr / exit code, and updates the session's lastLocalRunPassed flag. Use this in the inner loop instead of submit_solution — it costs no LeetCode submission and turns around in seconds. The agent is responsible for including test invocations (e.g. print(Solution().twoSum([2,7,11,15], 9))) in the code passed in. Currently runnable: python3, go, and java.
Inputs: code (required), language (required), titleSlug (required), timeoutMs.
runner_doctorA
Reports which language runtimes (python3, go, java) and OS sandbox tools (bwrap, firejail, sandbox-exec) are detected on this host. Useful for diagnosing 'LANGUAGE_RUNTIME_NOT_FOUND' errors and confirming whether run_local_tests will be sandboxed.
Inputs: no named parameters.
save_leetcode_credentialsA
Validates and saves LeetCode credentials provided by the user. Validates credentials by making a test API call to LeetCode, then securely stores them for future authenticated requests.
Inputs: session (required), csrftoken (required).
search_problemsA
Searches for LeetCode problems based on multiple filter criteria including categories, tags, difficulty levels, and keywords, with pagination support
Inputs: tags, limit, offset, category, +2 more.
start_leetcode_authA
Initiates LeetCode authentication flow. Opens browser to LeetCode login (if possible) and provides instructions for the AI agent to guide the user through manual credential extraction from browser DevTools.
Inputs: no named parameters.
start_problemA
Opens (or resumes) a tutoring session for a LeetCode problem. Must be called before request_hint, list_problem_solutions, or get_problem_solution. Idempotent: re-running on a slug the user is already mid-way through preserves their hint progress.
Inputs: titleSlug (required), language.
submit_solutionA
Submit a solution to a LeetCode problem and get results. Returns acceptance status, runtime/memory stats, or failed test case details. When LEETCODE_MCP_STRICT_MODE=1 is set, requires run_local_tests to have last passed for the problem first — saves real LeetCode submissions for solutions that pass examples locally.
Inputs: code (required), language (required), problemSlug (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 24 tools
Most tools have distinct purposes, but there is some overlap among submission-related tools (get_recent_submissions, get_recent_ac_submissions, get_all_submissions) and user info tools (get_user_profile, get_user_status). This could cause minor confusion for an agent.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_problem, search_problems, submit_solution). The only minor outlier is 'runner_doctor', but it still conveys a clear action. Overall, highly predictable.
With 24 tools, the set is rather large but justified by the broad scope of an interactive LeetCode tutor covering authentication, problem retrieval, sessions, hints, local testing, and submission. Could potentially be streamlined, but the count aligns with functionality.
The tool surface covers the full lifecycle of LeetCode problem-solving: authentication, problem discovery (search, daily), session management, hints, solutions, local testing, and submission. No obvious gaps for the intended tutoring purpose.
Maintenance
Related MCP Connectors
Connects an AI assistant to your Lingard account (lingard.app), an app for learning languages with books, news and flashcards. Create topic word collections and add complete cards: translation, part of speech, pronunciation, synonyms, example sentences with translations, and images. Fill in missing fields on existing cards, rewrite example translations, and pause or resume collections, books and news in your daily study sessions. Every change can be previewed before it is saved, and saved words appear in the Lingard apps on iOS, Android and the web. Requires a Lingard account; sign-in uses OAuth.
Operate GitHub from your AI assistant: repos, PRs, issues, Actions. Previews and read-only mode.
AI coding streaks and leaderboards: profiles, heatmaps, who coded with AI today.
Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables integration with LeetCode APIs to retrieve problems, contests, solutions, and user data, support daily challenges and advanced searches, and perform authenticated actions such as running or submitting code and managing notes.9625 npmMIT
- FlicenseNot gradedqualityAmaintenanceEnables automated access to LeetCode problems, solutions, contests, and public or authenticated user data across leetcode.com and leetcode.cn, including problem search, profile and submission retrieval, code execution, and note management.-
- FlicenseNot gradedqualityAmaintenanceEnables automated access to LeetCode problems, contests, solutions, and user data across leetcode.com and leetcode.cn, with optional authentication for private features like notes, progress, and submissions. Supports retrieval, search, daily challenges, code execution, and submission workflows.-
- FlicenseNot gradedqualityAmaintenanceEnables automated access to LeetCode problems, solutions, contests, and public or authenticated user data across leetcode.com and leetcode.cn, with search, daily challenges, submissions, notes, and code execution/submission workflows.-