MCP 服务端
sync.day 是一个公开的 MCP(Model Context Protocol)服务端。把它接进 Claude、Cursor、ChatGPT 或你自己的机器人,AI 就能直接帮你建活动、替大家填时间、看谁什么时候有空。
接入地址
https://sync.day/mcp/mcpStreamable HTTP,无状态,不用登录,也不用 API key。跨域已放开。每个 IP 每分钟 60 次请求。不支持旧的 SSE 传输(/mcp/sse)。
工具
create_event- 新建活动,返回分享链接、发起人链接和 adminKey
parse_event_text- 把一句话(“下周六下午聚餐 3 小时”)解析成 create_event 的参数,不会创建
get_event- 读活动:设置、每天的候选开始时间、已填的人、人数最多的前 10 个开始时间、大家都能来的时间和投票、已定的时间
submit_availability- 替某个人保存能来的开始时间(按 identity 认人,同一 identity 再提交就是覆盖),返回最新排名
vote_time- 替某个人勾选能接受的开始时间(按 identity 认人,可以多选,再提交就是整套替换;要先填过时间)
decide_time- 发起人定下时间(需要 adminKey;传 null 撤销),定了之后不能再选和投
remove_participant- 发起人删除某个参与者(需要 adminKey)
update_event- 发起人修改活动设置(需要 adminKey;没传的字段保持不变)
时间 key 是候选的开始时间,形如 2026-09-05T14:00,从 get_event 的 startOptions 里取。adminKey 只给发起人,别发到群里。
submit_availability 和 vote_time 里的 identity 是你替每个人生成并保存的一个随机、不易猜到的密钥(至少 16 个字符,比如 32 位十六进制),不要用普通的用户 id 或名字——谁猜到它就能在所有活动里冒充这个人。服务器只存它的哈希;同一个 identity 就是同一个人,名字只是显示用,可以重复。
Claude Code
claude mcp add --transport http syncday https://sync.day/mcp/mcpClaude Desktop
设置 → Connectors 里直接加 URL;或者写进 claude_desktop_config.json:
{
"mcpServers": {
"syncday": {
"url": "https://sync.day/mcp/mcp"
}
}
}Cursor
项目里的 .cursor/mcp.json(或全局 ~/.cursor/mcp.json):
{
"mcpServers": {
"syncday": {
"url": "https://sync.day/mcp/mcp"
}
}
}用 curl 试一下
# initialize
curl -s https://sync.day/mcp/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'
# tools/list
curl -s https://sync.day/mcp/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'响应是 SSE 格式(event: message 加一行 data:),里面是 JSON-RPC。
典型对话
“帮我约下周六或周日下午聚餐,3 小时” → AI 调 parse_event_text 再 create_event,把链接发给你;“把小明周六 14:00 和 15:00 填上” → submit_availability;“现在哪个时间人最齐?” → get_event;“小明投周六 15:00” → vote_time;“就定周六 15:00” → decide_time。