Syllabus Calendar Mcp

io.github.AnonymousOnyx22由 GitHub 帳號 AnonymousOnyx22 發布v0.1.2更新於 Nov 1, 2026

Syllabus to calendar MCP: pull dates from a syllabus into .ics files, merge calendars. Offline.

已驗證STDIO僅桌面效率與工作流檔案與儲存

概覽

AI 產生的概覽

離線 MCP 伺服器,把貼上的教學大綱文字轉成有日期的事件、產生 .ics 行事曆檔案,並合併多門課程行事曆以找出衝突。

可以做什麼
  • 從貼上的教學大綱文字擷取有日期的事件,每行一個事件,含標題、類型、日期與選填時間,並列出沒有日期的行
  • 為重複課程在兩個日期之間產生上課日期,可略過假日與閱讀週
  • 用事件與重複課程產生有效的 .ics 行事曆,可加提醒,並可選擇寫入檔案
  • 把多份課程行事曆合併成一份,依 UID 去重,並列出時間重疊的事件
適用情境
適合學生或教師手上有貼上的文字或 PDF 匯出的教學大綱、課程安排,想把它變成行事曆事件,或想把多門課程行事曆合併並檢查上課時間衝突的情況。
執行需求
透過 npx 從 npm 套件 syllabus-calendar-mcp 以 stdio 在本機執行,需要 Node.js 20 或更新版本。不需帳號、API 金鑰或網路。寫入檔案需提供 output_path,且目標資料夾須已存在。
安裝前請注意
傳入 output_path 時 build_ics 與 merge_calendars 會寫入檔案,伺服器不會建立資料夾;相對路徑依伺服器啟動目錄解析。沒有年份的日期預設使用目前年份,請核對結果中顯示的年份。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Syllabus Calendar Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

syllabus to calendar mcp

[npm] [downloads] [license] [star on github]

syllabus to calendar mcp is a free mcp server, published on npm as syllabus-calendar-mcp. turn pasted syllabus text into calendar events, build valid .ics files from events and recurring classes, skip holidays and reading weeks, and merge calendars to find conflicts. the math and parsing are done by tested code. it runs on your computer, needs no internet and no login.

parses pasted text from Canvas, Brightspace, Moodle or a PDF export.

free forever. no account.

comparison

brightspace-mcp-server and @exhabition/brightspace-mcp need a brightspace login before they can read anything. this server needs no account, no api key and no network. it works on syllabus text you paste, so it covers any school's syllabus, not only brightspace courses.

sample output

paste text like this:

text
Assignment 1 due Sep 15Midterm exam October 20 at 10:00Lab report 2 due Dec 8

extract_schedule_events with course set to BIO 101 and year set to 2026 returns:

text
3 events found.
- Tue, Sep 15, 2026: Assignment 1 (assignment) [BIO 101]- Tue, Oct 20, 2026 at 10:00: Midterm exam (exam) [BIO 101]- Tue, Dec 8, 2026: Lab report 2 (lab) [BIO 101]
Next: pass these events to build_ics as events to make an .ics calendar.

if a pasted line has no date, it is not dropped. extract_schedule_events returns those lines in undated_lines and lists them below the events, so you can fix the text and run the tool again.

build_ics turns those events into a calendar that starts like this:

ics
BEGIN:VCALENDARVERSION:2.0PRODID:-//AnonymousOnyx22//syllabus-calendar-mcp//ENCALSCALE:GREGORIANMETHOD:PUBLISHX-WR-CALNAME:BIO 101

import into your calendar

the .ics file works in any calendar app. save the file, then import it.

google calendar

open google calendar in a browser. click the gear icon, then settings. open import and export, choose the .ics file, pick the calendar to add it to, then click import.

apple calendar

double click the .ics file. calendar opens and asks which calendar to add the events to. or open calendar, choose file, then import.

outlook

open outlook. choose file, then open and export, then import and export. pick import an ics or vcal file, select the .ics file and import it.

install

run it straight from npm with npx. you need node.js 20 or newer, see node version for the details.

bash
npx -y syllabus-calendar-mcp

add it to your ai app's mcp config so the app can start it for you. every app reads its config from its own file, so pick yours:

claude desktop

add this to claude_desktop_config.json:

json
{  "mcpservers": {    "syllabus-calendar": {      "command": "npx",      "args": ["-y", "syllabus-calendar-mcp"]    }  }}

restart claude desktop after you save the file.

command line

run this in a terminal:

bash
npx -y @modelcontextprotocol/inspector syllabus-calendar-mcp

cursor

cursor reads mcp.json from the project folder at .cursor/mcp.json, or from your home folder at ~/.cursor/mcp.json.

json
{  "mcpservers": {    "syllabus-calendar": {      "type": "stdio",      "command": "npx",      "args": ["-y", "syllabus-calendar-mcp"]    }  }}

restart cursor after you save the file.

vs code copilot

put this in .vscode/mcp.json in your project folder, or in the mcp.json file in your user profile:

json
{  "servers": {    "syllabus-calendar": {      "type": "stdio",      "command": "npx",      "args": ["-y", "syllabus-calendar-mcp"]    }  }}

vs code also reads a portable .mcp.json file in the project root. that file uses the name mcpservers instead of servers:

json
{  "mcpservers": {    "syllabus-calendar": {      "command": "npx",      "args": ["-y", "syllabus-calendar-mcp"]    }  }}

restart vs code after you save the file.

try these four prompts

  1. turn syllabus text into events

    "turn this syllabus into calendar events: assignment 1 due sep 15, midterm exam october 20 at 10:00."

    the model calls extract_schedule_events and returns dated events with types and times.

  2. add a recurring class

    "my biology class meets tuesday and thursday from sep 8 to dec 10, 2026 at 10:00. skip the reading week of oct 12 to oct 16."

    the model calls expand_recurring_classes and returns meetings plus skipped dates.

  3. make an ics calendar

    "make an .ics file for my course with a reminder one day before each assignment."

    the model calls build_ics with events and reminders to produce a valid calendar.

  4. check for conflicts

    "merge my three course calendars and tell me which classes conflict."

    the model calls merge_calendars, which merges the calendars, drops duplicate events by uid and lists timed events that overlap.

tools

four tools. these names are the ones your ai app sees.

toolparameterswhat it doesexample prompt
extract_schedule_eventstext, course, yearextract dated events from pasted syllabus text, one per line with dates. lines with no date are returned in undated_lines. ends with a next step hint to build_ics."turn this syllabus into calendar events: assignment 1 due sep 15, midterm exam october 20 at 10:00."
expand_recurring_classescourse, title, weekdays, start_date, end_date, start_time, end_time, location, holidays, reading_weeksgenerate meeting dates for a recurring class, skipping holidays and reading weeks. ends with a next step hint to build_ics."my biology class meets tuesday and thursday from sep 8 to dec 10, 2026 at 10:00. skip the reading week of oct 12 to oct 16."
build_icsevents, classes, reminders_minutes, calendar_name, output_pathbuild a valid .ics calendar from events and classes, with reminders. write to a file when output_path is passed."make an .ics file for my course with a reminder one day before each assignment."
merge_calendarscalendars, calendar_name, output_pathmerge calendars, dedupe by uid and list timed conflicts. write to a file when output_path is passed."merge my three course calendars and tell me which classes conflict."

every tool returns text and structured data. build_ics and merge_calendars may write files; other tools are read only.

troubleshooting

zero events came back. extract_schedule_events makes one event from each line that names a date. check undated_lines in the result: those are the lines it skipped. paste the schedule with one item per line, and write dates like "sep 15" or "9/15" on the same line as the title. if the text is one long paragraph, split it into lines first and try again.

the dates have the wrong year. when a date has no year, the tool uses the current year. the result shows the year it used. pass year (for example 2026) to extract_schedule_events, or write the year in the date. for expand_recurring_classes, give start_date and end_date with the full year.

the file was not written. build_ics and merge_calendars only write a file when you pass output_path. the folder has to exist already, because the server does not create folders. use a full path you can write to, such as a folder in your home directory. a relative path is resolved from the folder the server was started in, which may not be where you expect. if you leave output_path out, you get the calendar text back and can save it as a .ics file yourself.

the server does not show up in your app. check that your node.js is version 20 or newer, then restart the app after you edit its config. the install steps above show the exact entry for each app.

node version

there are two floors here, and they are not the same number.

what you are doingnode.js
running the published server20 or newer
building and testing a clone22.12 or newer, on the 22 and 24 release lines or 26 and later

the server itself is happy on node.js 20, and that is what engines in package.json says. the test tool wants a newer node.js, so the development floor lives in devengines in the same file. npm checks devengines before install and before tests. serviceh numbers live in package.json.

development

bash
npm installnpm run buildnpm test

the tests call tools through a real mcp client. no account or network needed.

privacy

all processing is local. no data is stored. no network calls. no login or keys required.

More free student MCP servers

All free, open source and read only where they touch your accounts. Browse the full list at brightspacemcp.com/more-mcps.

ServerWhat it does
Brightspace MCPD2L Brightspace for AI. Due dates with real submission status, grades, a target grade calculator and course files.
Canvas MCPCanvas LMS for AI, read only. Due dates, missing work, grades and announcements.
Moodle MCPMoodle for AI, read only. Due dates, overdue work, grades and announcements.
Google Classroom MCPGoogle Classroom for AI, read only. Todos, due dates, missing work and grades.
GPA Calculator MCPGPA, grade conversion and the grade you need on the final, for AI. Works offline, no account.
Citations MCPAPA, MLA and Chicago citations from a DOI, an ISBN or typed details. No account.
Study Planner MCPExam study schedules, spaced repetition dates, pomodoro plans and assignment milestones. Works offline.
Paper Finder MCPSearch scholarly papers, find open access copies and related work through OpenAlex. No key needed.
BibTeX Reference Manager MCPClean, convert, dedupe and lint BibTeX, RIS and CSL JSON reference lists, and make cite keys. Works offline.
Open Textbook Finder MCPFind free legal copies of textbooks on OpenStax, DOAB and Open Library, look up editions by ISBN and suggest cheaper older ones.
STEM Calculator MCPChemistry and physics homework math: molar mass, balancing equations, grams to moles, unit conversion and significant figures. Works offline.
Essay Stats MCPOffline writing metrics for essays. Word and page counts, readability scores, passive voice, repeated openers, filler words, long sentences and word limit checks, so students can check their work against assignment requirements. No account, no network.
Job Application Tracker MCPJob application tracker MCP server. Track internships, jobs, interviews and deadlines offline, see what is coming up, and export your list as CSV or Markdown. No account and no API keys.

license

mit

來源:README.md,提交 a99520d

工具

4

extract_schedule_events

Extract schedule events

Extract dated events from pasted syllabus text. Each line that names a date becomes one event, with a title, a type, a date and optional times. Inputs: text (the pasted syllabus or course schedule, one event per line), course (a course name or code to put on every event) and year (the year to use when a date has no year). Titles are read from the words around the date, and each event is marked as an assignment, exam, quiz, lab, reading, class or other. Any line that has no date is returned in undated_lines instead of being dropped silently. The answer ends with a next step hint that points to build_ics when the events should become a calendar. Example prompt: "Turn this syllabus into calendar events: Assignment 1 due Sep 15, Midterm exam October 20 at 10:00."

輸入參數text必填yearcourse

expand_recurring_classes

Expand recurring classes

Generate the meeting dates for a recurring class between two dates, and skip holidays and reading weeks. Inputs: course, weekdays (day names or codes such as Tuesday or TU), start_date, end_date, start_time, optional end_time, optional location, holidays (single dates or ranges) and reading_weeks (single dates or ranges). Returns every meeting date plus the dates that were skipped and why. The answer ends with a next step hint that points to build_ics when the class should become a calendar. Example prompt: "My biology class meets Tuesday and Thursday from Sep 8 to Dec 10, 2026 at 10:00. Skip the reading week of Oct 12 to Oct 16."

輸入參數titlecourse必填end_date必填end_timeholidayslocationweekdays必填start_date必填start_time必填reading_weeks

build_ics

Build an ics calendar

Build a valid .ics calendar file from dated events and recurring classes, with reminders. Inputs: events (each with title, date, optional start_time, end_time, type, course, location and notes), classes (each with course, weekdays, start_date, end_date, start_time and optional end_time, location, holidays and reading_weeks), reminders_minutes (whole minutes before each event, default 60), calendar_name and optional output_path. Each class becomes one weekly recurring event with holidays and reading weeks removed. The tool checks the file before returning it. Example prompt: "Make an .ics file for my course with a reminder one day before each assignment."

輸入參數eventsclassesoutput_pathcalendar_namereminders_minutes

merge_calendars

Merge course calendars

Merge several course calendars into one and list timed events that overlap. Inputs: calendars (each with an optional name and an ics string), optional calendar_name and optional output_path. Events with the same UID are kept once. Weekly and daily recurring events are expanded when conflicts are checked. Example prompt: "Merge my three course calendars and tell me which classes conflict."

輸入參數calendars必填output_pathcalendar_name

版本歷史

3
  1. v0.1.2最新Nov 1, 2026
  2. v0.1.1Oct 31, 2026
  3. v0.1.0Oct 30, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分