Koskamo

Zovo Meeting Planner MCP

Zovo Meeting Planner is a community MCP server that converts times across time zones using the IANA database and ranks meeting slots for 2-8 participants based on working hours. It provides 24-hour timelines, handles daylight saving time nuances, and generates .ics calendar files for selected slots without requiring user sign-in.

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 Meeting Planner MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://meeting-planner.zovo.one/mcp
Vendor documentation

What you can do with it

  • Convert a specific time between multiple cities and time zones
  • Find optimal meeting slots for 2-8 people across different locations
  • Generate an .ics calendar file for a chosen meeting time

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
meeting-planner 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.

Zovo Meeting Planner converts times between cities and time zones with exact daylight saving time (DST) handling, and finds meeting times across time zones. Use convert_time for 'what time is X in Y' questions and find_meeting_time to plan across 2-8 places. Pass explicit dates (YYYY-MM-DD) because offsets depend on the date. Report the tool's DST and ambiguity notes to the user, and when find_meeting_time returns next_full_overlap, mention that closest time that works for everyone.

Tools

2 advertised

convert_time — Convert time between time zones
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

convert_time input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "from",
    "to"
  ],
  "properties": {
    "to": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 80
      },
      "maxItems": 20,
      "minItems": 1,
      "description": "Target places in the same formats, e.g. [\"London\", \"Asia/Kolkata\", \"Sydney\"]."
    },
    "date": {
      "type": "string",
      "maxLength": 30,
      "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."
    },
    "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."
    },
    "time": {
      "type": "string",
      "maxLength": 20,
      "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."
    }
  }
}
convert_time output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "status",
    "status_note",
    "primary",
    "alternate",
    "notes"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "convert"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "status": {
      "enum": [
        "ok",
        "nonexistent",
        "ambiguous"
      ],
      "type": "string"
    },
    "primary": {
      "type": "object",
      "required": [
        "utc",
        "source",
        "targets"
      ],
      "properties": {
        "utc": {
          "type": "string"
        },
        "source": {
          "type": "object",
          "required": [
            "place",
            "zone",
            "date",
            "weekday",
            "time",
            "time_12h",
            "utc_offset",
            "abbreviation",
            "day_shift",
            "difference",
            "difference_note",
            "dst_note"
          ],
          "properties": {
            "date": {
              "type": "string"
            },
            "time": {
              "type": "string"
            },
            "zone": {
              "type": "string"
            },
            "place": {
              "type": "string"
            },
            "weekday": {
              "type": "string"
            },
            "dst_note": {
              "type": [
                "string",
                "null"
              ]
            },
            "time_12h": {
              "type": "string"
            },
            "day_shift": {
              "type": "number"
            },
            "difference": {
              "type": "string"
            },
            "utc_offset": {
              "type": "string"
            },
            "abbreviation": {
              "type": "string"
            },
            "difference_note": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "additionalProperties": false
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "place",
              "zone",
              "date",
              "weekday",
              "time",
              "time_12h",
              "utc_offset",
              "abbreviation",
              "day_shift",
              "difference",
              "difference_note",
              "dst_note"
            ],
            "properties": {
              "date": {
                "type": "string"
              },
              "time": {
                "type": "string"
              },
              "zone": {
                "type": "string"
              },
              "place": {
                "type": "string"
              },
              "weekday": {
                "type": "string"
              },
              "dst_note": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "time_12h": {
                "type": "string"
              },
              "day_shift": {
                "type": "number"
              },
              "difference": {
                "type": "string"
              },
              "utc_offset": {
                "type": "string"
              },
              "abbreviation": {
                "type": "string"
              },
              "difference_note": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    },
    "alternate": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "utc",
            "source",
            "targets"
          ],
          "properties": {
            "utc": {
              "type": "string"
            },
            "source": {
              "type": "object",
              "required": [
                "place",
                "zone",
                "date",
                "weekday",
                "time",
                "time_12h",
                "utc_offset",
                "abbreviation",
                "day_shift",
                "difference",
                "difference_note",
                "dst_note"
              ],
              "properties": {
                "date": {
                  "type": "string"
                },
                "time": {
                  "type": "string"
                },
                "zone": {
                  "type": "string"
                },
                "place": {
                  "type": "string"
                },
                "weekday": {
                  "type": "string"
                },
                "dst_note": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "time_12h": {
                  "type": "string"
                },
                "day_shift": {
                  "type": "number"
                },
                "difference": {
                  "type": "string"
                },
                "utc_offset": {
                  "type": "string"
                },
                "abbreviation": {
                  "type": "string"
                },
                "difference_note": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "additionalProperties": false
            },
            "targets": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "place",
                  "zone",
                  "date",
                  "weekday",
                  "time",
                  "time_12h",
                  "utc_offset",
                  "abbreviation",
                  "day_shift",
                  "difference",
                  "difference_note",
                  "dst_note"
                ],
                "properties": {
                  "date": {
                    "type": "string"
                  },
                  "time": {
                    "type": "string"
                  },
                  "zone": {
                    "type": "string"
                  },
                  "place": {
                    "type": "string"
                  },
                  "weekday": {
                    "type": "string"
                  },
                  "dst_note": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "time_12h": {
                    "type": "string"
                  },
                  "day_shift": {
                    "type": "number"
                  },
                  "difference": {
                    "type": "string"
                  },
                  "utc_offset": {
                    "type": "string"
                  },
                  "abbreviation": {
                    "type": "string"
                  },
                  "difference_note": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "additionalProperties": false
              }
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "status_note": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
convert_time annotations
{
  "title": "Convert time between time zones",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_meeting_time — Find a meeting time across time zones
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

find_meeting_time input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "participants"
  ],
  "properties": {
    "title": {
      "type": "string",
      "maxLength": 120,
      "description": "Meeting title for the calendar file, e.g. \"Q4 planning sync\"."
    },
    "date_to": {
      "type": "string",
      "maxLength": 30,
      "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."
    },
    "work_end": {
      "type": "string",
      "maxLength": 10,
      "description": "Default local working-day end for everyone, e.g. \"17:00\" (default)."
    },
    "date_from": {
      "type": "string",
      "maxLength": 30,
      "description": "First day to search, YYYY-MM-DD in the first participant's time zone, e.g. 2026-10-06. Defaults to today there."
    },
    "work_start": {
      "type": "string",
      "maxLength": 10,
      "description": "Default local working-day start for everyone, e.g. \"09:00\" (default)."
    },
    "max_results": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "How many ranked non-overlapping slots to return, e.g. 5 (default)."
    },
    "participants": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "place"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 40,
            "description": "Optional person or team name shown next to the place, e.g. \"Priya\"."
          },
          "place": {
            "type": "string",
            "maxLength": 80,
            "description": "City, IANA zone, state, country, or abbreviation, e.g. \"Bangalore\" or \"America/Chicago\"."
          },
          "work_end": {
            "type": "string",
            "maxLength": 10,
            "description": "This participant's local working-day end, e.g. \"18:00\". Defaults to the top-level work_end."
          },
          "work_days": {
            "type": "array",
            "items": {
              "enum": [
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat",
                "sun"
              ],
              "type": "string"
            },
            "maxItems": 7,
            "description": "Working days, e.g. [\"sun\",\"mon\",\"tue\",\"wed\",\"thu\"]. Default Mon-Fri (Sun-Thu for Israel, Saudi Arabia and some Gulf countries)."
          },
          "work_start": {
            "type": "string",
            "maxLength": 10,
            "description": "This participant's local working-day start, e.g. \"08:00\". Defaults to the top-level work_start."
          }
        }
      },
      "maxItems": 8,
      "minItems": 2,
      "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\"}]."
    },
    "step_minutes": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Slot start granularity in minutes: 15, 30 (default), or 60."
    },
    "duration_minutes": {
      "type": "integer",
      "maximum": 480,
      "minimum": 15,
      "description": "Meeting length in minutes, e.g. 30 or 60 (default 60)."
    },
    "include_weekends": {
      "type": "boolean",
      "description": "Treat every day of the week as a working day for participants without work_days, e.g. true for weekend events (default false)."
    },
    "selected_start_utc": {
      "type": "string",
      "maxLength": 30,
      "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."
    }
  }
}
find_meeting_time output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "request",
    "reference",
    "participants",
    "slots",
    "selected",
    "next_full_overlap",
    "overlap_windows",
    "has_full_overlap",
    "days",
    "downloads",
    "notes"
  ],
  "properties": {
    "days": {
      "type": "array",
      "items": {}
    },
    "kind": {
      "type": "string",
      "const": "meeting"
    },
    "notes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "slots": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "rank",
          "start_utc",
          "end_utc",
          "score",
          "in_hours",
          "summary",
          "ref",
          "ics",
          "locals"
        ],
        "properties": {
          "ics": {
            "type": "string"
          },
          "ref": {
            "type": "string"
          },
          "rank": {
            "type": [
              "number",
              "null"
            ]
          },
          "score": {
            "type": "number"
          },
          "locals": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "label",
                "place",
                "date",
                "weekday",
                "start",
                "end",
                "abbreviation",
                "utc_offset",
                "status",
                "status_text"
              ],
              "properties": {
                "end": {
                  "type": "string"
                },
                "date": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "place": {
                  "type": "string"
                },
                "start": {
                  "type": "string"
                },
                "status": {
                  "type": "string"
                },
                "weekday": {
                  "type": "string"
                },
                "utc_offset": {
                  "type": "string"
                },
                "status_text": {
                  "type": "string"
                },
                "abbreviation": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          },
          "also_on": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "end_utc": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "in_hours": {
            "type": "number"
          },
          "start_utc": {
            "type": "string"
          },
          "start_window": {
            "anyOf": [
              {
                "type": "object",
                "required": [
                  "first_start_utc",
                  "last_start_utc",
                  "ref_local"
                ],
                "properties": {
                  "ref_local": {
                    "type": "string"
                  },
                  "last_start_utc": {
                    "type": "string"
                  },
                  "first_start_utc": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "request": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "selected": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "rank",
            "start_utc",
            "end_utc",
            "score",
            "in_hours",
            "summary",
            "ref",
            "ics",
            "locals"
          ],
          "properties": {
            "ics": {
              "type": "string"
            },
            "ref": {
              "type": "string"
            },
            "rank": {
              "type": [
                "number",
                "null"
              ]
            },
            "score": {
              "type": "number"
            },
            "locals": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "label",
                  "place",
                  "date",
                  "weekday",
                  "start",
                  "end",
                  "abbreviation",
                  "utc_offset",
                  "status",
                  "status_text"
                ],
                "properties": {
                  "end": {
                    "type": "string"
                  },
                  "date": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "place": {
                    "type": "string"
                  },
                  "start": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string"
                  },
                  "weekday": {
                    "type": "string"
                  },
                  "utc_offset": {
                    "type": "string"
                  },
                  "status_text": {
                    "type": "string"
                  },
                  "abbreviation": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "also_on": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "end_utc": {
              "type": "string"
            },
            "summary": {
              "type": "string"
            },
            "in_hours": {
              "type": "number"
            },
            "start_utc": {
              "type": "string"
            },
            "start_window": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "first_start_utc",
                    "last_start_utc",
                    "ref_local"
                  ],
                  "properties": {
                    "ref_local": {
                      "type": "string"
                    },
                    "last_start_utc": {
                      "type": "string"
                    },
                    "first_start_utc": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "downloads": {
      "type": "object",
      "required": [
        "ics"
      ],
      "properties": {
        "ics": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "reference": {
      "type": "string"
    },
    "participants": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "label",
          "place",
          "zone",
          "working_hours"
        ],
        "properties": {
          "zone": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "place": {
            "type": "string"
          },
          "working_hours": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "overlap_windows": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "start_utc",
          "end_utc",
          "minutes",
          "ref_local",
          "fits_meeting"
        ],
        "properties": {
          "date": {
            "type": "string"
          },
          "end_utc": {
            "type": "string"
          },
          "minutes": {
            "type": "number"
          },
          "ref_local": {
            "type": "string"
          },
          "start_utc": {
            "type": "string"
          },
          "fits_meeting": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      }
    },
    "has_full_overlap": {
      "type": "boolean"
    },
    "next_full_overlap": {
      "anyOf": [
        {
          "type": "object",
          "required": [
            "rank",
            "start_utc",
            "end_utc",
            "score",
            "in_hours",
            "summary",
            "ref",
            "ics",
            "locals"
          ],
          "properties": {
            "ics": {
              "type": "string"
            },
            "ref": {
              "type": "string"
            },
            "rank": {
              "type": [
                "number",
                "null"
              ]
            },
            "score": {
              "type": "number"
            },
            "locals": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "label",
                  "place",
                  "date",
                  "weekday",
                  "start",
                  "end",
                  "abbreviation",
                  "utc_offset",
                  "status",
                  "status_text"
                ],
                "properties": {
                  "end": {
                    "type": "string"
                  },
                  "date": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "place": {
                    "type": "string"
                  },
                  "start": {
                    "type": "string"
                  },
                  "status": {
                    "type": "string"
                  },
                  "weekday": {
                    "type": "string"
                  },
                  "utc_offset": {
                    "type": "string"
                  },
                  "status_text": {
                    "type": "string"
                  },
                  "abbreviation": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "also_on": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "end_utc": {
              "type": "string"
            },
            "summary": {
              "type": "string"
            },
            "in_hours": {
              "type": "number"
            },
            "start_utc": {
              "type": "string"
            },
            "start_window": {
              "anyOf": [
                {
                  "type": "object",
                  "required": [
                    "first_start_utc",
                    "last_start_utc",
                    "ref_local"
                  ],
                  "properties": {
                    "ref_local": {
                      "type": "string"
                    },
                    "last_start_utc": {
                      "type": "string"
                    },
                    "first_start_utc": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": false
                },
                {
                  "type": "null"
                }
              ]
            }
          },
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "additionalProperties": false
}
find_meeting_time annotations
{
  "title": "Find a meeting time across time zones",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

meeting-planner-widget — Zovo Meeting Planner view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Meeting Planner.

meeting-planner-widget URI
ui://widget/meeting-planner-v1-1.0.0-25bf283aa41fef76ae9452b06f06a943c208bec6806b7e818b0751a511782c3f.html

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

meeting-planner-widget-legacy — Zovo Meeting Planner view (previous versions)

Advertised by the server during the last successful anonymous check.

meeting-planner-widget-legacy URI template
ui://widget/meeting-planner-{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
575 ms
95th percentile latency
575 ms

Maintenance history

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

  • · probe · passed · 575 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 zovo-meeting-planner-mcp https://meeting-planner.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-meeting-planner-mcp --url https://meeting-planner.zovo.one/mcp

Cursor

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

Cline

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

VS Code

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

Let your agent find its tools

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