Zovo Meeting Planner
Find meeting times across TZs
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"meeting-planner": {
"url": "https://meeting-planner.zovo.one/mcp"
}
}
}远程端点
https://meeting-planner.zovo.one/mcpstreamable-http它能做什么
工具清单
工具(2)
🟢convert_time(time, date, from, to)
Use this when the user wants to convert a time between time zones or cities (time zone converter, e.g. 'convert 3pm PST to IST', 'time zone converter New York to London', 'what time is 9am EST in Warsaw on Nov 3'). Takes a date, a time, a source place (city, IANA zone, US state, country, UTC offset, or abbreviation) and up to 20 target places; returns the same instant in each place with UTC offset, abbreviation, +1/-1 day shift, the hour difference, and a note when a daylight saving change happens within 7 days. Explains times that are skipped or repeated by DST changes. Does not plan meetings (find_meeting_time covers that), look up flight times, or convert units.
输入模式
{
"type": "object",
"properties": {
"time": {
"description": "Local time at the source place, 24-hour or 12-hour, e.g. \"15:00\", \"3pm\", \"9:30 am\". Omit (with date) to convert the current moment.",
"type": "string",
"maxLength": 20
},
"date": {
"description": "Local date at the source place as YYYY-MM-DD, e.g. 2026-11-03. Defaults to today at the source. Always pass it when the user names a day, because DST depends on the date.",
"type": "string",
"maxLength": 30
},
"from": {
"type": "string",
"maxLength": 80,
"description": "Source place: a city (\"New York\", \"Portland, Oregon\"), an IANA zone (\"Europe/Warsaw\"), a US state, a country, a UTC offset (\"UTC+5:30\"), or an abbreviation (\"PST\", \"CET\", \"IST\"). Abbreviations mean the region's local clock on that date; ambiguous ones (IST, CST, AST, BST) use the first meaning and say so."
},
"to": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"type": "string",
"maxLength": 80
},
"description": "Target places in the same formats, e.g. [\"London\", \"Asia/Kolkata\", \"Sydney\"]."
}
},
"required": [
"from",
"to"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "convert"
},
"status": {
"type": "string",
"enum": [
"ok",
"nonexistent",
"ambiguous"
]
},
"status_note": {
"type": [
"string",
"null"
]
},
"primary": {
"type": "object",
"properties": {
"utc": {
"type": "string"
},
"source": {
"type": "object",
"properties": {
"place": {
"type": "string"
},
"zone": {
"type": "string"
},
"date": {
"type": "string"
},
"weekday": {
"type": "string"
},
"time": {
"type": "string"
},
"time_12h": {
"type": "string"
},
"utc_offset": {
"type": "string"
},
"abbreviation": {
"type": "string"
},
"day_shift": {
"type": "number"
},
"difference": {
"type": "string"
},
"difference_note": {
"type": [
"string",
"null"
]
},
"dst_note": {
"type": [
"string",
"null"
]
}
},
"required": [
"place",
"zone",
"date",
"weekday",
"time",
"time_12h",
"utc_offset",
"abbreviation",
"day_shift",
"difference",
"difference_note",
"dst_note"
],
"additionalProperties": false
},
"targets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"place": {
"type": "string"
},
"zone": {
"type": "string"
},
"date": {
"type": "string"
},
"weekday": {
"type": "string"
},
"time": {
"type": "string"
},
"time_12h": {
"type": "string"
},
"utc_offset": {
"type": "string"
},
"abbreviation": {
"type": "string"
},
"day_shift": {
"type": "number"
},
"difference": {
"type": "string"
},
"difference_note": {
"type": [
"string",
"null"
]
},
"dst_note": {
"type": [
"string",
"null"
]
}
},
"required": [
"place",
"zone",
"date",
"weekday",
"time",
"time_12h",
"utc_offset",
"abbreviation",
"day_shift",
"difference",
"difference_note",
"dst_note"
],
"additionalProperties": false
}
}
},
"required": [
"utc",
"source",
"targets"
],
"additionalProperties": false
},
"alternate": {
"anyOf": [
{
"type": "object",
"properties": {
"utc": {
"type": "string"
},
"source": {
"type": "object",
"properties": {
"place": {
"type": "string"
},
"zone": {
"type": "string"
},
"date": {
"type": "string"
},
"weekday": {
"type": "string"
},
"time": {
"type": "string"
},
"time_12h": {
"type": "string"
},
"utc_offset": {
"type": "string"
},
"abbreviation": {
"type": "string"
},
"day_shift": {
"type": "number"
},
"difference": {
"type": "string"
},
"difference_note": {
"type": [
"string",
"null"
]
},
"dst_note": {
"type": [
"string",
"null"
]
}
},
"required": [
"place",
"zone",
"date",
"weekday",
"time",
"time_12h",
"utc_offset",
"abbreviation",
"day_shift",
"difference",
"difference_note",
"dst_note"
],
"additionalProperties": false
},
"targets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"place": {
"type": "string"
},
"zone": {
"type": "string"
},
"date": {
"type": "string"
},
"weekday": {
"type": "string"
},
"time": {
"type": "string"
},
"time_12h": {
"type": "string"
},
"utc_offset": {
"type": "string"
},
"abbreviation": {
"type": "string"
},
"day_shift": {
"type": "number"
},
"difference": {
"type": "string"
},
"difference_note": {
"type": [
"string",
"null"
]
},
"dst_note": {
"type": [
"string",
"null"
]
}
},
"required": [
"place",
"zone",
"date",
"weekday",
"time",
"time_12h",
"utc_offset",
"abbreviation",
"day_shift",
"difference",
"difference_note",
"dst_note"
],
"additionalProperties": false
}
}
},
"required": [
"utc",
"source",
"targets"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"kind",
"status",
"status_note",
"primary",
"alternate",
"notes"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢find_meeting_time(participants, date_from, date_to, duration_minutes, work_start, ...)
Use this when the user wants to plan a meeting across time zones (meeting planner, 'find a 1-hour slot for New York, London and Bangalore on 2026-11-10', working-hour overlap for a distributed team). Takes 2-8 participants' places with optional working hours and work days, a date or date range of up to 14 days, and a duration. Returns up to 10 distinct ranked slots (default 5), ordered by a fairness cost: 2 hours per person outside working hours plus the time outside working hours of the worst-off person, with night (22:00-07:00) and days off weighing more. Each slot lists every participant's local time and status, a calendar (.ics) download link, the flexible window of meeting times when everyone is inside working hours, and other dates with the same local times. If nobody can meet inside working hours in the range, it also returns the closest time within 7 days after the range that works for everyone. Pass selected_start_utc to get the .ics for one specific slot. Does not read calendars, check availability, issue invitations, support overnight working hours, or account for public holidays.
输入模式
{
"type": "object",
"properties": {
"participants": {
"minItems": 2,
"maxItems": 8,
"type": "array",
"items": {
"type": "object",
"properties": {
"place": {
"type": "string",
"maxLength": 80,
"description": "City, IANA zone, state, country, or abbreviation, e.g. \"Bangalore\" or \"America/Chicago\"."
},
"name": {
"description": "Optional person or team name shown next to the place, e.g. \"Priya\".",
"type": "string",
"maxLength": 40
},
"work_start": {
"description": "This participant's local working-day start, e.g. \"08:00\". Defaults to the top-level work_start.",
"type": "string",
"maxLength": 10
},
"work_end": {
"description": "This participant's local working-day end, e.g. \"18:00\". Defaults to the top-level work_end.",
"type": "string",
"maxLength": 10
},
"work_days": {
"description": "Working days, e.g. [\"sun\",\"mon\",\"tue\",\"wed\",\"thu\"]. Default Mon-Fri (Sun-Thu for Israel, Saudi Arabia and some Gulf countries).",
"maxItems": 7,
"type": "array",
"items": {
"type": "string",
"enum": [
"mon",
"tue",
"wed",
"thu",
"fri",
"sat",
"sun"
]
}
}
},
"required": [
"place"
]
},
"description": "2-8 participants in order; the first one is the reference whose dates define the range, e.g. [{\"place\":\"New York\"},{\"place\":\"London\"},{\"place\":\"Bangalore\"}]."
},
"date_from": {
"description": "First day to search, YYYY-MM-DD in the first participant's time zone, e.g. 2026-10-06. Defaults to today there.",
"type": "string",
"maxLength": 30
},
"date_to": {
"description": "Last day to search (inclusive), YYYY-MM-DD, at most 14 days after date_from, e.g. 2026-10-09. Defaults to date_from.",
"type": "string",
"maxLength": 30
},
"duration_minutes": {
"description": "Meeting length in minutes, e.g. 30 or 60 (default 60).",
"type": "integer",
"minimum": 15,
"maximum": 480
},
"work_start": {
"description": "Default local working-day start for everyone, e.g. \"09:00\" (default).",
"type": "string",
"maxLength": 10
},
"work_end": {
"description": "Default local working-day end for everyone, e.g. \"17:00\" (default).",
"type": "string",
"maxLength": 10
},
"include_weekends": {
"description": "Treat every day of the week as a working day for participants without work_days, e.g. true for weekend events (default false).",
"type": "boolean"
},
"step_minutes": {
"description": "Slot start granularity in minutes: 15, 30 (default), or 60.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"max_results": {
"description": "How many ranked non-overlapping slots to return, e.g. 5 (default).",
"type": "integer",
"minimum": 1,
"maximum": 10
},
"title": {
"description": "Meeting title for the calendar file, e.g. \"Q4 planning sync\".",
"type": "string",
"maxLength": 120
},
"selected_start_utc": {
"description": "Optional chosen start in UTC, e.g. 2026-10-06T14:00:00Z, to get that exact slot's local times and its .ics calendar link.",
"type": "string",
"maxLength": 30
}
},
"required": [
"participants"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "meeting"
},
"request": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"reference": {
"type": "string"
},
"participants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"place": {
"type": "string"
},
"zone": {
"type": "string"
},
"working_hours": {
"type": "string"
}
},
"required": [
"label",
"place",
"zone",
"working_hours"
],
"additionalProperties": false
}
},
"slots": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rank": {
"type": [
"number",
"null"
]
},
"start_utc": {
"type": "string"
},
"end_utc": {
"type": "string"
},
"score": {
"type": "number"
},
"in_hours": {
"type": "number"
},
"summary": {
"type": "string"
},
"ref": {
"type": "string"
},
"ics": {
"type": "string"
},
"start_window": {
"anyOf": [
{
"type": "object",
"properties": {
"first_start_utc": {
"type": "string"
},
"last_start_utc": {
"type": "string"
},
"ref_local": {
"type": "string"
}
},
"required": [
"first_start_utc",
"last_start_utc",
"ref_local"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"also_on": {
"type": "array",
"items": {
"type": "string"
}
},
"locals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"place": {
"type": "string"
},
"date": {
"type": "string"
},
"weekday": {
"type": "string"
},
"start": {
"type": "string"
},
"end": {
"type": "string"
},
"abbreviation": {
"type": "string"
},
"utc_offset": {
"type": "string"
},
"status": {
"type": "string"
},
"status_text": {
"type": "string"
}
},
"required": [
"label",
"place",
"date",
"weekday",
"start",
"end",
"abbreviation",
"utc_offset",
"status",
"status_text"
],
"additionalProperties": false
}
}
},
"required": [
"rank",
"start_utc",
"end_utc",
"score",
"in_hours",
"summary",
"ref",
"ics",
"locals"
],
"additionalProperties": false
}
},
"selected": {
"anyOf": [
{
"type": "object",
"properties": {
"rank": {
"type": [
"number",
"null"
]
},
"start_utc": {
"type": "string"
},
"end_utc": {
"type": "string"
},
"score": {
"type": "number"
},
"in_hours": {
"type": "number"
},
"summary": {
"type": "string"
},
"ref": {
"type": "string"
},
"ics": {
"type": "string"
},
"start_window": {
"anyOf": [
{
"type": "object",
"properties": {
"first_start_utc": {
"type": "string"
},
"last_start_utc": {
"type": "string"
},
"ref_local": {
"type": "string"
}
},
"required": [
"first_start_utc",
"last_start_utc",
"ref_local"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"also_on": {
"type": "array",
"items": {
"type": "string"
}
},
"locals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"place": {
"type": "string"
},
"date": {
"type": "string"
},
"weekday": {
"type": "string"
},
"start": {
"type": "string"
},
"end": {
"type": "string"
},
"abbreviation": {
"type": "string"
},
"utc_offset": {
"type": "string"
},
"status": {
"type": "string"
},
"status_text": {
"type": "string"
}
},
"required": [
"label",
"place",
"date",
"weekday",
"start",
"end",
"abbreviation",
"utc_offset",
"status",
"status_text"
],
"additionalProperties": false
}
}
},
"required": [
"rank",
"start_utc",
"end_utc",
"score",
"in_hours",
"summary",
"ref",
"ics",
"locals"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"next_full_overlap": {
"anyOf": [
{
"type": "object",
"properties": {
"rank": {
"type": [
"number",
"null"
]
},
"start_utc": {
"type": "string"
},
"end_utc": {
"type": "string"
},
"score": {
"type": "number"
},
"in_hours": {
"type": "number"
},
"summary": {
"type": "string"
},
"ref": {
"type": "string"
},
"ics": {
"type": "string"
},
"start_window": {
"anyOf": [
{
"type": "object",
"properties": {
"first_start_utc": {
"type": "string"
},
"last_start_utc": {
"type": "string"
},
"ref_local": {
"type": "string"
}
},
"required": [
"first_start_utc",
"last_start_utc",
"ref_local"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"also_on": {
"type": "array",
"items": {
"type": "string"
}
},
"locals": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"place": {
"type": "string"
},
"date": {
"type": "string"
},
"weekday": {
"type": "string"
},
"start": {
"type": "string"
},
"end": {
"type": "string"
},
"abbreviation": {
"type": "string"
},
"utc_offset": {
"type": "string"
},
"status": {
"type": "string"
},
"status_text": {
"type": "string"
}
},
"required": [
"label",
"place",
"date",
"weekday",
"start",
"end",
"abbreviation",
"utc_offset",
"status",
"status_text"
],
"additionalProperties": false
}
}
},
"required": [
"rank",
"start_utc",
"end_utc",
"score",
"in_hours",
"summary",
"ref",
"ics",
"locals"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"overlap_windows": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"start_utc": {
"type": "string"
},
"end_utc": {
"type": "string"
},
"minutes": {
"type": "number"
},
"ref_local": {
"type": "string"
},
"fits_meeting": {
"type": "boolean"
}
},
"required": [
"date",
"start_utc",
"end_utc",
"minutes",
"ref_local",
"fits_meeting"
],
"additionalProperties": false
}
},
"has_full_overlap": {
"type": "boolean"
},
"days": {
"type": "array",
"items": {}
},
"downloads": {
"type": "object",
"properties": {
"ics": {
"type": "string"
}
},
"required": [
"ics"
],
"additionalProperties": false
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"kind",
"request",
"reference",
"participants",
"slots",
"selected",
"next_full_overlap",
"overlap_windows",
"has_full_overlap",
"days",
"downloads",
"notes"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}社区
证据