mcpField
S
study-planner-mcp

study-planner-mcp

本地服务
brightspacemcp.com生产力02 天前更新

关于 study-planner-mcp

study-planner-mcp 是供学生规划备考和作业的离线 MCP 服务。它用经过测试的代码计算学习计划与复习日期,学习数据保留在本机。

主要功能

  1. 01按日制定考试计划
  2. 02按星期设置学习时长
  3. 03间隔重复复习日期
  4. 04带休息的番茄钟安排
  5. 05带日期的作业里程碑
  6. 06导出 ICS 日历文件

适用场景

  1. 01为多场考试分配学习时间
  2. 02确定每天要学的主题
  3. 03安排考前复习日期
  4. 04将学习安排导入日历

MCP 相关

它向 MCP 客户端提供学习计划、间隔重复、番茄钟、作业里程碑、每日复习查询和 ICS 导出工具。服务在本机运行,并支持兼容 MCP 的应用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"anonymousonyx22-study-planner": {
"command": "npx",
"args": [
"-y",
"study-planner-mcp"
]
}
}
}
启动命令npx -y study-planner-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmstudy-planner-mcp0.1.6

工具

4

收录的工具列表 · 更新于 2 天前

参数类型必填说明
examsarray是
days_offarray否不学习的星期几,例如 ["sun"]。
start_datestring否学习的第一天。默认为今天。
hours_per_daynumber否学习日可用于学习的小时数。

详细介绍

学习计划 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 的其他应用。它在你的计算机上运行,因此学习数据不会离开你的设备。下方的安装步骤提供了各应用对应的准确配置。

npm 下载量 许可证

安装

该服务通过 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 读取 mcp.json,如果希望在所有项目中使用该服务,也可以从主文件夹中的 ~/.cursor/mcp.json 读取。在 Windows 上,主文件夹中的文件路径为 %USERPROFILE%\.cursor\mcp.json。

{
  "mcpServers": {
    "study-planner": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "study-planner-mcp"]
    }
  }
}

保存文件后,重启 Cursor。服务启动后会显示在侧边栏的 Customize 页面中,你可以在那里将其开启或关闭。

VS Code Copilot

将以下内容放入项目文件夹中的 .vscode/mcp.json,或用户配置文件中的 mcp.json 文件:

{
  "servers": {
    "study-planner": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "study-planner-mcp"]
    }
  }
}

VS Code 也会读取项目根目录中的可移植 .mcp.json 文件。该文件使用 mcpServers 而非 servers 作为名称:

{
  "mcpServers": {
    "study-planner": {
      "command": "npx",
      "args": ["-y", "study-planner-mcp"]
    }
  }
}

保存文件后,重启 VS Code。

完成上述任一配置后,试着提出本页顶部的问题。

工具

工具功能
build_study_plan为一场或多场考试制定逐日学习计划,根据紧迫程度分配每个工作日的学习时长;如果时间不足,会发出警告;如果考试包含主题,还会列出每天要学习的主题
make_spaced_repetition_schedule为某个主题安排间隔逐渐延长的复习日期,并将考试当天及之后的日期标记为跳过
plan_pomodoro_sessions根据总学习时长安排工作和休息时间
list_assignment_milestones为大型作业安排带日期的里程碑,将其拆分为调研、拟定大纲、撰写草稿、修改和校对
next_review_dates获取某个主题的下次复习日期,只返回一个日期,而不是完整计划
export_study_plan_ics将同一份计划导出为 .ics 日历文件,其中每场学习和每场考试各有一个全天事件,可直接打开或导入 Google Calendar 或 Apple Calendar
what_to_study_today查看某一天要学习的内容:当天计划中的学习安排;如果考试包含主题,还会列出每场安排对应的主题;此外还会列出当天到期或逾期的间隔复习

原有名称 make_study_plan、spaced_repetition_dates、pomodoro_plan 和 assignment_milestones 执行相同的四项任务,并使用相同参数,因此现有配置和已保存的提示词仍可正常使用。

这些工具接受的日期都可以用自然语言表示,例如 Dec 12 或 in 3 weeks。请参阅用自然语言表示日期。

Study Planner MCP 与 Brightspace 和 Canvas 的比较

Brightspace MCP 和 Canvas MCP 会读取你的学校网站。它们会告诉你有哪些待完成事项、你的成绩如何,以及老师发布了什么公告。使用它们需要账户并登录。

此服务完全不读取任何网站。你只需提供考试日期和可用于学习的时长,它就会安排时间表、复习日期和休息时间。你也可以将它与 LMS 服务同时运行:一个告诉你有哪些任务,另一个告诉你该如何学习。

Study Planner MCPBrightspace MCPCanvas 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,并会添加到期的复习是,显示学校布置任务的待办清单是,显示学校布置任务的待办清单
日历文件是,export_study_plan_ics 会写入学习安排和考试是,包含截止日期否
无网络也能使用是否否

Brightspace 也会将截止日期写入日历文件,而且两者都会显示学校发布的带日期事件。但它们无法根据考试日期和学习时长,制定逐日时间表,也无法安排间隔复习日期和番茄钟休息时间。

关键词

人们会用这些词搜索学习规划工具,所以我们把它们列在这里。列表中包括复习时间表、考试安排和间隔重复日期,以及同类事项的其他叫法。

  • 学习规划 MCP
  • 学习规划
  • study-planner-mcp
  • 学习计划 MCP
  • 复习时间表
  • 复习安排
  • 复习计划
  • 复习规划工具
  • 考试安排
  • 考试时间表
  • 考试规划工具
  • 考试备考
  • 考试学习计划
  • 学习安排
  • 学习时间表
  • 学习日历
  • 间隔重复
  • 间隔重复日期
  • 间隔重复安排
  • 番茄工作法
  • 番茄工作法规划工具
  • 作业里程碑
  • 作业计划
  • 学生规划工具
  • 学生
  • mcp
  • mcp server
  • model context protocol
  • 离线

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 表示下周的星期五,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,因此这三个工具生成的计划一致。

工具调用:

{
  "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,计划就会列出每天要学习的主题,而不只是考试。每天的学习时长会按各主题剩余所需时长的比例分配,因此需要投入最多学习时间的主题会分到最多时间。若某个主题没有设置 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 会给出某一天的相同主题,因此一次调用就能告诉你今天要学习什么,以及它属于考试的哪一部分。

工具调用:

{
  "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 小时,每天学习 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"]
}

以下是运行结果中的文件开头几行。后面还有两个学习事件和一个考试事件,格式相同;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 一次调用即可给出某一天的安排。它会合并计划中当天的学习时段,以及当天到期或已逾期的间隔重复复习。传入与 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 会返回一个日期,即某个主题的下次复习日期,而不是完整日程。它从你首次学习该主题的日期开始计算,并跳过考试当天或之后的复习。回答会统计已经过去的复习次数。传入 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.

Routing 于 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,只读。提供待办事项、截止日期、未完成作业和成绩。
GPA Calculator MCP面向 AI 提供 GPA、成绩换算,以及期末考试需要达到的成绩。可离线使用,无需账户。
Citations MCP根据 DOI、ISBN 或输入的详细信息生成 APA、MLA 和 Chicago 引用。无需账户。
Paper Finder MCP通过 OpenAlex 搜索学术论文、查找开放获取版本和相关研究。无需密钥。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。