study-planner-mcp について
study-planner-mcp は、試験勉強や課題の計画を立てる学生向けのオフライン MCP サーバーです。テスト済みのコードで学習計画と復習日を算出し、学習データをローカルに保管します。
主な機能
- 01日ごとの試験学習計画
- 02曜日別の学習時間設定
- 03間隔反復の復習日程
- 04休憩付きポモドーロ計画
- 05日付付き課題マイルストーン
- 06ICS カレンダーへの出力
活用シーン
- 01複数試験の学習時間配分
- 02毎日学ぶトピックの確認
- 03試験前の復習日程作成
- 04学習予定のカレンダー登録
MCP 対応
学習計画、間隔反復、ポモドーロ、課題マイルストーン、当日の復習確認、ICS 出力のツールを MCP クライアントに提供します。ローカルで動作し、MCP 対応アプリから利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| exams | array | はい | |
| days_off | array | いいえ | 学習しない曜日。例:["sun"]。 |
| start_date | string | いいえ | 学習を始める日。デフォルトは今日です。 |
| hours_per_day | number | いいえ | 学習日に確保できる学習時間(時間)。 |
詳細
学習プランナー MCP
AI のためのオフライン試験対策。アカウントもログインもインターネットも不要で、データは何も保存されません。永久に無料のオープンソースです。
試験の日程と、毎日同じ、または曜日ごとに異なる学習可能時間を伝えると、間隔反復の復習日、休憩を挟んだポモドーロブロック、大きな課題の期限付きマイルストーンを含む日ごとの計画が返ってきます。学習計画表や試験スケジュール、あるトピックの間隔反復の日程を尋ねると、日程と学習時間をもとに計算します。日付の計算には、モデルの推測ではなく、テスト済みのコードを使用します。
次のようなことを尋ねてみてください。
- 「12月12日にネットワークの試験、12月15日にスクリプトの試験があります。日曜日以外は毎日3時間勉強できます。計画を作ってください。」
- 「12月12日にネットワークの試験があります。平日は2時間、週末は6時間勉強します。計画を作ってください。」
- 「ネットワークの試験範囲はルーティング、スイッチング、セキュリティです。学習時間をこれらのトピックに振り分けて、今日勉強する内容を教えてください。」
- 「11月30日の試験に向けて、今日学んだ内容を忘れないようにするには、いつ復習すればよいですか?」
- 「今日勉強する内容は何ですか?12月12日にネットワークの試験があり、先週の金曜日にルーティングを勉強しました。」
- 「休憩を挟んだポモドーロブロックで、3時間の学習計画を作ってください。」
- 「金曜日が期限の6時間分のエッセイを、マイルストーンに分けてください。」
- 「この計画を .ics ファイルで出力して、Google Calendar にインポートできるようにしてください。」
これは無料のオープンソース MCP サーバーです。Claude、ChatGPT、Cursor、VS Code Copilot など、MCP に対応するあらゆるアプリで使えます。お使いのコンピューター上で実行されるため、学習データが外部に出ることはありません。以下のインストール手順には、各アプリ用の正確な設定が記載されています。
インストール
サーバーは npx を通じてお使いのコンピューター上で実行されるため、Node.js 20 以降が必要です。アカウントやキーは不要で、サインインも必要ありません。
各アプリはそれぞれ専用のファイルから MCP 設定を読み込みます。お使いのアプリを選んでください。
どのアプリでも、同じ方法で同じサーバーを起動します。違いは JSON の保存場所だけです。
Claude Desktop
claude_desktop_config.json に次の内容を追加します。
{
"mcpServers": {
"study-planner": {
"command": "npx",
"args": ["-y", "study-planner-mcp"]
}
}
}
ファイルを保存したら、Claude Desktop を再起動してください。
Claude Code
ターミナルで次を実行します。
claude mcp add study-planner -- npx -y study-planner-mcp
ChatGPT
ChatGPT デスクトップアプリでは、お使いのマシン上で動作するサーバーを起動できます。設定を開いて開発者モードをオンにし、コネクターを追加して、次の JSON を貼り付けてください。
{
"mcpServers": {
"study-planner": {
"command": "npx",
"args": ["-y", "study-planner-mcp"]
}
}
}
ChatGPT のウェブサイトはウェブ経由でサーバーと通信するため、お使いのコンピューター上で動作するサーバーにはデスクトップアプリを使用してください。
Cursor
Cursor は、プロジェクトフォルダー内の .cursor/mcp.json、またはすべてのプロジェクトでサーバーを使う場合はホームフォルダー内の ~/.cursor/mcp.json から mcp.json を読み込みます。Windows では、ホームフォルダー内のファイルは %USERPROFILE%\.cursor\mcp.json です。
{
"mcpServers": {
"study-planner": {
"type": "stdio",
"command": "npx",
"args": ["-y", "study-planner-mcp"]
}
}
}
ファイルを保存したら、Cursor を再起動してください。サーバーが起動すると、サイドバーのカスタマイズページに表示され、そこでオンまたはオフにできます。
VS Code Copilot
プロジェクトフォルダー内の .vscode/mcp.json、またはユーザープロファイル内の mcp.json ファイルに、次の内容を記述します。
{
"servers": {
"study-planner": {
"type": "stdio",
"command": "npx",
"args": ["-y", "study-planner-mcp"]
}
}
}
VS Code は、プロジェクトのルートにあるポータブルな .mcp.json ファイルも読み込みます。このファイルでは servers ではなく mcpServers という名前を使います。
{
"mcpServers": {
"study-planner": {
"command": "npx",
"args": ["-y", "study-planner-mcp"]
}
}
}
ファイルを保存したら、VS Code を再起動してください。
いずれかの設定が終わったら、このページの冒頭にある質問を試してみてください。
ツール
| ツール | 機能 |
|---|---|
build_study_plan | 1つ以上の試験について、各曜日の学習時間を緊急度に応じて配分した日ごとの学習計画を作成します。時間が足りない場合は警告を表示し、試験にトピックがある場合は各日のトピックも提示します |
make_spaced_repetition_schedule | あるトピックの間隔を徐々に広げた復習日を作成し、試験当日以降の日付にはスキップのマークを付けます |
plan_pomodoro_sessions | 合計学習時間に合わせた学習と休憩のスケジュールを作成します |
list_assignment_milestones | 大きな課題を調査、アウトライン作成、下書き、修正、校正に分割した、日付付きのマイルストーンを作成します |
next_review_dates | あるトピックの次回の復習日を提示します。スケジュール全体ではなく、日付を1つだけ取得できます |
export_study_plan_ics | 同じ計画を.icsカレンダーファイルとして出力します。学習セッションごと、試験ごとに1つの終日イベントを作成し、Google CalendarやApple Calendarで開いたりインポートしたりできます |
what_to_study_today | ある日に何を学習するかを提示します。その日の学習計画にある学習セッション、試験にトピックがある場合は各セッションのトピックに加え、その日に予定されている、または期限を過ぎている間隔反復の復習も表示します |
以前の名前であるmake_study_plan、spaced_repetition_dates、pomodoro_plan、assignment_milestonesも、同じパラメーターで同じ4つの機能を実行するため、既存の設定や保存済みプロンプトは引き続き使用できます。
これらのツールでは、すべての日付をDec 12やin 3 weeksのような平易な言葉で指定できます。平易な言葉での日付をご覧ください。
Study Planner MCPとBrightspace、Canvasの比較
Brightspace MCPとCanvas MCPは、学校のサイトを読み取ります。期限のある課題や成績、教師からのお知らせを確認できます。アカウントとサインインが必要です。
このサーバーはサイトを一切読み取りません。試験日と学習可能な時間を入力すると、時間割、復習日、休憩を算出します。必要であれば、LMS サーバーと併用できます。一方は課題の内容を知らせ、もう一方はその学習方法を示します。
| Study Planner MCP | Brightspace MCP | Canvas MCP | |
|---|---|---|---|
| 読み取る内容 | ありません。試験日と学習時間を入力します | Brightspaceのコース、期限、成績、ファイル、お知らせ | Canvasのコース、期限、成績、お知らせ |
| 学校のアカウントが必要 | いいえ | はい | はい |
| サインイン方法 | サインインは不要です | 学校のログイン情報を使ってブラウザーからサインインします | Canvasで作成したAPIトークンを使います |
| 日ごとの学習時間割 | はい。build_study_plan | いいえ。学校が投稿した日付付きイベントを表示します | いいえ。学校が投稿した日付付きイベントを表示します |
| 曜日ごとに異なる学習時間 | はい。計画ツールのhours_per_weekday | いいえ | いいえ |
| 日ごとの学習トピック | はい。試験のトピックを指定します | いいえ | いいえ |
| 間隔反復の復習日 | はい。make_spaced_repetition_schedule。次回分のみの場合はnext_review_dates | いいえ | いいえ |
| 休憩を含むポモドーロの時間枠 | はい。plan_pomodoro_sessions | いいえ | いいえ |
| 日付付きの課題マイルストーン | はい。list_assignment_milestones | いいえ | いいえ |
| 今日やること | はい。what_to_study_today。予定されている復習も追加します | はい。学校が設定した課題のToDoリスト | はい。学校が設定した課題のToDoリスト |
| カレンダーファイル | はい。export_study_plan_icsで学習セッションと試験を出力します | はい。期限を出力します | いいえ |
| ネットワーク接続なしで動作 | はい | いいえ | いいえ |
Brightspaceは期限をカレンダーファイルにも書き込みます。また、どちらも学校が投稿した日付付きイベントを表示します。ただし、試験日と学習時間をもとに、間隔反復の復習日やポモドーロの休憩を含む日ごとの時間割を作成する機能はありません。
キーワード
学習計画ツールを探している人が使う検索語を、ここにまとめました。同じ機能を指す別の呼び方とあわせて、復習時間割、試験スケジュール、間隔反復の日付も含まれています。
- study planner mcp
- study planner
- study-planner-mcp
- study plan mcp
- revision timetable
- revision schedule
- revision plan
- revision planner
- exam schedule
- exam timetable
- exam planner
- exam prep
- exam study plan
- study schedule
- study timetable
- study calendar
- spaced repetition
- spaced repetition dates
- spaced repetition schedule
- pomodoro
- pomodoro planner
- assignment milestones
- assignment plan
- student planner
- student
- mcp
- mcp server
- model context protocol
- offline
npm の掲載情報でも同じ語句が使われています。いずれかの語句で検索した場合は、サーバーをインストールして、計画を作成するよう依頼してください。
学習計画の仕組み
各日の学習時間はその曜日に設定された時間で、hours_per_weekday を設定していない場合は hours_per_day が使われます。その時間を、まだ取り組む必要がある試験に、残り必要時間を残り日数で割った値に応じて配分します。そのため、日程が近く、学習量の多い試験ほど多くの時間が割り当てられます。各試験の前日で学習は終了します。時間が足りない場合は、足りない時間を示し、足りているかのようには表示しません。サーバーが計算する日付は通常のカレンダー日付なので、タイムゾーンによって日付がずれることはありません。
試験にトピックが設定されている場合、その日に試験に割り当てられた時間は、各トピックの残り必要時間に比例して配分されます。これにより、どの試験だけでなく、どのトピックを学習すればよいかも計画に示されます。
日付を普通の言葉で指定する
ツールで受け付ける日付は、普段の言い方で指定できます。サーバーが日付そのものを読み取るため、日付の計算にはテスト済みのコードが使われます。
- 正確な日付がわかっている場合は、
2026-12-12。 - 月日を指定する場合は、
Dec 12、December 12、12 Dec。年を省略すると、まだ過ぎていない次の日付を意味します。たとえば10月に尋ねた場合、Dec 12はその年の12月12日を意味し、12月に尋ねた場合は翌年の12月12日を意味します。 - 任意の年を指定する場合は、
Dec 12 2026。 today、tomorrow、yesterday。- 今日を基準に数える場合は、
in 3 days、in 2 weeks、in 3 months、in 1 year。in two weeksのように、数字を単語で書くこともできます。 - 過去の日付には、
3 days ago、2 weeks ago。 - 次に来る金曜日は
Friday、その次の週の金曜日はnext Friday、1つ前の金曜日はlast Friday。
これは、ツールが受け付けるすべての日付で使えます。試験日、start_date、due_date、first_study_date、exam_date、from_date、および what_to_study_today の date が対象です。
12/12/2026 のように月を数字で指定した日付は読み取れません。数字の順序が明確ではないためです。Dec 12 2026 のように、月は名前で指定してください。
ツール呼び出し:
{
"exams": [{ "name": "Networking", "date": "Dec 12 2026", "hours_needed": 6 }],
"start_date": "2026-12-07",
"hours_per_day": 2
}
回答:
Exams
- Networking on 2026-12-12 sat, 6h planned
Plan from 2026-12-07
- 2026-12-07 mon Networking 2h (2h total)
- 2026-12-08 tue Networking 2h (2h total)
- 2026-12-09 wed Networking 2h (2h total)
Everything fits.
2026-12-12 でも同じ計画が作成されます。
曜日ごとに学習時間を変える
学習日はすべて同じ長さではありません。hours_per_weekday では各曜日の学習時間を設定できるため、月曜日から金曜日までは2時間、土曜日と日曜日は6時間のように計画できます。リストから省いた曜日には hours_per_day が適用され、学習時間が0時間の曜日は、days_off に含まれる日と同じく休みになります。days_off に指定した日は常に除外されます。同じリストを export_study_plan_ics と what_to_study_today でも使えるため、3つのツールすべてで同じ計画が作成されます。
ツール呼び出し:
{
"exams": [{ "name": "Networking", "date": "2026-12-12", "hours_needed": 20 }],
"hours_per_day": 3,
"hours_per_weekday": [
{ "day": "mon", "hours": 2 },
{ "day": "tue", "hours": 2 },
{ "day": "wed", "hours": 2 },
{ "day": "thu", "hours": 2 },
{ "day": "fri", "hours": 2 },
{ "day": "sat", "hours": 6 },
{ "day": "sun", "hours": 6 }
],
"start_date": "2026-11-30"
}
回答:
Exams
- Networking on 2026-12-12 sat, 20h planned
Plan from 2026-11-30
- 2026-11-30 mon Networking 2h (2h total)
- 2026-12-01 tue Networking 2h (2h total)
- 2026-12-02 wed Networking 2h (2h total)
- 2026-12-03 thu Networking 2h (2h total)
- 2026-12-04 fri Networking 2h (2h total)
- 2026-12-05 sat Networking 6h (6h total)
- 2026-12-06 sun Networking 4h (4h total)
Everything fits.
土曜日には6時間が割り当てられ、日曜日には残りの4時間が割り当てられます。
トピックごとの学習時間
試験にtopicsを指定すると、計画には試験だけでなく、各日に学習するトピックも示されます。1日の学習時間は、各トピックに残っている必要時間に比例して試験のトピックに割り振られるため、最も多くの学習が必要なトピックに最も多くの時間が割り当てられます。トピックのhours_neededを省略すると、そのトピック固有の時間が指定されていないトピック間で、試験の学習時間が均等に分割されます。
ツール呼び出し:
{
"exams": [
{
"name": "Networking",
"date": "2026-12-10",
"topics": [
{ "name": "Routing", "hours_needed": 6 },
{ "name": "Switching", "hours_needed": 4 },
{ "name": "Security", "hours_needed": 2 }
]
}
],
"hours_per_day": 4,
"start_date": "2026-12-07"
}
回答:
Exams
- Networking on 2026-12-10 thu, 12h planned
- Routing 6h planned
- Switching 4h planned
- Security 2h planned
Plan from 2026-12-07
- 2026-12-07 mon Networking 4h (4h total)
- Networking: Routing 2h, Switching 1.5h, Security 0.5h
- 2026-12-08 tue Networking 4h (4h total)
- Networking: Routing 2h, Switching 1.5h, Security 0.5h
- 2026-12-09 wed Networking 4h (4h total)
- Networking: Routing 2h, Switching 1h, Security 1h
Everything fits.
what_to_study_todayは1日分の同じトピックを返すため、1回呼び出すだけで、今日何を学習するかと、それが試験のどの部分に当たるかがわかります。
ツール呼び出し:
{
"date": "2026-12-08",
"exams": [
{
"name": "Networking",
"date": "2026-12-10",
"topics": [
{ "name": "Routing", "hours_needed": 6 },
{ "name": "Switching", "hours_needed": 4 },
{ "name": "Security", "hours_needed": 2 }
]
}
],
"hours_per_day": 4,
"start_date": "2026-12-07"
}
回答:
Today 2026-12-08 tue
Study sessions, 4h total
- Networking 4h
- Routing 2h, Switching 1.5h, Security 0.5h
Next exam: Networking on 2026-12-10 thu, 2 days left.
計画の例
これはbuild_study_planの実際の回答で、このフォルダー内のコードを実行して得られたものです。Networkingは12月12日までに20時間、Scriptingは12月15日までに16時間必要で、1日3時間、日曜日は学習しない設定です。start_dateを渡すことで、日付を再現可能にできます。
ツール呼び出し:
{
"exams": [
{ "name": "Networking", "date": "2026-12-12", "hours_needed": 20 },
{ "name": "Scripting", "date": "2026-12-15", "hours_needed": 16 }
],
"hours_per_day": 3,
"days_off": ["sun"],
"start_date": "2026-11-30"
}
回答:
Exams
- Networking on 2026-12-12 sat, 20h planned
- Scripting on 2026-12-15 tue, 16h planned
Plan from 2026-11-30
- 2026-11-30 mon Networking 2h, Scripting 1h (3h total)
- 2026-12-01 tue Networking 2h, Scripting 1h (3h total)
- 2026-12-02 wed Networking 2h, Scripting 1h (3h total)
- 2026-12-03 thu Networking 2h, Scripting 1h (3h total)
- 2026-12-04 fri Networking 1.5h, Scripting 1.5h (3h total)
- 2026-12-05 sat Networking 2h, Scripting 1h (3h total)
- 2026-12-07 mon Networking 2h, Scripting 1h (3h total)
- 2026-12-08 tue Networking 1.5h, Scripting 1.5h (3h total)
- 2026-12-09 wed Networking 2h, Scripting 1h (3h total)
- 2026-12-10 thu Networking 1.5h, Scripting 1.5h (3h total)
- 2026-12-11 fri Networking 1.5h, Scripting 1.5h (3h total)
- 2026-12-12 sat Scripting 3h (3h total)
Everything fits.
日曜日はスキップされます。また、試験の前日で学習が終わるため、Networkingの学習は12月11日に終了し、12月12日はScriptingのみになります。
カレンダーファイル
export_study_plan_icsはbuild_study_planと同じ引数を受け取り、プレーンテキストではなく、完全な.icsファイルを返します。回答をplan.icsとして保存して開くか、Google CalendarまたはApple Calendarにインポートしてください。各学習セッションは空き時間としてマークされた終日予定に、各試験は予定ありとしてマークされた終日予定になります。include_exams: falseを指定すると、学習セッションのみが含まれます。各予定には日付と試験名から生成されたUIDが含まれ、日付は通常のカレンダー日付として記録されるため、タイムゾーンによって予定が別の日に移動することはありません。
ツール呼び出し:
{
"exams": [{ "name": "Networking", "date": "2026-12-12", "hours_needed": 6 }],
"start_date": "2026-12-07",
"hours_per_day": 2,
"days_off": ["sun"]
}
以下は、実行結果からコピーしたファイルの先頭部分です。同じ形式で学習予定があと2件、試験予定が1件続きます。DTSTAMPはエクスポートした時刻のため、実行するたびに異なります。
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//AnonymousOnyx22//Study Planner MCP//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:Study plan
BEGIN:VEVENT
UID:2026-12-07-networking-study@study-planner-mcp
DTSTAMP:20261021T022919Z
DTSTART;VALUE=DATE:20261207
DTEND;VALUE=DATE:20261208
SUMMARY:Study: Networking 2h
DESCRIPTION:Networking\, 2h of study. Day total 2h. Exam on 2026-12-12 sat.
TRANSP:TRANSPARENT
END:VEVENT
今日の学習内容
what_to_study_todayは、1回の呼び出しで1日分の回答を返します。その日の計画に含まれる学習セッションと、その日が期限または期限を過ぎている間隔反復の復習をまとめます。build_study_planで使うものと同じ試験と時間を渡し、復習するトピックと、それぞれを初めて学習した日を指定してください。dateを省略すると、今日の日付が使われます。計画に初日がすでに設定されている場合はstart_dateを渡すと、セッションが先に作成した計画と一致します。
ツール呼び出し:
{
"date": "2026-11-30",
"exams": [{ "name": "Networking", "date": "2026-12-12", "hours_needed": 12 }],
"hours_per_day": 2,
"reviews": [{ "topic": "Routing", "first_study_date": "2026-11-27" }]
}
回答:
Today 2026-11-30 mon
Study sessions, 2h total
- Networking 2h
Reviews due today
- Routing, 2nd review
Reviews to catch up
- Routing, 1st review, 2 days late (due 2026-11-28)
Next reviews
- Routing on 2026-12-04 fri, 3rd review
Next exam: Networking on 2026-12-12 sat, 12 days left.
次回の復習日
next_review_datesは、スケジュール全体ではなく、1つのトピックの次回の復習日を1つ返します。トピックを初めて学習した日から日数を数え、試験当日以降に当たる復習はスキップします。回答には、すでに過ぎた復習回数が含まれます。どの日を起点に数えるかを指定するにはfrom_dateを渡します。これにより、回答を再現可能にできます。すべての復習日を取得する場合は、make_spaced_repetition_scheduleを使ってください。
ツール呼び出し:
{
"topic": "Routing",
"first_study_date": "2026-11-27",
"exam_date": "2026-12-12",
"from_date": "2026-11-29"
}
回答:
Next review for "Routing": 2026-11-30 mon, the 2nd review, in 1 day.
1 review has passed.
ルーティングは11月27日に初めて学習したため、最初の復習日は11月28日で、すでに過ぎています。次の復習日は11月30日です。12月27日の復習は、12月12日の試験後になるため除外されます。
開発
npm install
npm run build
npm test
再現可能な結果を得るには、ツールにstart_dateを渡してください。テストはすべてのツールを実際のMCPクライアント経由で呼び出すため、アカウントもネットワークも必要ありません。
無料で利用できる学生向け MCP サーバーをもっと見る
すべて無料、オープンソースで、アカウントにアクセスする機能は読み取り専用です。brightspacemcp.com/more-mcps で一覧をご覧ください。
| サーバー | 機能 |
|---|---|
| Brightspace MCP | AI 向けの D2L Brightspace です。実際の提出状況を反映した期限、成績、目標成績計算機、コースファイルを確認できます。 |
| Canvas MCP | AI 向けの Canvas LMS です。読み取り専用で、期限、未提出の課題、成績、お知らせを確認できます。 |
| Moodle MCP | AI 向けの Moodle です。読み取り専用で、期限、期限超過の課題、成績、お知らせを確認できます。 |
| Google Classroom MCP | AI 向けの Google Classroom です。読み取り専用で、ToDo、期限、未提出の課題、成績を確認できます。 |
| GPA Calculator MCP | AI 向けに、GPA、成績の換算、期末試験で必要な成績を計算します。オフラインで動作し、アカウントは不要です。 |
| Citations MCP | DOI、ISBN、または入力した情報から、APA、MLA、シカゴ形式の引用を作成します。アカウントは不要です。 |
| Paper Finder MCP | OpenAlex を通じて学術論文を検索し、オープンアクセス版や関連する研究を見つけます。キーは不要です。 |
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。