关于 meetergo
meetergo 是面向需要处理日程及相关 CRM 任务的 Agent 的 MCP 服务。它提供预约变更、联系人、路由表单和网站助手设置等工具,可通过托管端点或本地进程连接。
主要功能
- 01查询空闲时段并管理预约
- 02管理会议类型和预订页面
- 03处理联系人和路由表单
- 04设置并测试网站助手
- 05通过托管 HTTP 或本地 stdio 连接
适用场景
- 01预订、改期或取消会议
- 02查看即将举行的预约和日历空档
- 03创建用于线索分流的资格表单
- 04配置并测试网站助手
MCP 相关
向 MCP 客户端提供 57 种日程安排、CRM、Mira 和配置工具。客户端可连接托管的 Streamable HTTP 端点,或通过 stdio 在本地运行软件包。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.meetergo.com/mcpclaude mcp add --transport http com-meetergo https://mcp.meetergo.com/mcp{"mcpServers":{"com-meetergo":{"type":"http","url":"https://mcp.meetergo.com/mcp"}}}在 Cursor 中打开{"servers":{"com-meetergo":{"type":"http","url":"https://mcp.meetergo.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"com-meetergo":{"type":"http","url":"https://mcp.meetergo.com/mcp"}}}{"mcpServers":{"com-meetergo":{"serverUrl":"https://mcp.meetergo.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
meetergo MCP 服务
让 AI Agent 真正管理日历:查找空档、预约、改期、取消、查看即将安排的事项,并保持联系人记录准确。
请勿与位于 https://developer.meetergo.com/mcp 的 docs MCP 服务混淆;该服务用于搜索文档,不能更改任何内容。两者都很有用,且用途不同:
| Docs MCP | 本服务 | |
|---|---|---|
| 端点 | developer.meetergo.com/mcp | mcp.meetergo.com/mcp,或通过 stdio 运行 npx |
| 工具 | SearchMeetergo | 57 个日程安排、CRM、Mira 和配置工具 |
| 能预约吗? | 不能 | 能 |
| 用途 | 编写集成 | 作为集成 |
设置
在 my.meetergo.com/integrations 创建个人访问令牌,其格式类似 rgo-…,然后将客户端指向托管服务,或通过 stdio 在本地运行此软件包。所有套餐都可以使用该令牌,包括 Free 套餐。
托管服务
https://mcp.meetergo.com/mcp
使用 Streamable HTTP,通过 Authorization: Bearer rgo-… 进行身份验证。路径很重要:mcp.meetergo.com 本身不是端点。对于支持远程 URL 和请求头的客户端:
{
"mcpServers": {
"meetergo": {
"url": "https://mcp.meetergo.com/mcp",
"headers": { "Authorization": "Bearer rgo-your_token_here" }
}
}
}
本地运行(npx)
{
"mcpServers": {
"meetergo": {
"command": "npx",
"args": ["-y", "@meetergo/mcp-server"],
"env": { "MEETERGO_TOKEN": "rgo-your_token_here" }
}
}
}
兼容 Claude Desktop、Claude Code、Cursor,或任何支持 MCP 的应用。
限定令牌权限
创建令牌时,可以将其权限限制在 Agent 实际需要的功能范围内(日程安排、联系人和交易、Mira、表单、账户)。受限令牌无法访问这些范围之外的任何内容,包括读取操作,因此请为你打算使用的工具授予相应的权限组——仅 Mira 权限的令牌无法预约,仅日程安排权限的令牌无法读取你的知识库。
使用登录而非粘贴令牌
托管端点现已支持 OAuth 登录。发现信息发布于 /.well-known/oauth-protected-resource(RFC 9728),因此支持该功能的客户端可以从 MCP URL 发起流程。客户端采用预注册方式,而非通过动态客户端注册创建。对于 Claude 自定义连接器,请在高级设置中输入公开客户端 ID mcp-claude,并将客户端密钥留空。目录中的 Claude 和 ChatGPT 客户端已分别配置对应的提供方。
Cursor 和 Grok Bot
此仓库包含 Cursor 和 Grok Bot 共用的 Cursor Marketplace 插件。在“设置”>“插件”>“Marketplace”中安装 meetergo,然后完成浏览器登录。该插件连接到托管端点,并使用公开的 PKCE 客户端 ID mcp-cursor;无需粘贴客户端密钥或令牌。
在 Marketplace 列表发布前进行本地审核时,可将此仓库作为本地 Cursor 插件加载。其 .cursor-plugin/plugin.json 清单指向 mcp.json,其中包含相同的托管 URL 和 OAuth 客户端 ID。
个人访问令牌适用于所有 MCP 客户端和所有套餐,包括 Free 套餐。本页其余内容均以此为前提。
代表其他用户操作
个人访问令牌始终以其所有者身份操作。若要让 Agent 为整个公司服务——例如由助手代表多位同事预约——请使用 Platform API Key(ak_live:<uuid>:<secret>),并指定目标用户:
"env": {
"MEETERGO_TOKEN": "ak_live:...",
"MEETERGO_USER_ID": "the-user-uuid"
}
这两种令牌的要求截然相反,服务会在启动时检查这两项要求,而不是等到预约过程中才让你发现:
- Platform API Key 必须设置
MEETERGO_USER_ID——API 几乎要求每个路由都指定操作者; - 个人访问令牌不得设置该变量——它始终以所有者身份操作,API 会直接拒绝此请求头。
使用托管端点时,操作者用户 ID 通过 X-Meetergo-Api-User-Id 请求头传递,而不是通过环境变量;同样的两项规则仍然适用,使用个人访问令牌发送此请求头会被拒绝。
环境
stdio 入口(meetergo-mcp,即 npx 运行的程序):
| 变量 | 必填 | 用途 |
|---|---|---|
MEETERGO_TOKEN | 是 | rgo-… 个人访问令牌或 ak_live:… 平台 API 密钥 |
MEETERGO_USER_ID | 使用平台 API 密钥时必填 | 要以其身份操作的用户 |
MEETERGO_API_URL | API 基础地址覆盖值,默认值为 https://api.meetergo.com/v4 | |
MEETERGO_NEXT_URL | 渲染到小组件安装代码片段中的预约页面主机,默认值为 https://cal.meetergo.com | |
MEETERGO_TIMEOUT_MS | 每个请求的超时时间,默认值为 30000 |
自行运行托管入口
此软件包还提供 meetergo-mcp-http,这是运行在
https://mcp.meetergo.com/mcp 后面的 Streamable HTTP 入口。凭据通过每个请求的
Authorization 标头传入,而非从环境变量读取,因此一个进程可服务任意数量的账户——此处不会读取
MEETERGO_TOKEN 和 MEETERGO_USER_ID。它读取以下变量:
| 变量 | 必填 | 用途 |
|---|---|---|
PORT | 监听端口,默认值为 8080 | |
MEETERGO_API_URL | API 基础地址覆盖值,默认值为 https://api.meetergo.com/v4 | |
MEETERGO_NEXT_URL | 渲染到小组件安装代码片段中的预约页面主机,默认值为 https://cal.meetergo.com | |
MEETERGO_DASHBOARD_URL | 计划额度错误中升级链接所用的控制面板主机,默认值为 https://my.meetergo.com | |
MCP_PUBLIC_URL | 此服务的公开 URL,默认值为 http://localhost:$PORT。只使用其 origin:origin + /mcp 即为资源标识符——发现文档中的 resource 字段,也是 OAuth 令牌必须在 aud 中携带的值。因此,https://host、https://host/ 和 https://host/mcp 是相同的设置。任何非绝对 http(s) URL 都会导致启动失败 | |
OAUTH_ISSUER | 三项需全部设置或全部不设置 | 授权服务器的 OpenID issuer,例如 https://login.meetergo.com/realms/meetergo。必须是绝对的 https 地址——交换过程会向其发送此服务的客户端密钥和用户令牌——否则进程将拒绝启动。末尾的斜杠会被去掉 |
OAUTH_CLIENT_ID | 三项需全部设置或全部不设置 | 此服务将令牌交换成的机密客户端(RFC 8693) |
OAUTH_CLIENT_SECRET | 三项需全部设置或全部不设置 | 该客户端的密钥 |
三个 OAUTH_* 变量必须全部设置或全部不设置。 全部设置后,会先验证传入的访问令牌——包括 issuer、aud、typ: Bearer、对照 issuer 的 JWKS 验证 RS256 签名以及有效期——然后才将其交换为单独的上游 API 令牌。MCP 规范禁止转发客户端交给你的令牌,因此令牌交换不是一种优化,而是唯一可行的途径。
全部不设置时,进程仅接受不记名令牌:个人访问令牌和平台 API 密钥均可使用;两个 .well-known 路径都会返回 404;401 挑战不包含 resource_metadata;OAuth 令牌会被拒绝,而不会传递到上游。
设置一项或两项时,行为与上述仅接受不记名令牌的模式相同,不会启用部分 OAuth;此外还会写入警告日志 oauth_disabled_incomplete_config,列出缺少的变量。
重试
两个入口在此处的行为相同。速率限制和临时上游错误(429、502、503、504)最多总共尝试三次(即重试两次),并遵循 API 提供的 Retry-After。
不会盲目重试。 如果预约或取消操作以模糊的方式失败——例如超时、连接中断或 502——API 可能已经执行了操作,而且没有幂等键来确保再次尝试是安全的。此类情况只会重试读取操作;写入操作仅在收到 429 时重试,因为只有这一响应表明请求从未被处理。
单提示词引导设置
如果你的客户端支持 MCP 提示词,请运行 meetergo: onboard。否则请粘贴以下内容:
为我的公司设置 meetergo。先调用 get_me 和 get_setup_status,并告诉我目前已有的内容。然后使用 propose_conversion_setup 分析我的网站,并展示建议的设置方案——会议类型、 资格筛选问题、网站助手。在我批准之前,不要创建任何内容。 我批准后:创建缺少的内容,使用 create_qualification_form 将问题转换为路由表单, 抓取我的网站,然后通过 run_test_drive 证明一切正常,并向我展示判定结果。最后提供 安装代码片段;我粘贴后,使用 verify_widget_install 进行验证。
Agent 会审查现有内容、提出方案、等待你确认,然后进行配置;在正式上线之前,还会向你展示模拟访客通过你自己的助手完成预约的过程。第二个提示词 meetergo: weekly-review 会提取上周的对话,并提出为助手补充它未能回答的问题的答案。
计划限制
每个工具都会以结构化方式报告计划限制:触发了哪项限制,以及在哪里可以升级,让 Agent 能向你解释情况,而不是含糊地失败。get_me 还会返回一个 plan 区块(套餐等级、限制),以便可靠的 Agent 在你开始进行套餐无法完成的操作之前提醒你。连接服务本身不受限制——任何套餐(包括 Free)的令牌都能使用。
工具
共 57 个工具,覆盖端到端的日程安排。日程安排是大多数 Agent 的主要工作流程;其余工具则确保 Agent 无需退回到原始 REST 接口。
日程安排
| 工具 | 会写入数据? | 用途 |
|---|---|---|
get_me | 确认令牌有效——发现内容为空时从这里开始 | |
list_meeting_types | 可供预约的项目 | |
get_availability | 指定会议类型的可预约时段 | |
book_appointment | 是 | 预约时段 |
reschedule_appointment | 是 | 更改预约时间 |
cancel_appointment | 有破坏性 | 取消预约,或移除一位参会者 |
list_appointments | 带筛选条件的分页日历 | |
get_todays_appointments | 仅限今天 | |
get_appointment | 获取一项预约的完整信息,包括 attendeeIds | |
add_guest | 是 | 为预约添加访客邮箱 |
update_appointment_notes | 是 | 回写通话准备内容或结果 |
create_one_time_booking_link | 是 | 发送一次性链接,而不是代他人预约 |
list_calendar_connections | 已关联的日历 |
后续跟进
| 工具 | 会写入数据? | 用途 |
|---|---|---|
send_quick_email | 是 | 向参会者发送一次性邮件(每 5 分钟最多 5 封) |
update_meeting_transcription | 是 | 附加来自笔记工具的转录文本或摘要 |
会议类型
| 工具 | 会写入数据? | 用途 |
|---|---|---|
get_meeting_type | 完整配置——更新前先读取 | |
create_meeting_type | 是 | 创建可预约的会议类型 |
update_meeting_type | 是 | 修改会议类型 |
delete_meeting_type | 有破坏性 | 移除会议类型;其页面将停止工作 |
预约页面
| 工具 | 会写入数据? | 用途 |
|---|---|---|
get_personal_page | 颜色、页眉、链接、会议类型顺序 | |
update_personal_page | 是 | 更改品牌样式 |
路由表单
| 工具 | 会写入数据? | 用途 |
|---|---|---|
list_routing_forms | 所有表单和漏斗 | |
get_routing_form | 步骤、字段和路由规则 | |
create_routing_form | 是 | 创建资格筛选表单 |
update_routing_form | 是 | 修改表单 |
delete_routing_form | 有破坏性 | 移除表单;共享链接将失效 |
send_routing_form | 是 | 通过邮件或 SMS 发送,或生成链接 |
list_form_recipients | 查看收件人和答复者 | |
list_data_fields | 所有表单中可重复使用的字段 | |
create_data_field | 是 | 添加字段 |
CRM
| 工具 | 是否会写入? | 用途 |
|---|---|---|
search_contacts | 创建重复联系人前先查找联系人 | |
get_contact | 按 contactId 或预订中的 attendeeId 获取完整记录 | |
create_contact | 是 | 添加联系人 |
update_contact | 是 | 编辑联系人 |
bulk_create_contacts | 是 | 一次导入多个联系人(每分钟 3 次调用) |
delete_contact | 破坏性操作 | 移除联系人及其表单答案 |
Mira,网站助手
提供将网站从“没有助手”变为上线状态所需的一切,让助手能根据公司自己的网页 回答问题并预订会议。
| 工具 | 是否会写入? | 用途 |
|---|---|---|
get_setup_status | 上线清单:已有内容、缺少内容以及下一步操作 | |
get_mira_settings | 助手的完整配置——修改前先读取 | |
update_mira_settings | 破坏性操作 | 修改配置;返回之前的设置,方便还原 |
restore_mira_settings | 破坏性操作 | 恢复之前某次更新时保存的快照 |
propose_conversion_setup | 读取已抓取的网站,并提出助手、资格筛选和预订设置方案 | |
create_qualification_form | 是 | 将提议的问题转换为真实、可编辑的路由表单 |
run_test_drive | 让脚本模拟访客与已保存的助手交谈;返回评估结果和对话记录 | |
get_mira_widget_embed | 公钥、嵌入代码片段和预览 URL | |
verify_widget_install | 获取客户网站上的一个页面,并确认该页面提供的是他们自己的微件 | |
answer_visitor_question | 是 | 教助手回答它之前无法回答的问题 |
get_conversation_insights | 查看访客提出的问题,以及助手无法回答问题的情况 |
知识库
| 工具 | 是否会写入? | 用途 |
|---|---|---|
crawl_company_website | 是 | 导入网站内容,让助手能据此回答问题 |
get_crawl_status | 查看正在进行的抓取任务的进度 | |
list_knowledge_documents | 查看已导入的内容 | |
delete_knowledge_document | 破坏性操作 | 移除文档;助手将不再引用该文档 |
search_company_knowledge | 检索用于回答问题的段落 |
Webhook
| 工具 | 是否会写入? | 用途 |
|---|---|---|
list_webhooks | 查看正在使用的端点(每家公司最多 6 个) | |
create_webhook | 是 | 注册 HTTPS 端点 |
update_webhook | 是 | 修改 URL 或事件 |
delete_webhook | 破坏性操作 | 移除端点;事件会立即停止 |
写入操作会携带 readOnlyHint: false,而以上标记为破坏性操作的项目
会携带 destructiveHint: true,这样宿主就能在 Agent 移除人类可能会忽略的内容前要求确认。
这些工具会为你做什么
API 会要求提供模型无法得知的信息。工具不会把这些样板内容写进文档字符串 后寄希望于模型理解,而是会直接提供这些信息:
book_appointment会构建嵌套的attendee对象,为receiveReminders和必填的空notes设置默认值,并且在预约没有姓名时拒绝 该预约,而不是将空白姓名写入邀请。get_availability和book_appointment会确定需要计算哪些主持人。 API 在加载会议类型前就会对两者返回Expected hostIds or queueId错误,而模型只有meetingTypeId。create_meeting_type会填充六个必填但无关紧要的meetingInfo字段(customChannelName、connectChannelName、空的confirmationButton等);缺少这些字段会导致整个请求被拒绝。架构中未列出的内容 都会通过advanced传递。list_appointments会提供必填的page和pageSize,因为 API 没有为它们设置默认值。
开发
npm test # vitest
npm run build # tsc -> dist
测试断言的是传输格式,而不只是工具列表:每个工具调用的路径,以及 API 的 DTO 所要求的精确请求体结构。这是有意为之。0.1.x 发布了五个永远无法成功的工具——路径错误、查询键错误,而 BookingDto 要求嵌套的 attendee,请求体却是扁平结构——但所有测试都通过了,因为它们只检查工具是否存在。添加或更改工具时,必须将其请求固定为与 apps/api 中的路由一致。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。