Stayspan Schengen Days
Plan Schengen short stays with a rolling 90/180 rule calculator and a daily CSV download.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"schengen-days": {
"url": "https://schengen-days.zovo.one/mcp"
}
}
}远程端点
https://schengen-days.zovo.one/mcpstreamable-http它能做什么
工具清单
工具(3)
🟢calculate_schengen_days(stays, check_date)
Use this when the user needs a schengen calculator, schengen days left, schengen overstay dates or a 90/180 rule calculator for past and planned short stays. Returns days used and left on the check date, stay compliance, overstay dates and daily CSV. Accepts ISO or English US text dates, up to 60 stays over 1,100 days, years 1900–2100. Open stays end at the check date; touching stays merge. Does not model bilateral agreements, residence permits, long-stay visas or visa-sticker limits; calculation aid, not legal advice.
输入模式
{
"type": "object",
"properties": {
"stays": {
"maxItems": 60,
"type": "array",
"items": {
"type": "object",
"properties": {
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "First day in Schengen, inclusive. Example: 2026-03-05 or March 5, 2026."
},
"exit_date": {
"anyOf": [
{
"type": "string",
"maxLength": 80,
"description": "Last day in Schengen, inclusive. Example: 2026-03-20. Omit only for an ongoing stay in calculation or reset mode."
},
{
"type": "null"
}
]
}
},
"required": [
"entry_date"
],
"additionalProperties": false
},
"description": "Up to 60 short stays spanning at most 1,100 days. Example: [{\"entry_date\":\"2026-03-05\",\"exit_date\":\"2026-03-20\"}]. Use [] for none. Exclude residence-permit and type D visa days."
},
"check_date": {
"type": "string",
"maxLength": 80,
"description": "Window ends on this day, inclusive. Example: 2026-03-20 or March 20, 2026. Required for an ongoing stay."
}
},
"required": [
"stays",
"check_date"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"properties": {
"csv": {
"type": "string"
}
},
"required": [
"csv"
],
"additionalProperties": false
},
"note": {
"type": "string"
},
"check_date": {
"type": "string"
},
"window_start": {
"type": "string"
},
"window_end": {
"type": "string"
},
"days_used": {
"type": "number"
},
"days_left": {
"type": "number"
},
"overstay_day_count": {
"type": "number"
},
"first_overstay_date": {
"type": [
"string",
"null"
]
},
"stay_results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"stay": {
"type": "number"
},
"entry_date": {
"type": "string"
},
"exit_date": {
"type": "string"
},
"days": {
"type": "number"
},
"legal": {
"type": "boolean"
},
"first_overstay_date": {
"type": [
"string",
"null"
]
},
"overstay_days": {
"type": "number"
}
},
"required": [
"stay",
"entry_date",
"exit_date",
"days",
"legal",
"first_overstay_date",
"overstay_days"
],
"additionalProperties": false
}
},
"stay_result_count": {
"type": "number"
},
"overstay_ranges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"from": {
"type": "string"
},
"through": {
"type": "string"
},
"days": {
"type": "number"
}
},
"required": [
"from",
"through",
"days"
],
"additionalProperties": false
}
},
"next_legal_entry": {
"type": "string"
},
"next_entry_max_days": {
"type": "number"
}
},
"required": [
"kind",
"notes",
"downloads",
"note",
"check_date",
"window_start",
"window_end",
"days_used",
"days_left",
"overstay_day_count",
"first_overstay_date",
"stay_results",
"stay_result_count",
"overstay_ranges",
"next_legal_entry",
"next_entry_max_days"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢plan_schengen_trip(past_stays, entry_date, planned_length)
Use this when the user asks how many days can I stay in Europe, wants a schengen visa calculator or needs to plan 90 days in 180 days. Finds the maximum consecutive short stay from an entry date and the first entry that supports a requested length. Past stays must be closed and end by entry; up to 60 stays over 1,100 days, years 1900–2100, requested lengths 1–90 days. Does not authorize entry or model bilateral agreements, residence permits, long-stay visas or visa-sticker limits; not legal advice.
输入模式
{
"type": "object",
"properties": {
"past_stays": {
"maxItems": 60,
"type": "array",
"items": {
"type": "object",
"properties": {
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "First day in Schengen, inclusive. Example: 2026-03-05 or March 5, 2026."
},
"exit_date": {
"anyOf": [
{
"type": "string",
"maxLength": 80,
"description": "Last day in Schengen, inclusive. Example: 2026-03-20. Omit only for an ongoing stay in calculation or reset mode."
},
{
"type": "null"
}
]
}
},
"required": [
"entry_date"
],
"additionalProperties": false
},
"description": "Up to 60 short stays spanning at most 1,100 days. Example: [{\"entry_date\":\"2026-03-05\",\"exit_date\":\"2026-03-20\"}]. Use [] for none. Exclude residence-permit and type D visa days."
},
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "Planned first day in Schengen. Example: 2026-07-01 or July 1, 2026. Past stays must end on or before this day."
},
"planned_length": {
"description": "Optional consecutive trip length, including entry and exit, from 1 to 90 days. Example: 30.",
"type": "integer",
"minimum": 1,
"maximum": 90
}
},
"required": [
"past_stays",
"entry_date"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"properties": {
"csv": {
"type": "string"
}
},
"required": [
"csv"
],
"additionalProperties": false
},
"note": {
"type": "string"
},
"entry_date": {
"type": "string"
},
"max_legal_days": {
"type": "number"
},
"last_legal_exit": {
"type": [
"string",
"null"
]
},
"planned_length": {
"type": [
"number",
"null"
]
},
"planned_length_possible": {
"type": [
"boolean",
"null"
]
},
"first_entry_for_full_length": {
"type": [
"string",
"null"
]
},
"days_used_before_trip": {
"type": "number"
},
"history_overstay_days": {
"type": "number"
}
},
"required": [
"kind",
"notes",
"downloads",
"note",
"entry_date",
"max_legal_days",
"last_legal_exit",
"planned_length",
"planned_length_possible",
"first_entry_for_full_length",
"days_used_before_trip",
"history_overstay_days"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢find_schengen_reset_dates(past_stays, reference_date)
Use this when the user wants schengen days left to return, a schengen 90 day rule projection or a days in Europe calculator for future availability. Projects window headroom on the next 180 dates with a daily CSV, assuming no further stays and departure by the reference date. Up to 60 stays over 1,100 days, years 1900–2100. Reference date defaults to America/New_York today. Headroom is not maximum consecutive trip length. Does not model bilateral agreements, residence permits, long-stay visas or visa-sticker limits; not legal advice.
输入模式
{
"type": "object",
"properties": {
"past_stays": {
"maxItems": 60,
"type": "array",
"items": {
"type": "object",
"properties": {
"entry_date": {
"type": "string",
"maxLength": 80,
"description": "First day in Schengen, inclusive. Example: 2026-03-05 or March 5, 2026."
},
"exit_date": {
"anyOf": [
{
"type": "string",
"maxLength": 80,
"description": "Last day in Schengen, inclusive. Example: 2026-03-20. Omit only for an ongoing stay in calculation or reset mode."
},
{
"type": "null"
}
]
}
},
"required": [
"entry_date"
],
"additionalProperties": false
},
"description": "Up to 60 short stays spanning at most 1,100 days. Example: [{\"entry_date\":\"2026-03-05\",\"exit_date\":\"2026-03-20\"}]. Use [] for none. Exclude residence-permit and type D visa days."
},
"reference_date": {
"type": "string",
"maxLength": 80,
"description": "Projection starts the day after this date. Example: 2026-03-31 or March 31, 2026. If omitted, uses today's date in America/New_York and says so."
}
},
"required": [
"past_stays"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"kind": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"properties": {
"csv": {
"type": "string"
}
},
"required": [
"csv"
],
"additionalProperties": false
},
"note": {
"type": "string"
},
"reference_date": {
"type": "string"
},
"days_used": {
"type": "number"
},
"days_left": {
"type": "number"
},
"first_available_date": {
"type": [
"string",
"null"
]
},
"full_90_available_date": {
"type": [
"string",
"null"
]
},
"reset_event_count": {
"type": "number"
},
"reset_dates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"days_used": {
"type": "number"
},
"days_available": {
"type": "number"
},
"days_returned": {
"type": "number"
}
},
"required": [
"date",
"days_used",
"days_available",
"days_returned"
],
"additionalProperties": false
}
}
},
"required": [
"kind",
"notes",
"downloads",
"note",
"reference_date",
"days_used",
"days_left",
"first_available_date",
"full_90_available_date",
"reset_event_count",
"reset_dates"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}社区
证据