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:
extract_schedule_events with course set to BIO 101 and year set to 2026 returns:
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:
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.
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:
restart claude desktop after you save the file.
command line
run this in a terminal:
cursor
cursor reads mcp.json from the project folder at .cursor/mcp.json, or from your home folder at ~/.cursor/mcp.json.
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:
vs code also reads a portable .mcp.json file in the project root. that file uses the name mcpservers instead of servers:
restart vs code after you save the file.
try these four prompts
-
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.
-
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.
-
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.
-
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.
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.
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
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.
license
mit