LeetCode MCP サーバー
LeetCode MCP サーバーは、LeetCode API とのシームレスな統合を提供するモデル コンテキスト プロトコル (MCP)サーバーであり、LeetCode のプログラミング問題、コンテスト、ソリューション、およびユーザー データとの高度な自動化とインテリジェントな対話を可能にします。
特徴
🌐マルチサイトサポート:leetcode.com(グローバル)とleetcode.cn(中国)の両方のプラットフォームをサポート
📊問題データの取得:詳細な問題の説明、制約、例、公式の論説、ユーザーが投稿した解決策を取得します。
👤ユーザーデータアクセス:ユーザープロフィール、提出履歴、コンテストパフォーマンスを取得します
🔒プライベートデータアクセス:ユーザーノートの作成とクエリ、問題解決の進捗状況の追跡、提出内容の分析(AC/WA分析)
🔍高度な検索機能: タグ、難易度、カテゴリ、キーワードで問題をフィルタリング
📅デイリーチャレンジアクセス:デイリーチャレンジ問題に簡単にアクセスできます
Related MCP server: mcp-server-code-assist
前提条件
Node.js ランタイム環境
(オプション) 認証された API アクセス用の LeetCode セッション Cookie
インストール
Smithery経由でインストール
Smithery経由で Claude Desktop 用の leetcode-mcp-server を自動的にインストールするには:
手動インストール
あるいは、リポジトリをクローンしてローカルで実行することもできます。
使用法
Visual Studio Code 統合
ユーザー設定(JSON)ファイルに以下のJSON設定を追加します。Ctrl Ctrl/Cmd + Shift + Pを押してPreferences: Open User Settings (JSON)を検索し、アクセスしてください。
オプション1: 環境変数を使用する
オプション2: コマンドライン引数の使用
LeetCode China サイトの場合は、 --siteパラメータをcnに変更します。
[!ヒント]
サーバーは次の環境変数をサポートしています。
LEETCODE_SITE: LeetCode APIエンドポイント('global'または'cn')
LEETCODE_SESSION: 認証された API アクセス用の LeetCode セッション Cookie優先度に関する注意: コマンドライン引数と環境変数の両方が指定されている場合、コマンドライン引数が環境変数よりも優先されます。例:
LEETCODE_SITE=cnが設定されているが、leetcode-mcp-server --site globalを実行すると、サーバーはglobalを使用します。
LEETCODE_SESSIONが存在するが、--session "new_cookie"を指定すると、コマンドラインセッション値が使用されます。
利用可能なツール
問題
道具 | グローバル | CN | 認証が必要です | 説明 |
毎日のチャレンジ | ✅ | ✅ | ❌ | 今日のLeetCodeデイリーチャレンジ問題を取得します |
問題を取得する | ✅ | ✅ | ❌ | 特定の LeetCode 問題の詳細を取得します |
検索の問題 | ✅ | ✅ | ❌ | 複数のフィルター条件でLeetCodeの問題を検索します |
ユーザー
道具 | グローバル | CN | 認証が必要です | 説明 |
ユーザープロファイルを取得する | ✅ | ✅ | ❌ | LeetCodeユーザーのプロフィール情報を取得します |
get_user_contest_ranking | ✅ | ✅ | ❌ | ユーザーのコンテストランキング統計を取得します |
最近のACサブミッションを取得する | ✅ | ✅ | ❌ | ユーザーの最近承認された提出物を取得します |
最近の投稿を取得する | ✅ | ❌ | ❌ | ユーザーの最近の投稿履歴を取得します |
get_user_status | ✅ | ✅ | ✅ | 現在のユーザーの現在のステータスを取得します |
問題報告を取得する | ✅ | ✅ | ✅ | 特定の問題に対する詳細な提出分析を提供します |
問題の進行状況を取得する | ✅ | ✅ | ✅ | 現在のユーザーの問題解決の進捗状況を取得します |
すべての提出物を取得する | ✅ | ✅ | ✅ | 現在のユーザーの送信履歴を取得します |
注記
道具 | グローバル | CN | 認証が必要です | 説明 |
検索ノート | ❌ | ✅ | ✅ | フィルタリングオプションを使用してユーザーノートを検索します |
メモを取得する | ❌ | ✅ | ✅ | 質問IDで特定の問題のメモを取得します |
ノートを作成 | ❌ | ✅ | ✅ | 特定の問題に対する新しいメモを作成します |
更新ノート | ❌ | ✅ | ✅ | 既存のメモを新しいコンテンツで更新します |
ソリューション
道具 | グローバル | CN | 認証が必要です | 説明 |
問題解決策のリスト | ✅ | ✅ | ❌ | 特定の問題に対するコミュニティソリューションのリストを取得します |
問題の解決策を取得する | ✅ | ✅ | ❌ | 特定のソリューションの完全なコンテンツを取得します |
ツールパラメータ
問題
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 China のユーザーノートを検索します
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: ノートの内容。マークダウン形式をサポートします(文字列、必須)summary: メモの短い要約またはタイトル(文字列、オプション)
update_note - 既存のノートを新しいコンテンツまたは要約で更新します
noteId: 更新するノートのID(文字列、必須)content: ノートの新しいコンテンツ。マークダウン形式をサポートします(文字列、必須)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 | 認証が必要です | 説明 |
問題カテゴリ | ✅ | ✅ | ❌ | すべての問題分類カテゴリのリスト |
問題タグ | ✅ | ✅ | ❌ | アルゴリズムとデータ構造のタグの詳細なコレクション |
問題言語 | ✅ | ✅ | ❌ | サポートされているすべてのプログラミング言語の完全なリスト |
問題の詳細 | ✅ | ✅ | ❌ | 特定の問題に関する詳細を提供します |
問題解決 | ✅ | ✅ | ❌ | 特定のソリューションの完全なコンテンツを提供します |
リソースURI
問題カテゴリ- すべての問題分類カテゴリのリスト
URI:
categories://problems/all
問題タグ- アルゴリズムとデータ構造のタグの詳細なコレクション
URI:
tags://problems/all
problem-langs - LeetCode でサポートされているすべてのプログラミング言語の完全なリスト
URI:
langs://problems/all
問題の詳細- 特定の LeetCode 問題に関する詳細を提供します
URI:
problem://{titleSlug}パラメータ:
titleSlug: LeetCode URL に表示される問題識別子
問題-解決策- 特定の解決策の完全な内容を提供します
グローバルURI:
solution://{topicId}パラメータ:
topicId: ソリューションの一意のトピックID
CN URI:
solution://{slug}パラメータ:
slug: ソリューションの一意のスラッグ/識別子
認証
ユーザー固有のデータ アクセスには、LeetCode セッション認証が必要です。
ブラウザ開発者ツールから
LEETCODE_SESSIONCookieを抽出する--sessionフラグまたはLEETCODE_SESSION環境変数を使用してサーバーを構成する
応答フォーマット
すべてのツールは、次の構造の JSON 形式の応答を返します。
JSON_DATA_STRINGには、要求されたデータまたは失敗した要求のエラー メッセージのいずれかが含まれます。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています。