syllabus-calendar-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@syllabus-calendar-mcpturn this syllabus into calendar events: assignment 1 due sep 15, midterm oct 20 at 10:00"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
syllabus to calendar mcp
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.
Related MCP server: lms-cli
sample output
paste text like this:
Assignment 1 due Sep 15
Midterm exam October 20 at 10:00
Lab report 2 due Dec 8extract_schedule_events with course set to BIO 101 and year set to 2026 returns:
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:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//AnonymousOnyx22//syllabus-calendar-mcp//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
X-WR-CALNAME:BIO 101install
run it straight from npm with npx. you need node.js 20 or newer, see node version for the details.
npx -y syllabus-calendar-mcpadd 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:
{
"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:
npx -y @modelcontextprotocol/inspector syllabus-calendar-mcpcursor
cursor reads mcp.json from the project folder at .cursor/mcp.json, or from your home folder at ~/.cursor/mcp.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:
{
"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:
{
"mcpservers": {
"syllabus-calendar": {
"command": "npx",
"args": ["-y", "syllabus-calendar-mcp"]
}
}
}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_eventsand 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_classesand 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_icswith 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.
tool | parameters | what it does | example prompt |
|
| extract dated events from pasted syllabus text, one per line with dates. lines with no date are returned in | "turn this syllabus into calendar events: assignment 1 due sep 15, midterm exam october 20 at 10:00." |
|
| generate meeting dates for a recurring class, skipping holidays and reading weeks. ends with a next step hint to | "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 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 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 doing | node.js |
running the published server | 20 or newer |
building and testing a clone | 22.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
npm install
npm run build
npm testthe 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.
Server | What it does |
D2L Brightspace for AI. Due dates with real submission status, grades, a target grade calculator and course files. | |
Canvas LMS for AI, read only. Due dates, missing work, grades and announcements. | |
Moodle for AI, read only. Due dates, overdue work, grades and announcements. | |
Google Classroom for AI, read only. Todos, due dates, missing work and grades. | |
GPA, grade conversion and the grade you need on the final, for AI. Works offline, no account. | |
APA, MLA and Chicago citations from a DOI, an ISBN or typed details. No account. | |
Exam study schedules, spaced repetition dates, pomodoro plans and assignment milestones. Works offline. | |
Search scholarly papers, find open access copies and related work through OpenAlex. No key needed. | |
Clean, convert, dedupe and lint BibTeX, RIS and CSL JSON reference lists, and make cite keys. Works offline. | |
Find free legal copies of textbooks on OpenStax, DOAB and Open Library, look up editions by ISBN and suggest cheaper older ones. | |
Chemistry and physics homework math: molar mass, balancing equations, grams to moles, unit conversion and significant figures. Works offline. | |
Offline 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 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
Available Tools
4 toolsbuild_icsBuild an ics calendarA
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."
| Name | Required | Description | Default |
|---|---|---|---|
| events | No | Dated events such as assignments and exams. | |
| classes | No | Recurring classes to add as weekly events. | |
| output_path | No | Optional file path. When it is passed, the calendar is written there as a .ics file. | |
| calendar_name | No | Name shown in the calendar app. Defaults to "Course calendar". | |
| reminders_minutes | No | Reminder times in whole minutes before an event. Defaults to [60]. Pass an empty array for no reminders. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ics | Yes | The calendar file as text, with CRLF line breaks. |
| valid | Yes | True when the calendar passed the built in checks. |
| errors | Yes | Problems found by the checks. Empty when the calendar is valid. |
| class_count | Yes | How many recurring classes the calendar holds. |
| event_count | Yes | How many single events the calendar holds. |
| output_path | Yes | The file path the calendar was written to, or null when no path was passed. |
| class_meetings | Yes | How many class meetings the recurring events produce after skips. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and openWorldHint=false, so the write-local scope is known. The description adds real behavior beyond that: each class becomes one weekly recurring event with holidays and reading weeks removed, and 'the tool checks the file before returning it.' What it omits is what happens when output_path is not supplied (file content returned vs. nothing), which is the key behavioral ambiguity for a caller.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, then inputs, then behavior, then an example. The middle sentence is a long run-on enumeration of inputs, but each element maps to a distinct parameter and nothing is redundant with the surrounding sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers inputs, defaults, recurrence expansion, holiday exclusion, and validation. The only meaningful gap is the no-output_path case. Comfortable for a 5-parameter optional-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, nested item field, formats, and defaults. The description's parameter enumeration mirrors the schema rather than adding new semantics. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a precise verb and resource: 'Build a valid .ics calendar file from dated events and recurring classes, with reminders.' The input enumeration makes it clear this is the construction step, not extraction or merging. It never names the siblings (extract_schedule_events, expand_recurring_classes, merge_calendars), so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The concrete example prompt ('Make an .ics file for my course with a reminder one day before each assignment') anchors when this tool applies, and the defaults documented for reminders_minutes and calendar_name give calling context. There is no explicit when-not guidance or routing to the sibling tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
expand_recurring_classesExpand recurring classesARead-only
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."
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Title for the calendar event. Defaults to the course name plus class. | |
| course | Yes | Course name or code, such as BIO 101. | |
| end_date | Yes | Last date of the term as YYYY-MM-DD. | |
| end_time | No | Class end time as HH:MM or 2:30 PM. It must be after start_time. | |
| holidays | No | Holiday dates or ranges, such as "2026-10-12" or "2026-10-12 to 2026-10-16". | |
| location | No | Room or place. | |
| weekdays | Yes | Days the class meets, as names or codes, such as "Tuesday", "Tue" or "TU". | |
| start_date | Yes | First date of the term as YYYY-MM-DD. | |
| start_time | Yes | Class start time as HH:MM or 2:30 PM. | |
| reading_weeks | No | Reading week dates or ranges, such as "2026-10-12 to 2026-10-16". |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | Title used for the calendar event. |
| course | Yes | Course name or code. |
| skipped | Yes | Dates that were skipped, with the reason. |
| end_date | Yes | Last date of the term. |
| end_time | Yes | Class end time, or null when none was passed. |
| location | Yes | Room or place, or null when none was passed. |
| meetings | Yes | Every class meeting, in date order. |
| weekdays | Yes | The weekdays as two letter codes. |
| next_step | Yes | Suggested next tool call for turning the class meetings into a calendar. |
| start_date | Yes | First date of the term. |
| start_time | Yes | Class start time. |
| candidate_count | Yes | How many dates matched the weekdays before holidays and reading weeks were removed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real behavioral detail beyond that: it returns every meeting date plus skipped dates with reasons, and terminates with a next-step hint. It does not mention output ordering/format limits, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then inputs, then return behavior, then the example prompt. The enumerated input list partly duplicates the schema, but the example prompt earns its place by showing the intended invocation shape. Slightly verbose but well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with an output schema, the description covers purpose, input shapes, return content (meeting dates, skipped dates with reasons), and next-step routing. What remains unstated — e.g. how dates are ordered or how conflicts between holidays and reading weeks are resolved — is modest given the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including holidays and reading_weeks is already documented with formats and examples. The description's input list largely restates the schema (weekdays names or codes, date formats), adding no new semantics. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Generate the meeting dates for a recurring class between two dates, and skip holidays and reading weeks.' This is clearly distinguishable from siblings like extract_schedule_events (which presumably reads a schedule) and names build_ics as the downstream tool, so an agent can route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear from the example prompt ('My biology class meets Tuesday and Thursday... Skip the reading week') and the next-step hint toward build_ics. However, it never explicitly says when NOT to use this versus extract_schedule_events or merge_calendars, leaving the sibling boundary to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_schedule_eventsExtract schedule eventsARead-only
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."
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The pasted syllabus or course schedule. Put one event on each line, with a date on the line. | |
| year | No | The year to use when a date has no year. Defaults to the current year. | |
| course | No | Course name or code to put on every event, such as BIO 101. |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | The year used for dates that did not name one. |
| count | Yes | How many events were found. |
| events | Yes | Every dated event that was found, in date order. |
| next_step | Yes | Suggested next tool call for turning the events into a calendar. |
| undated_lines | Yes | Lines that had no date, kept in the order they appeared so they can be fixed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds genuinely new behavior: undated lines are surfaced in undated_lines rather than silently dropped, events are classified into seven types, and the response ends with a next-step hint. That is meaningful disclosure of output behavior and failure handling beyond the safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by mechanics and a concrete example prompt that anchors the format. Slight redundancy in re-listing the three inputs, which the schema already documents, keeps it from being fully tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description fills the remaining gaps well: the line-per-event parsing contract, the event taxonomy, what happens to undated lines, and the downstream build_ics step. Adequate for an agent to call it confidently; only the recurring-class handoff is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates all three parameters ('text', 'course', 'year') but largely paraphrases the schema text, adding only the framing that course goes 'on every event' and year resolves dateless dates -- no syntax or edge-case detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource -- 'Extract dated events from pasted syllabus text' -- and immediately explains the one-event-per-line mapping rule. None of the siblings (expand_recurring_classes, build_ics, merge_calendars) do parsing, so the boundary is unambiguous even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The input precondition is explicit (pasted syllabus/course schedule text, one event per line), and the description routes the agent onward to build_ics when events should become a calendar. It does not address whether recurring class lines should instead go to expand_recurring_classes, which is the one plausible ambiguity among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merge_calendarsMerge course calendarsA
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."
| Name | Required | Description | Default |
|---|---|---|---|
| calendars | Yes | The calendars to merge, each with the calendar text and an optional name. | |
| output_path | No | Optional file path. When it is passed, the calendar is written there as a .ics file. | |
| calendar_name | No | Name for the merged calendar. Defaults to "Merged course calendar". |
Output Schema
| Name | Required | Description |
|---|---|---|
| ics | Yes | The merged calendar as text, with CRLF line breaks. |
| valid | Yes | True when the merged calendar passed the built in checks. |
| errors | Yes | Problems found by the checks. Empty when the calendar is valid. |
| conflicts | Yes | Every pair of timed events that overlaps, in date order. |
| event_count | Yes | How many events the merged calendar holds, after repeated UIDs are dropped. |
| output_path | Yes | The file path the calendar was written to, or null when no path was passed. |
| calendar_count | Yes | How many calendars were passed in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and openWorldHint=false. The description adds useful specifics beyond annotations: optional .ics file output via output_path, UID-based deduplication, and expansion of weekly/daily recurrence during conflict checking. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the description is compact. The 'Inputs:' list is somewhat redundant with the schema, and the example prompt adds length, but both remain useful and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained. The description covers inputs, deduplication, recurrence handling, and optional file output, which is sufficient for correct invocation, though subtle details like whether all-day events are excluded from conflict checks remain implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description restates the inputs and their optionality but adds little format or semantic detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Merge several course calendars into one' and adds conflict listing. This clearly distinguishes it from siblings like extract_schedule_events, expand_recurring_classes, and build_ics by combining merge and overlap detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear use case through the opening sentence and the example prompt about merging three course calendars to find conflicts. However, it does not explicitly name alternative tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
build_ics - First observed
expand_recurring_classes - First observed
extract_schedule_events - First observed
merge_calendars
TDQS
Scored across 4 tools
The four tools represent distinct pipeline stages: extraction, recurrence expansion, ICS generation, and merging. The only mild overlap is between expand_recurring_classes and build_ics, since build_ics also accepts recurring class definitions and expands them internally, but the descriptions make the output distinction clear.
All names use a consistent snake_case verb_noun pattern: extract_schedule_events, expand_recurring_classes, build_ics, and merge_calendars. The convention is predictable and readable throughout.
Four tools are well-scoped for a syllabus-to-calendar workflow, with each tool covering a meaningful step. There are no redundant or trivial tools.
The surface covers the core lifecycle: extracting events, expanding recurring classes, building a checked .ics file, and merging calendars. Minor gaps exist around post-generation editing or standalone calendar validation, but the main workflow is complete.
Maintenance
Related MCP Connectors
Extracts calendar events from natural-language text, with .ics and calendar links.
Create and update subscription calendars from ChatGPT, Claude, or Codex.
Turn a written schedule into a live calendar link people subscribe to in Apple, Google, Outlook.
Read the .ics your calendar exports: events in a window, free-busy, double bookings, export.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables course planning for University of Pennsylvania by searching the catalog, inspecting sections and ratings, detecting schedule conflicts, and building weekly schedules.15MIT
- AlicenseNot gradedqualityAmaintenanceEnables natural-language queries across multiple schools' Canvas and Blackboard accounts for courses, notifications, assignments, grades, feedback, and schedules, with read-only access and local todo/calendar export.8MIT
- AlicenseAqualityAmaintenanceGives AI assistants direct, on-demand access to McGill's public Visual Schedule Builder timetable data, letting them search course offerings, fetch sections and meeting times, check conflicts, and generate ranked schedule combinations without a login, API key, or browser session. Queries and schedule calculations run locally on structured results, with a short-lived cache for repeated requests.46 npm2MIT
- AlicenseBqualityBmaintenanceEnables users to query official undergraduate and graduate course schedules, indexes, prerequisites, and exam timetables, including tools for comparing indexes and finding matching schedules. It is read-only, local, and supports filtering by days, times, lesson types, teaching weeks, and schedule clashes.71MIT