WhenMeet.me — group scheduling

Group meeting scheduler — rank times everyone's free across Google & Outlook, book Meet/Teams.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
88%
命名质量
95%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~1,317token 数(工具定义)
~1.0 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.03%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "scheduler": {
      "url": "https://whenmeet.me/mcp"
    }
  }
}

远程端点

https://whenmeet.me/mcpstreamable-http

它能做什么

工具清单

工具(8)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢find_common_slots(participants, from, to, durationMin, tz)

Rank the best meeting times for the given participants, merging live Google/Microsoft calendar data, hand-marked availability and the heat-map sources. Each participant is filtered (Mon–Fri, waking hours) and scored in their OWN timezone; scores factor in buffer time around existing meetings and prefer sooner slots. Returns up to 8 slots: everyone-free slots first (allFree:true), then — only if there are too few — the best compromise slots (allFree:false) with a freeCount. Defaults to the next 14 days. Requires authentication.

输入模式

{
  "type": "object",
  "properties": {
    "participants": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Participant emails (the authenticated user is the host and should be included)."
    },
    "from": {
      "type": "number",
      "description": "Window start, unix ms. Default: now."
    },
    "to": {
      "type": "number",
      "description": "Window end, unix ms. Default: now + 14 days."
    },
    "durationMin": {
      "type": "number",
      "enum": [
        15,
        30,
        45,
        60
      ],
      "description": "Meeting length. Default 30."
    },
    "tz": {
      "type": "string",
      "description": "Requester IANA zone, e.g. Europe/Warsaw — the fallback zone for participants whose own timezone is unknown, and the zone for the round-hour scoring bonus."
    }
  },
  "required": [
    "participants"
  ]
}
🟡create_meeting(participants, startsAt, endsAt, title, conference, ...)

Confirm a meeting: writes the event into the authenticated host’s calendar with an optional Google Meet/Teams link, emails invites with an ICS attachment, and returns the share URL (/m/<id>). Requires authentication.

输入模式

{
  "type": "object",
  "properties": {
    "participants": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "startsAt": {
      "type": "number",
      "description": "unix ms"
    },
    "endsAt": {
      "type": "number",
      "description": "unix ms"
    },
    "title": {
      "type": "string"
    },
    "conference": {
      "type": "string",
      "enum": [
        "meet",
        "teams"
      ],
      "description": "Omit for no conference link."
    },
    "tz": {
      "type": "string",
      "description": "IANA zone used to format times in invite emails."
    }
  },
  "required": [
    "participants",
    "startsAt",
    "endsAt"
  ]
}
🟢get_meeting(meetingId)

Read a meeting by its share-link id (the UUID from /m/<id>): time, title, conference URL, host, and any proposed alternate times with their status.

输入模式

{
  "type": "object",
  "properties": {
    "meetingId": {
      "type": "string"
    }
  },
  "required": [
    "meetingId"
  ]
}
🟢get_meeting_availability(meetingId, from, to, durationMin, tz)

Aggregated group availability for an existing meeting (the symmetric heat-map): per-30-min-slot counts of how many participants are free, plus ranked slots (per-participant timezones, buffer + soonness scoring, allFree:true everyone-free slots and allFree:false compromise slots). Individual calendars are never exposed. No auth needed — the meeting id is the capability.

输入模式

{
  "type": "object",
  "properties": {
    "meetingId": {
      "type": "string"
    },
    "from": {
      "type": "number",
      "description": "unix ms. Default: now."
    },
    "to": {
      "type": "number",
      "description": "unix ms. Default: now + 14 days."
    },
    "durationMin": {
      "type": "number",
      "enum": [
        15,
        30,
        45,
        60
      ]
    },
    "tz": {
      "type": "string"
    }
  },
  "required": [
    "meetingId"
  ]
}
⚪suggest_time(meetingId, suggestedBy, startsAt, endsAt, message, ...)

Propose a different time for an existing meeting on behalf of a guest. The host is notified by email and can accept or decline. Authenticated callers (Bearer PAT) skip the bot challenge; an anonymous caller must pass a Cloudflare Turnstile token in `turnstileToken` (only required when the server is configured with a Turnstile secret).

输入模式

{
  "type": "object",
  "properties": {
    "meetingId": {
      "type": "string"
    },
    "suggestedBy": {
      "type": "string",
      "description": "Email of the person proposing."
    },
    "startsAt": {
      "type": "number",
      "description": "unix ms"
    },
    "endsAt": {
      "type": "number",
      "description": "unix ms"
    },
    "message": {
      "type": "string"
    },
    "turnstileToken": {
      "type": "string",
      "description": "Cloudflare Turnstile token; required for anonymous callers when a Turnstile secret is configured."
    }
  },
  "required": [
    "meetingId",
    "suggestedBy",
    "startsAt",
    "endsAt"
  ]
}
⚪respond_to_suggestion(meetingId, suggestionId, action)

Accept or decline a proposed alternate time. Accepting moves the meeting (calendar event included) and re-sends invites. Only the meeting host may call this — requires authentication.

输入模式

{
  "type": "object",
  "properties": {
    "meetingId": {
      "type": "string"
    },
    "suggestionId": {
      "type": "string"
    },
    "action": {
      "type": "string",
      "enum": [
        "accept",
        "decline"
      ]
    }
  },
  "required": [
    "meetingId",
    "suggestionId",
    "action"
  ]
}
🟡set_manual_availability(email, windowFrom, windowTo, freeSlots, turnstileToken)

Publish hand-marked FREE time slots for an email address (the no-calendar fallback, e.g. Apple iCloud users). Replaces previously marked slots inside the window; the group heat-map updates immediately. Authenticated callers (Bearer PAT) skip the bot challenge; an anonymous caller must pass a Cloudflare Turnstile token in `turnstileToken` (only required when the server is configured with a Turnstile secret).

输入模式

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string"
    },
    "windowFrom": {
      "type": "number",
      "description": "unix ms"
    },
    "windowTo": {
      "type": "number",
      "description": "unix ms"
    },
    "freeSlots": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "start": {
            "type": "number"
          },
          "end": {
            "type": "number"
          }
        },
        "required": [
          "start",
          "end"
        ]
      }
    },
    "turnstileToken": {
      "type": "string",
      "description": "Cloudflare Turnstile token; required for anonymous callers when a Turnstile secret is configured."
    }
  },
  "required": [
    "email",
    "windowFrom",
    "windowTo",
    "freeSlots"
  ]
}
🟢get_manual_availability(email, from, to)

Read previously hand-marked free slots for an email within a window.

输入模式

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string"
    },
    "from": {
      "type": "number"
    },
    "to": {
      "type": "number"
    }
  },
  "required": [
    "email",
    "from",
    "to"
  ]
}

社区

评价此服务器

证据

最近观测

已验证未记录版本8 个工具
已验证未记录版本8 个工具
已验证未记录版本8 个工具