MCP とは
MCP (Model Context Protocol) は、Claude のようなエージェントがユーザーに代わって外部のツールやデータへアクセスするための、 クライアント/サーバー共通の規格。kichijitsu はこれを使って、カレンダーを読み書きできる「公式 API」を提供している。
サーバーは read-through 原則を守っており、予定そのものを永続化することはない。ツールが呼ばれるたびに Google から取得して返すか、その場で書き戻すだけ。エージェントは予定の一覧・検索に加えて、 空き時間の提案や予定の作成・変更・削除まで行える — Notion Calendar には無い、kichijitsu の差別化要素の一つ。
接続手順
MCP サーバーのエンドポイントは https://kichijitsu.love-rox.cc/mcp 。
対応する MCP 仕様は 2026-07-28 (ステートレス) と
2025-11-25 以前 (initialize ハンドシェイク)
の両方。トランスポートは Streamable HTTP
で、単一のエンドポイントを使う。クライアントがどちらの世代でも、この URL
に設定するだけでよい。公開しているのは
tools のみ (resources / prompts は未実装)。
-
MCP トークンを発行する
kichijitsu アプリ右上の設定(歯車アイコン)を開き、「MCP トークン」セクションの「+ トークンを発行」から発行する(ラベルは任意)。生の値は発行直後に一度だけ表示され、以降は二度と表示されない。その場でコピーしておくこと。
-
Claude Code へ登録する
発行したトークンを使って、ターミナルから1回登録すればよい。
claude mcp add --transport http kichijitsu https://kichijitsu.love-rox.cc/mcp --header "Authorization: Bearer <token>"登録後は Claude Code を再起動してから使い始めること。
-
Claude Desktop へ登録する
Claude Desktop はリモートの Streamable HTTP MCP サーバーを直接サポートしていないため、橋渡し役の
mcp-remoteパッケージを経由する。設定ファイル (macOS では~/Library/Application Support/Claude/claude_desktop_config.json) に以下を追加する。{ "mcpServers": { "kichijitsu": { "command": "npx", "args": [ "-y", "mcp-remote", "https://kichijitsu.love-rox.cc/mcp", "--header", "Authorization:${AUTH_HEADER}" ], "env": { "AUTH_HEADER": "Bearer <token>" } } } }Authorization:${AUTH_HEADER}のように:の前後にスペースを入れない書き方は、Claude Desktop (Windows) が引数中のスペースを正しく渡せない既知の問題を避けるためのmcp-remote側の回避策。値はenv側に置けばスペースを含めてよい。設定を保存したら Claude Desktop を再起動する。
使えるツール一覧
現在 8 つのツールを公開している。書き込み系はエージェント側でユーザーへの実行前確認を前提にした説明になっている。
| ツール | 種別 | 内容 |
|---|---|---|
list_events |
読み取り | 期間を指定して予定一覧を返す。繰り返し予定は展開済みで返る。 |
search_events |
読み取り | キーワードで予定を検索する。期間省略時は今日の30日前〜90日後を対象にする。 |
suggest_free_slots |
読み取り | 指定した期間・所要時間から空き時間の候補を、早い順に返す。エージェント利用の主役。 |
create_event |
書き込み | 新しい予定を作成する。実行前にユーザーへの確認が前提。 |
update_event |
書き込み | 既存の予定の日時を変更する(タイトルなど時刻以外は変更できない)。実行前にユーザーへの確認が前提。 |
delete_event |
書き込み | 予定を削除する。取り消せない操作。実行前にユーザーへの確認が前提。 |
log_work_interval |
記録 | 作業実績を記録する。Google カレンダーには書き込まず、kichijitsu 側に保存する。 |
work_summary |
読み取り |
log_work_interval で記録した実績を、repo/issue 単位で集計して返す。
|
hook からの作業時間記録
Claude Code の SessionStart/Stop hook のような非対話のシェルからは、MCP 接続を経由せず
curl 一発で作業実績を記録できる。認証は MCP トークンの Bearer
で、値は設定ファイルに直書きせず環境変数から読むこと。
curl -sf -X POST https://kichijitsu.love-rox.cc/api/work-intervals \
-H "Authorization: Bearer ${KICHIJITSU_MCP_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"start": "'"$SESSION_START_ISO"'",
"end": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'",
"repo": "Love-Rox/kichijitsu",
"branch": "'"$(git branch --show-current)"'",
"agent": "claude-code"
}'
成功すると { calendarId, eventId } を 200 で返す。認証失敗は 401、
start >= end・repo 欠落などの入力不正は 400、Google
側の失敗は 502 になる。
運用の注意
デプロイ後・トークン再発行後は、MCP クライアントの再起動が必要になる。ツールのスキーマ (名前・説明・入力) はクライアントが接続時にキャッシュするため、デプロイしただけでは反映されない。反映を確認するときは、まず Claude Code / Claude Desktop を再起動してから検証すること。
同様に、トークンを再発行(=旧トークンを失効)した場合も、起動中のセッションは旧トークンを掴んだまま
401 が続く。Claude Code はこれを
requires re-authorization (token expired) と表示するが、kichijitsu の MCP
トークンに
有効期限は無い。この表示が出たら、実際は「トークンが失効/未登録」か「クライアントのセッションが古い」のどちらか。
サーバー側で認証が通ったことがあるかどうかは last_used_at
で客観的に判定できる(null のままなら、クライアントが新しいトークンをまだ送れていない)。
トークンの取り扱い
MCP トークンはあなたのカレンダーを読み書きできる秘密情報。パスワードと同じ扱いにすること。
発行直後の画面以外に生の値が表示されることは無い。設定ファイルやスクリプトに直書きせず、環境変数(例:
KICHIJITSU_MCP_TOKEN)から読み込むこと。リポジトリにコミットしない、他人と共有しない、流出した場合は設定画面から即座に失効させること。