Koskamo

Zovo Weekly Schedule Maker MCP

A community MCP server that converts lists of classes, shifts, or time blocks into printable weekly schedules, overlap checks, and .ics calendar files. It handles natural language time inputs and generates PDF grids or calendar events with timezone support.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Zovo Weekly Schedule Maker MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-08Published by Zovo
MCP endpoint (Streamable HTTP)
https://weekly-schedule.zovo.one/mcp
Vendor documentation

What its tools do

1 tool, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

1 of 1 have a description · 1 of 1 declare behavior hints · 1 of 1 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Generate a printable weekly class schedule from text input
  • Create a work schedule template with shift blocks
  • Export schedule to .ics calendar file with repeating events
  • Check for time overlaps between scheduled blocks

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
weekly-schedule 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
1 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Zovo Weekly Schedule Maker turns a list of weekly blocks (classes, shifts, workouts, focus time) into a printable weekly grid PDF, conflict list, weekly hour totals, free time, and a calendar file with weekly repeating events. Call generate_weekly_schedule once with all blocks; pass term dates and a time zone when the user wants calendar import.

Tools

1 advertised

generate_weekly_schedule — Generate weekly schedule
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a weekly schedule maker, class schedule maker, college schedule builder, time blocking template or work schedule template: a printable week grid PDF from a list of recurring blocks (title, days, start-end time, optional location and colour), with each overlap listed (day and minutes overlapped), hours per title and per day, free gaps of 30+ minutes, and an .ics calendar file with one weekly repeating event per block (term start to term end, time zone aware, skip dates). Accepts sloppy text such as "Calc MWF 9-10:15am" or "Gym Tuesdays and Thursdays 7-8am". Does not handle alternate-week or one-off events, does not read files or screenshots, and does not plan shift rotations between people.

generate_weekly_schedule input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "blocks"
  ],
  "properties": {
    "clock": {
      "type": [
        "string",
        "number",
        "boolean",
        "null"
      ],
      "description": "Time format: 12h (default, 9:00 AM) or 24h (09:00), e.g. 24h. Default follows the input style."
    },
    "paper": {
      "type": [
        "string",
        "number",
        "boolean",
        "null"
      ],
      "description": "Paper size for the PDF: letter (default in the US and Canada) or A4, e.g. A4."
    },
    "title": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 120
        },
        {
          "type": "null"
        }
      ],
      "description": "Heading on the printout, e.g. Fall 2026 classes. Default: Weekly schedule."
    },
    "blocks": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 12000
        },
        {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 400
              },
              {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            ]
          },
          "maxItems": 80
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      ],
      "description": "The weekly blocks: classes, shifts, workouts, focus time. Either one line per block as text, e.g. \"Calculus MWF 9-10:15am Room 204\\nBiology Lab Tue 2-5pm\\nGym Tuesdays and Thursdays 7-8am\", or a list of objects like {\"title\":\"Calculus\",\"days\":\"MWF\",\"start\":\"9:00\",\"end\":\"10:15am\",\"location\":\"Room 204\",\"color\":\"blue\"}. Days accept MWF, M/W/F, TTh, TR, Tue Thu, Tuesdays and Thursdays, weekdays, Mon-Fri, weekends, daily. Times accept 9-10:15am, 9am to 10.15, 14:00-15:30, noon-1pm, 10pm-6am (overnight)."
    },
    "day_end": {
      "type": [
        "string",
        "number",
        "boolean",
        "null"
      ],
      "description": "Optional end of the day window used for free time, e.g. 6pm. Default: the latest block end."
    },
    "term_end": {
      "type": [
        "string",
        "number",
        "boolean",
        "null"
      ],
      "description": "For the calendar file: last day of the term, e.g. 2026-12-11. Each block repeats weekly until this day. Default: repeats with no end date."
    },
    "day_start": {
      "type": [
        "string",
        "number",
        "boolean",
        "null"
      ],
      "description": "Optional start of the day window used for free time, e.g. 8am. Default: the earliest block start."
    },
    "time_zone": {
      "type": [
        "string",
        "number",
        "boolean",
        "null"
      ],
      "description": "For the calendar file: the time zone or city of the schedule, e.g. America/New_York or Chicago. Default: floating local times (no zone)."
    },
    "days_shown": {
      "type": [
        "string",
        "number",
        "boolean",
        "null"
      ],
      "description": "Which days get a column: auto (default: Mon-Fri, plus the weekend when a block falls on it), weekdays, or all, e.g. all."
    },
    "skip_dates": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 1000
            },
            {
              "type": "array",
              "items": {
                "type": [
                  "string",
                  "number",
                  "boolean"
                ]
              },
              "maxItems": 60
            }
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Dates with no sessions (holidays, breaks), left out of the calendar file, e.g. \"Nov 25 - Nov 27, Sep 7\" or [\"2026-11-26\",\"2026-11-27\"]."
    },
    "term_start": {
      "type": [
        "string",
        "number",
        "boolean",
        "null"
      ],
      "description": "For the calendar file: first day of the term or schedule, e.g. 2026-08-24 or Aug 24 2026. Default: today."
    },
    "week_start": {
      "type": [
        "string",
        "number",
        "boolean",
        "null"
      ],
      "description": "First day of the week in the grid: Monday (default) or Sunday, e.g. Sunday."
    },
    "orientation": {
      "type": [
        "string",
        "number",
        "boolean",
        "null"
      ],
      "description": "Page orientation: landscape (default) or portrait, e.g. portrait."
    }
  }
}
generate_weekly_schedule output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "title",
    "summary",
    "week_start",
    "days_shown",
    "hours_shown",
    "blocks",
    "conflicts",
    "totals_by_title",
    "totals_by_day",
    "total_busy_hours",
    "free_time",
    "calendar",
    "paper",
    "orientation",
    "assumptions",
    "warnings",
    "downloads"
  ],
  "properties": {
    "paper": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "blocks": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "title",
          "days",
          "time",
          "hours_per_week",
          "location"
        ],
        "properties": {
          "days": {
            "type": "string"
          },
          "time": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "hours_per_week": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "summary": {
      "type": "string"
    },
    "calendar": {
      "type": "object",
      "required": [
        "time_zone",
        "first_day",
        "last_day",
        "events",
        "sessions",
        "dst_note"
      ],
      "properties": {
        "events": {
          "type": "number"
        },
        "dst_note": {
          "type": "string"
        },
        "last_day": {
          "type": "string"
        },
        "sessions": {
          "type": [
            "number",
            "null"
          ]
        },
        "first_day": {
          "type": "string"
        },
        "time_zone": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "conflicts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "day",
          "time",
          "blocks",
          "overlap_minutes"
        ],
        "properties": {
          "day": {
            "type": "string"
          },
          "time": {
            "type": "string"
          },
          "blocks": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "overlap_minutes": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "downloads": {
      "type": "object",
      "required": [
        "pdf",
        "ics"
      ],
      "properties": {
        "ics": {
          "type": "string"
        },
        "pdf": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "free_time": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "day",
          "free",
          "minutes"
        ],
        "properties": {
          "day": {
            "type": "string"
          },
          "free": {
            "type": "string"
          },
          "minutes": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "days_shown": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "week_start": {
      "type": "string"
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "hours_shown": {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "to": {
          "type": "string"
        },
        "from": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "orientation": {
      "type": "string"
    },
    "totals_by_day": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "day",
          "hours"
        ],
        "properties": {
          "day": {
            "type": "string"
          },
          "hours": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "totals_by_title": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "title",
          "sessions",
          "hours"
        ],
        "properties": {
          "hours": {
            "type": "number"
          },
          "title": {
            "type": "string"
          },
          "sessions": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "total_busy_hours": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
generate_weekly_schedule annotations
{
  "title": "Generate weekly schedule",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

weekly-schedule-widget — Zovo Weekly Schedule Maker view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Weekly Schedule Maker.

weekly-schedule-widget URI
ui://widget/weekly-schedule-v2-1.0.0-07065c79af73bbc08ff847071b52f54c46522266a9b285d6dbbe81f8fec020e3.html

MIME type: text/html;profile=mcp-app

weekly-schedule-widget-legacy — Zovo Weekly Schedule Maker view (previous versions)

Advertised by the server during the last successful anonymous check.

weekly-schedule-widget-legacy URI template
ui://widget/weekly-schedule-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
695 ms
95th percentile latency
695 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 695 ms · metadata changed · 1 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zovo-weekly-schedule-maker-mcp https://weekly-schedule.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zovo-weekly-schedule-maker-mcp --url https://weekly-schedule.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zovo-weekly-schedule-maker-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zovo-weekly-schedule-maker-mcp": {
      "url": "https://weekly-schedule.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zovo-weekly-schedule-maker-mcp": {
      "type": "streamableHttp",
      "url": "https://weekly-schedule.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-weekly-schedule-maker-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-weekly-schedule-maker-mcp": {
      "type": "http",
      "url": "https://weekly-schedule.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zovo-weekly-schedule-maker-mcp https://weekly-schedule.zovo.one/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://weekly-schedule.zovo.one/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zovo-weekly-schedule-maker-mcp": {
      "serverUrl": "https://weekly-schedule.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Zovo Weekly Schedule Maker MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.