Koskamo

Urlaub Smart MCP

An official MCP server for the Urlaub Smart vacation planner that allows AI assistants to calculate optimal vacation plans, identify bridge days, retrieve public and school holidays, and determine childcare gaps for regions in Germany, Austria, and Switzerland.

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.

Urlaub Smart MCP logo, by Marcel WagnerVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Marcel Wagner
MCP endpoint (Streamable HTTP)
https://urlaub-smart.de/api/mcp
Vendor documentation

What its tools do

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

5 of 5 have a description · 0 of 5 declare behavior hints · 4 of 4 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to urlaub-smart.de ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Calculate optimal vacation plans for specific regions and years
  • Identify the best bridge days and holiday clusters
  • Retrieve public and school holiday schedules
  • Determine childcare gaps for parents with school-age children

Source and maintenance

Vendor evidenceRegistry 1.1.0

Protocol and capabilities

Server
urlaub-smart 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

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

urlaub-smart.de plans vacation days around public holidays for Germany, Austria and Switzerland - all 16 German states, 9 Austrian states and 26 Swiss cantons. Other countries are not covered. Use plan_vacation for "how should I place my vacation days" (it also takes a shift rotation), best_bridge_days for "what are the bridge days", public_and_school_holidays for dates, childcare_gap for "can we cover the school holidays" with children. Always include the returned url so the user can open and adjust the plan. Site: https://urlaub-smart.de

Tools

5 advertised

plan_vacation — Plan vacation days
Advertised by the server during the last successful anonymous check.

Optimal vacation plan for a region and year: which days to book so that public holidays and weekends turn into the longest breaks. Returns the plan blocks (booking dates, days off, factor, holidays used), further opportunities, a markdown table and a link to the interactive plan on urlaub-smart.de. Cite the URL when answering.

plan_vacation input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "region"
  ],
  "properties": {
    "year": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Planning year, 2025 to 2030; defaults to the year people currently plan for"
    },
    "shift": {
      "type": "object",
      "required": [
        "onDays",
        "offDays",
        "firstWorkingDay"
      ],
      "properties": {
        "onDays": {
          "type": "integer",
          "maximum": 14,
          "minimum": 1
        },
        "offDays": {
          "type": "integer",
          "maximum": 14,
          "minimum": 1
        },
        "firstWorkingDay": {
          "type": "string",
          "maxLength": 10,
          "description": "ISO date of the first working day of a cycle"
        }
      },
      "description": "Rolling shift rotation instead of Mon–Fri, e.g. 4 days on / 2 days off. Replaces the weekday assumption entirely."
    },
    "locale": {
      "enum": [
        "de",
        "en"
      ],
      "type": "string",
      "default": "de",
      "description": "Language of names and explanations (German only)"
    },
    "region": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "Region as name, slug or ISO code, e.g. \"Bayern\", \"bavaria\", \"DE-BY\", \"Tirol\", \"Zürich\" or a country like \"Deutschland\" / \"AT\". Germany, Austria and Switzerland only."
    },
    "strategy": {
      "enum": [
        "balanced",
        "long-weekends",
        "extended"
      ],
      "type": "string",
      "default": "balanced",
      "description": "balanced = mix, long-weekends = max 2 vacation days per block, extended = blocks of 4+ days"
    },
    "fixedDates": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 10
      },
      "maxItems": 60,
      "description": "ISO dates already booked as vacation; the plan works around them"
    },
    "vacationDays": {
      "type": "integer",
      "maximum": 60,
      "minimum": 0,
      "description": "Vacation days available for the year; defaults to the usual account of the country: 30 in Germany, 25 in Austria and Switzerland"
    },
    "carryoverDays": {
      "type": "integer",
      "maximum": 60,
      "minimum": 0,
      "description": "Part of vacationDays that is carry-over from last year and expires on March 31; spent first on periods before the deadline"
    },
    "closuresOnTop": {
      "type": "boolean",
      "description": "Set true only if the employer gives the closures on top of the vacation days; then they are treated like public holidays"
    },
    "schoolHolidays": {
      "enum": [
        "any",
        "avoid",
        "prefer"
      ],
      "type": "string",
      "default": "any",
      "description": "any = ignore, avoid = no overlap with school holidays, prefer = book only inside school holidays"
    },
    "companyClosures": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "from",
          "to"
        ],
        "properties": {
          "to": {
            "type": "string",
            "maxLength": 10
          },
          "from": {
            "type": "string",
            "maxLength": 10
          }
        }
      },
      "maxItems": 12,
      "description": "Company closures (Betriebsferien) as inclusive ISO date ranges. By default their working days come off vacationDays, as Betriebsferien are normally scheduled annual leave"
    },
    "companyFreeDates": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 10
      },
      "maxItems": 60,
      "description": "Working days the employer gives off without a vacation day, ISO dates (e.g. 2027-12-24, 2027-12-31); treated like public holidays"
    }
  }
}
best_bridge_days — Best bridge days and levers
Advertised by the server during the last successful anonymous check.

The six best non-overlapping vacation levers of a year for a region: classic bridge days (1 vacation day → 4 days off) and holiday clusters (e.g. 4 days → 10 days off), with booking dates, holidays used and factor. Includes a markdown table and the page URL.

best_bridge_days input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "region"
  ],
  "properties": {
    "year": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Planning year, 2025 to 2030; defaults to the year people currently plan for"
    },
    "locale": {
      "enum": [
        "de",
        "en"
      ],
      "type": "string",
      "default": "de",
      "description": "Language of names and explanations (German only)"
    },
    "region": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "Region as name, slug or ISO code, e.g. \"Bayern\", \"bavaria\", \"DE-BY\", \"Tirol\", \"Zürich\" or a country like \"Deutschland\" / \"AT\". Germany, Austria and Switzerland only."
    }
  }
}
public_and_school_holidays — Public and school holidays
Advertised by the server during the last successful anonymous check.

All public holidays (with weekday, national/regional scope, weekend flag) and school holiday periods for a region and year. Source: OpenHolidaysAPI.

public_and_school_holidays input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "region"
  ],
  "properties": {
    "year": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Planning year, 2025 to 2030; defaults to the year people currently plan for"
    },
    "locale": {
      "enum": [
        "de",
        "en"
      ],
      "type": "string",
      "default": "de",
      "description": "Language of names and explanations (German only)"
    },
    "region": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "Region as name, slug or ISO code, e.g. \"Bayern\", \"bavaria\", \"DE-BY\", \"Tirol\", \"Zürich\" or a country like \"Deutschland\" / \"AT\". Germany, Austria and Switzerland only."
    }
  }
}
childcare_gap — School-holiday childcare gap
Advertised by the server during the last successful anonymous check.

How much of a region's school holidays two vacation accounts cover, and which weeks stay open. School holidays run to about 60 working days a year while a vacation account holds 25 to 30 days, so a care day always costs exactly one vacation day and a joint family holiday costs two and covers one. Answers "can we cover the school holidays" for parents.

childcare_gap input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "region"
  ],
  "properties": {
    "year": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Planning year, 2025 to 2030; defaults to the year people currently plan for"
    },
    "locale": {
      "enum": [
        "de",
        "en"
      ],
      "type": "string",
      "default": "de",
      "description": "Language of names and explanations (German only)"
    },
    "region": {
      "type": "string",
      "maxLength": 80,
      "minLength": 2,
      "description": "Region as name, slug or ISO code, e.g. \"Bayern\", \"bavaria\", \"DE-BY\", \"Tirol\", \"Zürich\" or a country like \"Deutschland\" / \"AT\". Germany, Austria and Switzerland only."
    },
    "jointDays": {
      "type": "integer",
      "maximum": 30,
      "minimum": 0,
      "description": "Care days the family wants to spend together; they cost both parents a day and cover one. Default 10."
    },
    "vacationDays": {
      "type": "integer",
      "maximum": 60,
      "minimum": 0,
      "description": "Vacation days of the first parent; defaults to 30 in Germany, 25 in Austria and Switzerland"
    },
    "partnerVacationDays": {
      "type": "integer",
      "maximum": 60,
      "minimum": 0,
      "description": "Vacation days of the second parent; omit to ask for one person alone"
    }
  }
}
list_regions — List supported countries and regions
Advertised by the server during the last successful anonymous check.

Countries and their regions (German states, Austrian states, Swiss cantons, …) with codes, names and slugs accepted by the other tools.

list_regions input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

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
661 ms
95th percentile latency
661 ms

Maintenance history

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

  • · probe · passed · 661 ms · metadata changed · 5 tool(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 urlaub-smart-mcp https://urlaub-smart.de/api/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 urlaub-smart-mcp --url https://urlaub-smart.de/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable urlaub-smart-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "urlaub-smart-mcp": {
      "url": "https://urlaub-smart.de/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "urlaub-smart-mcp": {
      "type": "streamableHttp",
      "url": "https://urlaub-smart.de/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start urlaub-smart-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "urlaub-smart-mcp": {
      "type": "http",
      "url": "https://urlaub-smart.de/api/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 urlaub-smart-mcp https://urlaub-smart.de/api/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://urlaub-smart.de/api/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": {
    "urlaub-smart-mcp": {
      "serverUrl": "https://urlaub-smart.de/api/mcp"
    }
  }
}

Let your agent find its tools

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

Do you run Urlaub Smart MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing