Koskamo

Printable Calendar Maker MCP

Generates print-ready vector PDF calendars including yearly, monthly, and school year formats. Supports public holidays for 200+ countries, custom birthdays and events, multiple languages, and various paper sizes like Letter and A4.

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.

Printable Calendar Maker MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://printable-calendar.zovo.one/mcp
Vendor documentation

What you can do with it

  • Generate a 2027 yearly calendar with US holidays
  • Create a 12-month wall calendar in Polish with A4 sizing
  • Make a school year calendar from August 2026 to June 2027 with week numbers

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
printable-calendar 1.0.0
MCP protocol
2025-06-18
Tools
2 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.

Printable Calendar Maker makes printable calendar PDFs: a whole year on one page, a 12-month wall calendar, a single month, or any month range such as a school year, with public holidays for 200+ countries and their states, custom birthdays and events, week numbers, notes lines, and month names in 9 languages. Use generate_calendar for the PDF and find_holidays to list a country's holidays. Pass every birthday or event the user mentions in events. Share the PDF link from the result.

Tools

2 advertised

generate_calendar — Generate printable calendar
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a printable calendar ("printable calendar", "2027 calendar printable", "monthly calendar template", "yearly calendar", "wall calendar", "school year calendar", "calendar with holidays") as a PDF. Builds a year on one page, a 12-month wall calendar with cover, a single month, or a month range up to 24 months, with public holidays for a country and state, custom birthdays and events, Monday or Sunday weeks, ISO week numbers, notes lines, paper size, language and an accent colour. Returns a preview and a PDF download link. Does not add events to Google, Outlook or Apple calendars, does not schedule meetings, and does not draw lunar, Hijri or Hebrew calendars.

generate_calendar input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "layout"
  ],
  "properties": {
    "end": {
      "type": "string",
      "maxLength": 20,
      "description": "For layout range: last month as YYYY-MM (at most 24 months after start), e.g. 2027-06."
    },
    "year": {
      "type": "integer",
      "maximum": 2200,
      "minimum": 1950,
      "description": "Year for layout year or wall, e.g. 2027. Default: next year from October on, otherwise this year."
    },
    "bleed": {
      "type": "boolean",
      "description": "Add a 0.125 in print bleed with trim marks in the PDF boxes, for professional printing. Default false."
    },
    "month": {
      "type": "string",
      "maxLength": 20,
      "description": "For layout month: the month as YYYY-MM, e.g. 2027-03."
    },
    "notes": {
      "type": "boolean",
      "description": "Add a ruled notes area under each month page (not on the one-page year). Default false."
    },
    "paper": {
      "enum": [
        "letter",
        "a4",
        "a3",
        "tabloid"
      ],
      "type": "string",
      "maxLength": 30,
      "description": "Paper size: letter (8.5x11 in), a4, a3 or tabloid (11x17 in). Default letter for US/Canada/Mexico, a4 for other countries."
    },
    "start": {
      "type": "string",
      "maxLength": 20,
      "description": "For layout range: first month as YYYY-MM, e.g. 2026-08."
    },
    "title": {
      "type": "string",
      "maxLength": 80,
      "description": "Optional title printed on the calendar, e.g. \"Kowalski Family 2027\". Default: the year or month."
    },
    "accent": {
      "type": "string",
      "maxLength": 20,
      "description": "One accent colour for headings and holiday marks: a hex code like #0F766E or a name (indigo, blue, navy, teal, green, olive, red, crimson, pink, purple, orange, amber, brown, slate, gray, black). Default indigo."
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "title"
        ],
        "properties": {
          "date": {
            "type": "string",
            "maxLength": 30,
            "description": "MM-DD for every year (a birthday, e.g. 03-04) or YYYY-MM-DD for one date (e.g. 2027-05-14). \"Mar 4\" also works."
          },
          "title": {
            "type": "string",
            "maxLength": 60,
            "description": "Short label drawn in the day cell, e.g. Mom's birthday."
          }
        }
      },
      "maxItems": 60,
      "description": "Custom events and birthdays (up to 60). Example: [{\"date\":\"03-04\",\"title\":\"Mom's birthday\"},{\"date\":\"2027-06-12\",\"title\":\"Wedding\"}]"
    },
    "layout": {
      "enum": [
        "year",
        "wall",
        "month",
        "range"
      ],
      "type": "string",
      "maxLength": 30,
      "description": "year = whole year on one page; wall = 12-month wall calendar, a cover plus one month per page; month = one month on one page; range = one page per month from start to end (e.g. a school year). Example: wall"
    },
    "country": {
      "type": "string",
      "maxLength": 60,
      "description": "Country for public holidays: ISO two-letter code or name, e.g. US, GB, DE, PL, FR, JP, BR, AU, CA. Omit for a calendar without holidays."
    },
    "holidays": {
      "type": "boolean",
      "description": "Show public holidays when a country is given. Default true; false hides them."
    },
    "language": {
      "type": "string",
      "maxLength": 20,
      "description": "Language for month and weekday names: en (default), pl, de, es, fr, it, pt, nl or ja. Holiday names use this language when the country's data has it, else English. Example: de"
    },
    "week_start": {
      "enum": [
        "monday",
        "sunday"
      ],
      "type": "string",
      "maxLength": 30,
      "description": "First day of each week row. Default: the country's custom (Sunday for US, CA, BR, JP...; Monday for most of Europe); without a country, Sunday for English, Monday otherwise. Example: monday"
    },
    "orientation": {
      "enum": [
        "landscape",
        "portrait"
      ],
      "type": "string",
      "maxLength": 30,
      "description": "Page orientation. Default landscape. Example: portrait"
    },
    "start_month": {
      "type": "integer",
      "maximum": 12,
      "minimum": 1,
      "description": "First month (1-12) for a 12-month year or wall calendar; 8 makes an August-to-July academic calendar. Default 1."
    },
    "subdivision": {
      "type": "string",
      "maxLength": 60,
      "description": "Optional state, province or region for local holidays, e.g. TX or CA (US), BY (Bavaria, DE), SCT (Scotland), NSW (AU), ON (CA)."
    },
    "week_numbers": {
      "type": "boolean",
      "description": "Print ISO 8601 week numbers beside each week row. Default false. Example: true"
    },
    "include_observances": {
      "type": "boolean",
      "description": "Also show observances, bank and optional days (e.g. Mother's Day, Valentine's Day, Christmas Eve). Default false: public holidays only."
    }
  }
}
generate_calendar output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "layout",
    "title",
    "period",
    "months",
    "week_start",
    "week_numbers",
    "notes_area",
    "paper",
    "orientation",
    "language",
    "accent",
    "region",
    "holidays_shown",
    "include_observances",
    "holidays",
    "holiday_count",
    "events",
    "event_count",
    "pages",
    "page_count",
    "names",
    "notes",
    "inputs",
    "downloads"
  ],
  "properties": {
    "kind": {
      "type": "string"
    },
    "names": {
      "type": "object",
      "required": [
        "months",
        "weekdays"
      ],
      "properties": {
        "months": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "weekdays": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "pages": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "paper": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "accent": {
      "type": "string"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "title"
        ],
        "properties": {
          "date": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "layout": {
      "type": "string"
    },
    "months": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "y",
          "m"
        ],
        "properties": {
          "m": {
            "type": "number"
          },
          "y": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "period": {
      "type": "string"
    },
    "region": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "country",
            "country_name",
            "subdivision",
            "subdivision_name",
            "label"
          ],
          "properties": {
            "label": {
              "type": "string"
            },
            "country": {
              "type": "string"
            },
            "subdivision": {
              "type": [
                "string",
                "null"
              ]
            },
            "country_name": {
              "type": "string"
            },
            "subdivision_name": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "holidays": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "name",
          "type"
        ],
        "properties": {
          "date": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "language": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "required": [
        "pdf"
      ],
      "properties": {
        "pdf": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "notes_area": {
      "type": "boolean"
    },
    "page_count": {
      "type": "number"
    },
    "week_start": {
      "type": "string"
    },
    "event_count": {
      "type": "number"
    },
    "orientation": {
      "type": "string"
    },
    "week_numbers": {
      "type": "boolean"
    },
    "holiday_count": {
      "type": "number"
    },
    "holidays_shown": {
      "type": "boolean"
    },
    "include_observances": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
generate_calendar annotations
{
  "title": "Generate printable calendar",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_holidays — Find public holidays
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants the list of public holidays for a country (and optionally a state or region) in a year, for example to check what a printed calendar will mark ("bank holidays 2027 UK", "Texas holidays 2027", "Feiertage Bayern 2027"). Returns each holiday with its date, weekday and type, including observed weekdays when a holiday falls on a weekend; observances are optional. Does not count business days between dates, and does not cover school terms or religious calendars outside the holiday data.

find_holidays input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "country"
  ],
  "properties": {
    "year": {
      "type": "integer",
      "maximum": 2200,
      "minimum": 1950,
      "description": "Year, e.g. 2027. Default: next year from October on, otherwise this year."
    },
    "country": {
      "type": "string",
      "maxLength": 60,
      "description": "Country: ISO two-letter code or name, e.g. US, GB, DE, PL, FR, JP, BR, AU, CA."
    },
    "language": {
      "type": "string",
      "maxLength": 20,
      "description": "Language for month and weekday names: en (default), pl, de, es, fr, it, pt, nl or ja. Holiday names use this language when the country's data has it, else English. Example: de"
    },
    "subdivision": {
      "type": "string",
      "maxLength": 60,
      "description": "Optional state, province or region for local holidays, e.g. TX or CA (US), BY (Bavaria, DE), SCT (Scotland), NSW (AU), ON (CA)."
    },
    "include_observances": {
      "type": "boolean",
      "description": "Also show observances, bank and optional days (e.g. Mother's Day, Valentine's Day, Christmas Eve). Default false: public holidays only."
    }
  }
}
find_holidays output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "year",
    "region",
    "include_observances",
    "count",
    "public_count",
    "on_weekdays",
    "holidays",
    "notes",
    "inputs"
  ],
  "properties": {
    "kind": {
      "type": "string"
    },
    "year": {
      "type": "number"
    },
    "count": {
      "type": "number"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "region": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "country",
            "country_name",
            "subdivision",
            "subdivision_name",
            "label"
          ],
          "properties": {
            "label": {
              "type": "string"
            },
            "country": {
              "type": "string"
            },
            "subdivision": {
              "type": [
                "string",
                "null"
              ]
            },
            "country_name": {
              "type": "string"
            },
            "subdivision_name": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "holidays": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "weekday",
          "name",
          "type"
        ],
        "properties": {
          "date": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "weekday": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "on_weekdays": {
      "type": "number"
    },
    "public_count": {
      "type": "number"
    },
    "include_observances": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
find_holidays annotations
{
  "title": "Find public holidays",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

printable-calendar-widget — Printable Calendar Maker view

Advertised by the server during the last successful anonymous check.

Interactive view for Printable Calendar Maker.

printable-calendar-widget URI
ui://widget/printable-calendar-v2-1.0.0-f85b3c53dcc49900e1e8e1b673a63096c135e8627df97a98b3fda0977eae6479.html

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

printable-calendar-widget-legacy — Printable Calendar Maker view (previous versions)

Advertised by the server during the last successful anonymous check.

printable-calendar-widget-legacy URI template
ui://widget/printable-calendar-{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
687 ms
95th percentile latency
687 ms

Maintenance history

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

  • · probe · passed · 687 ms · metadata changed · 2 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 printable-calendar-maker-mcp https://printable-calendar.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 printable-calendar-maker-mcp --url https://printable-calendar.zovo.one/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start printable-calendar-maker-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "printable-calendar-maker-mcp": {
      "type": "http",
      "url": "https://printable-calendar.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 printable-calendar-maker-mcp https://printable-calendar.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "printable-calendar-maker-mcp": {
      "url": "https://printable-calendar.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": {
    "printable-calendar-maker-mcp": {
      "serverUrl": "https://printable-calendar.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

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