MCP サーバー
sync.day は公開の MCP(Model Context Protocol)サーバーです。Claude、Cursor、ChatGPT や自作のボットにつなぐと、AI がイベント作成、代理での都合入力、空き時間の確認までできます。
接続先
https://sync.day/mcp/mcpStreamable HTTP、ステートレス、ログインも API キーも不要。CORS は開放。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 が必要。省略した項目はそのまま)
時間キーは 2026-09-05T14:00 のような候補開始時刻で、get_event の startOptions から取ります。adminKey は主催者専用なので、グループに貼らないでください。
submit_availability と vote_time の identity は、あなたが人ごとに生成して保管する、推測されにくいランダムな秘密文字列です(16 文字以上、例: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。