Temporal Cortex MCP について
Temporal Cortex MCPは、AIエージェントや開発者向けのスケジューリングサーバーです。決定論的な日時処理、複数カレンダーの空き時間統合、原子的な予約を提供し、Google Calendar、Microsoft Outlook、CalDAVに対応します。
主な機能
- 01自然言語の日付とタイムゾーンの解決
- 02複数カレンダーの空き時間統合
- 03二相コミットによる予約競合の防止
- 04繰り返しイベントの決定論的な展開
- 05TOON形式によるコンパクトなカレンダーデータ出力
活用シーン
- 01接続済みカレンダーから会議の空き時間を探す
- 02重複予約を避けて会議を予約する
- 03「来週火曜の午後2時」などの日時表現を解決する
- 04夏時間の切り替わりを含む繰り返しイベントを確認する
MCP 対応
MCPクライアントに、時間コンテキスト、日時解決、空き時間検索、予約などのスケジューリングツールを公開します。ローカル実行またはマネージドプラットフォーム経由で利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @temporal-cortex/cortex-mcpGOOGLE_CLIENT_IDGoogle OAuth Client ID (required for Google Calendar)GOOGLE_CLIENT_SECRETシークレットGoogle OAuth Client Secret (required if using Google Calendar)GOOGLE_OAUTH_CREDENTIALSシークレットPath to Google OAuth JSON credentials file (alternative to CLIENT_ID + SECRET)MICROSOFT_CLIENT_IDAzure AD app ID (required for Outlook Calendar)MICROSOFT_CLIENT_SECRETシークレットAzure AD client secret (required for Outlook Calendar)TIMEZONEIANA timezone override (e.g., America/New_York). Overrides stored config and OS detection.WEEK_STARTWeek start day: 'monday' (default, ISO 8601) or 'sunday'. Overrides stored config.TENANT_IDUUID for tenant isolation (auto-generated if not set)LOCK_TTL_SECSLock time-to-live in seconds for booking safetyOAUTH_REDIRECT_PORTシークレットPort for the local OAuth callback serverHTTP_PORTPort for HTTP transport. When set, enables streamable HTTP mode instead of stdio.HTTP_HOSTBind address for HTTP transport (default: 127.0.0.1)ALLOWED_ORIGINSComma-separated allowed Origin headers for HTTP mode. Cross-origin requests rejected if unset.TEMPORAL_CORTEX_TELEMETRYOverride telemetry consent: 'off' to disable, 'on' to enable anonymous usage analytics.REDIS_URLSComma-separated Redis URLs for distributed locking within Platform Mode. Optional.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Temporal Cortex MCP
v0.9.1 · 2026年3月 · 変更履歴 · ウェブサイト: temporal-cortex.com
あらゆるAIエージェントに、自律的なスケジュール管理機能を提供します。Temporal Cortexはオープンなスケジューリングインフラストラクチャであり、相手がAIエージェントを使っているかどうか、Google CalendarとOutlookのどちらを使っているか、すぐに返信するか数日後に返信するかにかかわらず、あらゆるAIエージェントが確実に予定を調整できるようにします。5つのレイヤーにわたる18個のツールが、連絡先の解決、時間に関する推論、複数プロバイダー間の空き状況確認、アトミックな予約を処理します。MCP、A2A、REST、ブラウザーから利用できます。Truth Engineを基盤としています。インストール:npx @temporal-cortex/cortex-mcp。
Temporal Cortexの2つの利用方法
個人向け
カレンダーを接続すれば、あとはAIエージェントにお任せください。空き状況の確認、タイムゾーンの解決、予定の重複を防いだ会議の予約を行います。Claude Desktop、Cursor、OpenClaw、Manus、およびMCP対応のあらゆるAIクライアントで動作します。
npx @temporal-cortex/cortex-mcp setup
セットアップウィザードが、プロバイダー認証、タイムゾーン設定、MCPクライアントのセットアップを対話形式で案内します。1分もかからずに予定の調整を始められます。
または、マネージドプラットフォームを利用 — Node.jsは不要です。app.temporal-cortex.comで登録し、OAuthでカレンダーを接続して、APIキーを含むMCP設定を1つ追加するだけです。
開発者向け
AIエージェントや製品にスケジュール管理機能を追加できます。5つのレイヤーにわたる18個のツール、4つのプロトコル(MCP、A2A、REST、Browser)、Two-Phase Commitによるアトミックな予約、Truth Engineを基盤とする決定論的な時間計算を提供します。
- ローカルMCPサーバー:
npx @temporal-cortex/cortex-mcp— 完全なツールスイート、インフラストラクチャ不要 - プラットフォームREST API: app.temporal-cortex.com — マネージドホスティング、APIキー、利用状況ダッシュボード、Open Schedulingネットワーク
- フレームワーク連携: LangGraph、CrewAI、OpenAI Agents SDK
- REST APIリファレンス: temporal-cortex.com/docs/rest-api
AI エージェントはなぜカレンダーのタスクに失敗するのでしょうか?
最新の LLM である GPT-5、Claude、Gemini でさえ、時間的推論のタスクでは 50% を下回るスコアです(OOLONG ベンチマーク)。以前のモデルでは、スケジュール設定でわずか 29%、所要時間の計算で 13% というスコアでした(Test of Time、ICLR 2025)。「来週火曜日の午後2時に予定を入れて」と頼むと、間違った火曜日を選びます。「午後3時は空いていますか?」と尋ねると、間違ったタイムゾーンを確認します。そして、カレンダーに予定を二重登録します。
AI エージェント向けのカレンダーツールの多くは、薄い CRUD ラッパーにすぎず、こうした失敗を単一のカレンダープロバイダーにそのまま引き渡します。時間に関する認識も、競合の検出も、安全策もありません。
Temporal Cortex の特徴は何ですか?
- 時間に関する認識 — エージェントは
get_temporal_contextを呼び出して、実際の日時とタイムゾーンを確認できます。resolve_datetimeは"next Tuesday at 2pm"を正確な RFC 3339 タイムスタンプに変換します。幻覚は発生しません。 - アトミックな予約 — 時間枠をロックし、競合がないことを確認してから書き込みます。2つのエージェントが同じ午後2時の枠を予約しようとしても、成功するのはどちらか一方だけです。もう一方には明確なエラーが返されます。二重登録は発生しません。
- 空き状況の算出 — 複数のカレンダーの空き時間/予定ありデータを1つの統合ビューにまとめます。AI は、誤解を招く可能性のあるイベントの生データではなく、実際の空き状況を確認できます。
- 決定論的な RRULE 展開 — 夏時間の切り替え、
BYSETPOS=-1(月の最終平日)、タイムゾーン付きのEXDATE、うるう年の繰り返し、BYDAYを使ったINTERVAL>1に対応します。Truth Engine によって実現されており、LLM の推論には依存しません。 - トークン効率の高い出力 — TOON 形式は、標準的な JSON よりカレンダーデータのトークン数を約40%削減し、コストとコンテキストウィンドウの使用量を抑えます。TOON はすべてのデータツール(
list_calendars、list_events、find_free_slots、expand_rrule、get_availability)のデフォルト出力形式です。format: "json"を明示すれば、JSON も利用できます。
Temporal Cortex の実行に必要なものは何ですか?
- Node.js 18+(
npxでバイナリをダウンロードして実行する場合)または Docker - 少なくとも1つのカレンダープロバイダー:
- Google Calendar — Google OAuth 認証情報が必要です
- Microsoft Outlook — Azure AD アプリの登録(
MICROSOFT_CLIENT_ID)が必要です - CalDAV(iCloud、Fastmail など)— アプリ固有のパスワードが必要です
Temporal Cortex のインストール方法を教えてください
最も手早く始める方法:
npx @temporal-cortex/cortex-mcp setup
cortex-mcp setup ウィザードでは、プロバイダーの認証、タイムゾーンの設定、MCP クライアントの設定を対話形式で進められます。詳しい手順は初回実行ガイドをご覧ください。
または、手動で3つの手順を実行します:
- 前提条件をインストールする — Node.js 18+(または Docker)と、少なくとも1つのカレンダープロバイダー(Google Calendar、Microsoft Outlook、または CalDAV)。
- MCP の設定を追加する — AI クライアントの設定ファイルに追加します(以下のクライアントごとの例を参照してください)。
- 認証フローを実行する —
npx @temporal-cortex/cortex-mcp auth google(またはoutlook/caldav)。この操作で認証を行い、タイムゾーン、週の開始曜日、テレメトリーの設定を行います。
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)に追加します:
{
"mcpServers": {
"temporal-cortex": {
"command": "npx",
"args": ["-y", "@temporal-cortex/cortex-mcp"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"TIMEZONE": "America/New_York"
}
}
}
}
Cursor
Cursor の MCP 設定(~/.cursor/mcp.json)に追加します:
{
"mcpServers": {
"temporal-cortex": {
"command": "npx",
"args": ["-y", "@temporal-cortex/cortex-mcp"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"TIMEZONE": "America/New_York"
}
}
}
}
Windsurf
Windsurf の MCP 設定ファイル(~/.codeium/windsurf/mcp_config.json)に追加します:
{
"mcpServers": {
"temporal-cortex": {
"command": "npx",
"args": ["-y", "@temporal-cortex/cortex-mcp"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"TIMEZONE": "America/New_York"
}
}
}
}
Docker
docker run --rm -i \
-e GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com" \
-e GOOGLE_CLIENT_SECRET="your-client-secret" \
-e TIMEZONE="America/New_York" \
-v ~/.config/temporal-cortex:/root/.config/temporal-cortex \
cortex-mcp
まずイメージをビルドします:docker build -t cortex-mcp .(または、リポジトリから直接ビルドします:docker build -t cortex-mcp https://github.com/temporal-cortex/mcp.git)。
プロバイダーの認証情報についてお困りですか? セットアップガイドをご覧ください:Google Calendar、Microsoft Outlook、CalDAV (iCloud/Fastmail)。すべての環境変数と設定オプションの完全なリファレンスについては、Configuration Guideをご覧ください。
インストールを確認するにはどうすればよいですか?
SHA256 チェックサムは、各 GitHub Release とともに公開され、自動的なインストール後の検証のために npm パッケージ内の checksums.json に埋め込まれています。インストール後のスクリプトは、プラットフォーム固有のバイナリをダウンロードし、その SHA256 ハッシュを checksums.json 内の想定チェックサムと比較します。一致しない場合、インストールはエラーで失敗します — バイナリはインストールされず、エラーメッセージには想定値と実際のハッシュの両方が含まれます。
手動で確認する:
# Download the published checksums
curl -sL https://github.com/temporal-cortex/mcp/releases/download/mcp-v0.9.1/SHA256SUMS.txt
# Compare against your installed binary
sha256sum "$(dirname "$(which cortex-mcp)")/../cortex-mcp" 2>/dev/null || \
shasum -a 256 "$(npm root -g)/@temporal-cortex/cortex-mcp/bin/cortex-mcp" 2>/dev/null
ビルドの来歴: バイナリは、5 つのプラットフォーム(darwin-arm64、darwin-x64、linux-x64、linux-arm64、win32-x64)向けに、GitHub Actions で Rust ソースからクロスコンパイルされています。計算レイヤーは temporal-cortex/core でオープンソースとして公開されています。
Docker による隔離: 最大限の隔離を実現するには、MCP サーバーをコンテナー内で実行します。
docker build -t cortex-mcp https://github.com/temporal-cortex/mcp.git
docker run --rm -i -v ~/.config/temporal-cortex:/root/.config/temporal-cortex cortex-mcp
ホストに Node.js は不要で、マウントされた設定ディレクトリ以外のファイルシステムに直接アクセスすることもありません。
カレンダープロバイダーで認証するにはどうすればよいですか?
最も簡単な方法は npx @temporal-cortex/cortex-mcp setup を実行することです。認証、設定、MCP クライアントのセットアップを、1 つのガイド付きフローで行います。個々のプロバイダーを認証するには、以下のコマンドを実行してください。
# Google Calendar (default)
npx @temporal-cortex/cortex-mcp auth google
# Microsoft Outlook
npx @temporal-cortex/cortex-mcp auth outlook
# CalDAV (iCloud, Fastmail, or custom server)
npx @temporal-cortex/cortex-mcp auth caldav
# Docker (interactive auth — needs terminal + browser)
docker run --rm -it \
-e GOOGLE_CLIENT_ID="your-id" -e GOOGLE_CLIENT_SECRET="your-secret" \
-p 8085:8085 \
-v ~/.config/temporal-cortex:/root/.config/temporal-cortex \
cortex-mcp auth google
各認証フローでは、認証情報が ~/.config/temporal-cortex/credentials.json に保存され、プロバイダーが ~/.config/temporal-cortex/config.json に登録されます。複数のプロバイダーを接続できます。サーバーは起動時に設定済みのすべてのプロバイダーを検出し、それぞれのカレンダーを統合されたビューにまとめます。
認証中、サーバーが対話形式のセットアップを案内します。
- タイムゾーン — システムのタイムゾーンを自動検出し、597 個すべての IANA タイムゾーンを含むファジー検索ピッカーを開きます(入力して絞り込み、矢印キーで移動できます)
- 週の開始曜日 — 月曜日(ISO 標準)または日曜日から、矢印キーで選択します
- テレメトリー — 匿名の使用データを任意で送信します(デフォルト:オフ)
すべての設定は ~/.config/temporal-cortex/config.json に保存され、すべての temporal ツールで使用されます。TIMEZONE および WEEK_START 環境変数を使って、セッションごとに上書きできます。
認証後、AI アシスタントに 「今何時ですか?」 と尋ねて動作を確認してください。エージェントが get_temporal_context を呼び出し、現在の現地時刻を返すはずです。
ガイド付きワークフローを利用するには、Temporal Cortex Agent Skills をインストールして、AI エージェントに orient-resolve-query-book パターンを教えます。
Temporal Cortex Platform
npx を使って MCP サーバーをローカルで実行する代わりに、マネージドの Temporal Cortex Platform を利用できます。Node.js のインストールも、ローカルの OAuth 認証情報も不要です。
始め方:
- app.temporal-cortex.com でサインアップします。
- ダッシュボードで OAuth を使って、Google Calendar または Microsoft Outlook のアカウントを接続します。
- ダッシュボードで API キーを生成します。
- AI クライアントに MCP 設定を追加します(以下の例をご覧ください)。
Claude Desktop(Platform)
Claude Desktop の設定ファイルに追加します。
{
"mcpServers": {
"temporal-cortex": {
"url": "https://mcp.temporal-cortex.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Cursor(プラットフォーム)
同じ形式を使用して、Cursor の MCP 設定(~/.cursor/mcp.json)に追加します。
{
"mcpServers": {
"temporal-cortex": {
"url": "https://mcp.temporal-cortex.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
プラットフォームの機能(ローカルモードに加えて利用可能):
- 管理が必要な OAuth 認証情報はありません -- カレンダー接続は、標準的な OAuth フローを通じてダッシュボードで処理されます。
- Node.js は不要です -- クライアントは HTTP 経由でクラウドエンドポイントに直接接続します。
- 使用状況ダッシュボード -- app.temporal-cortex.com でツール呼び出し、接続済みカレンダー、請求を確認できます。
- 管理されたカレンダー接続 -- トークンの更新、再認証、プロバイダーの健全性はサーバー側で処理されます。
- 複数エージェントの連携 -- 複数のエージェントが同時にスケジュールを設定する際、分散ロックによって二重予約を防止します。
- 使用量の計測 -- ダッシュボードでエージェントおよびチームごとのツール呼び出しを追跡できます。
- コンテンツファイアウォール -- プロンプトインジェクションを自動検出し、ゼロ幅 Unicode 文字を除去します。
- 呼び出し元ベースのポリシー -- エージェントごとに予約ルール(最大時間、許可時間帯、予約上限)を適用します。
15 個のコアツールと 5 つのレイヤーは、すべて同じように機能します。プラットフォームは、その上に安全性、連携、可視性のためのインフラストラクチャを追加し、さらに 3 つの Open Scheduling ツールも利用可能にします(以下を参照)。
Open Scheduling + Temporal Links
プラットフォームのユーザーは Open Scheduling を有効にして、AI エージェントや人間が API キーなしで自分の空き状況を公開検索できるようにできます。
- ダッシュボードで Settings > Scheduling に移動します。
- スラッグ(例:
billy)を設定し、Open Scheduling を有効にします。 - Temporal Link を共有します:
book.temporal-cortex.com/billy
呼び出し元が利用できる機能:
- エージェントカード(A2A による検出):
GET /public/{slug}/.well-known/agent-card.json - 空き状況(REST):
GET /public/{slug}/availability?date=2026-03-15 - 予約(REST):
POST /public/{slug}/book - A2A JSON-RPC:
query_availabilityまたはbook_slotメソッドを指定してPOST /public/{slug}/a2a - ID の解決:
GET /[email protected]を使用して、ユーザーのエージェントカードを解決します
人間向けの代替手段: 同じ Temporal Link はブラウザーでも機能し、人間には日時選択とフォームを備えた予約ページが表示されます。
バイラルループ: すべてのエージェントカードは、呼び出し元エージェントのフレームワークに Temporal Cortex を公開します。すべての予約には、イベントの説明に「Powered by Temporal Cortex」が含まれます。
Temporal Cortex が提供するツールは何ですか?
Temporal Cortex は、5 つのレイヤーに整理された最大 18 個の Model Context Protocol ツールを公開します。15 個のコアツールは常に利用でき、プラットフォームモードでは追加の Open Scheduling ツール 3 個を利用できます。
レイヤー 0 — 検出
| ツール | 説明 |
|---|---|
resolve_identity | ID(メールアドレス、スラッグ、URL)を Temporal Cortex ユーザーのエージェントカードに解決し、スラッグ、表示名、Open Scheduling の状態を返します。プラットフォームモードのみ。 |
search_contacts | 名前を使ってユーザーのアドレス帳を検索します(Google People API、Microsoft Graph)。一致した連絡先のメールアドレス、電話番号、組織、役職を返します。オプトイン方式で、連絡先へのアクセス許可が必要です。 |
resolve_contact | 確認済みの連絡先のメールアドレスを受け取り、最適なスケジュール設定方法(即時予約が可能な Open Scheduling、メール、または電話)を判断します。Platform API が利用可能な場合は、resolve_identity と連携します。 |
レイヤー 1 — 時間コンテキスト
| ツール | 説明 |
|---|---|
get_temporal_context | 設定されたロケールの現在時刻、タイムゾーン、UTC オフセット、DST の状態、DST の予測(次の切り替え日と方向)、および曜日を返します。カレンダーのセッションでは、最初にこのツールを呼び出してください。 |
resolve_datetime | 「次の火曜日の午後 2 時」や「明日の午前中」のような自然言語の表現を、正確な RFC 3339 タイムスタンプに変換します。 |
convert_timezone | 任意の RFC 3339 日時を、ある IANA タイムゾーンから別のタイムゾーンに変換し、変換先のタイムゾーンの DST 状態を報告します。 |
compute_duration | 2 つのタイムスタンプ間の期間を計算し、日、時間、分、および人間が読みやすい形式の文字列を返します。 |
adjust_timestamp | 「+1d2h30m」のような複合期間でタイムスタンプを調整します。DST を考慮した日単位のシフトでは、壁時計の時刻が維持されます。 |
レイヤー 2 — カレンダー操作
| ツール | 説明 |
|---|---|
list_calendars | 接続されたすべてのプロバイダーのカレンダーを、プロバイダー名付き ID、名前、色、アクセス権限とともに一覧表示します。デフォルトでは TOON 形式で出力されます(トークンを約 40% 削減)。 |
list_events | プロバイダー名付き ID に対応し、指定した時間範囲内のカレンダーイベントを一覧表示します。デフォルトでは TOON 形式で出力されます(トークンを約 40% 削減)。JSON 形式にするには format: "json" を使用します。 |
find_free_slots | イベント間の空き時間を計算し、カレンダーで利用可能な時間枠を検索します。時間枠の最小期間も指定できます。デフォルトでは TOON 形式で出力されます。 |
expand_rrule | RFC 5545 の繰り返しルールを具体的な日時のインスタンスに展開します。DST の切り替え、BYSETPOS、うるう年、EXDATE による除外を決定的に処理します。デフォルトでは TOON 形式で出力されます。 |
check_availability | カレンダーイベントと有効な予約ロックの両方を確認し、指定した時間枠が空いているかを確認します。 |
レイヤー 3 — 空き状況
| ツール | 説明 |
|---|---|
get_availability | 複数のカレンダーの空き/予定ありデータを、設定可能なプライバシーレベル(Opaque または Full)を使用して、統合された 1 つのビューにまとめます。デフォルトでは TOON 形式で出力されます。 |
query_public_availability | スラッグを指定して他のユーザーの公開された空き状況を照会し、指定した日付と期間の利用可能な時間枠を返します。API キーは不要です。Platform Mode 専用です。 |
レイヤー 4 — 予約
| ツール | 説明 |
|---|---|
book_slot | Two-Phase Commit を使用してカレンダーの時間枠を予約します。時間範囲のロックを取得し、競合がないことを確認してからイベントを書き込み、ロックを解除します。 |
request_booking | スラッグを指定して他のユーザーの公開カレンダーに予約をリクエストします。出席者とタイトルの情報を含むカレンダーイベントを、相手に代わって作成します。Platform Mode 専用です。 |
compose_proposal | 受信者のタイムゾーンで表示した候補の時間枠を含む、メール、Slack、または SMS 用のスケジュール提案メッセージを作成します。任意で、セルフサービス予約用の Temporal Link URL を含められます。送信は行わず、エージェントが自身のチャネル MCP 経由で送信できるよう、書式設定されたテキストを返します。 |
入力/出力の完全なスキーマと使用例については、docs/tools.md を参照してください。
Temporal Cortex は繰り返しルールをどのように処理しますか?
ほとんどの AI モデルとカレンダーツールは、繰り返しルールの特殊なケースを黙って処理できません。チャレンジを実行して違いを確認してください。
npx @temporal-cortex/cortex-mcp rrule-challenge
LLM が一貫して失敗する 5 つのケース
1. DST をまたぐ「毎月第 3 火曜日」(2026 年 3 月、America/New_York)
第 3 火曜日は 3 月 17 日です。3 月 8 日のサマータイム開始により、UTC オフセットは -05:00 から -04:00 に変わります。LLM は誤った UTC 時刻を返したり、その月を丸ごと省略したりすることがよくあります。
2. 「毎月最後の金曜日」(BYSETPOS=-1)
RRULE:FREQ=MONTHLY;BYDAY=FR;BYSETPOS=-1 — LLM は最後の金曜日ではなく最初の金曜日を返したり、金曜日が 4 回の月と 5 回の月を正しく処理できなかったりすることがよくあります。
3. 「祝日を除く毎営業日」(タイムゾーン付き EXDATE)
明示的なタイムゾーンオフセットを含む EXDATE の値は、生成された各予定との正確な照合が必要です。LLM は EXDATE を完全に無視したり、誤った日付に適用したりすることがよくあります。
4. 「月曜、水曜、金曜に隔週で」(INTERVAL=2 + BYDAY)
RRULE:FREQ=WEEKLY;INTERVAL=2;BYDAY=MO,WE,FR — INTERVAL=2 が適用されるのは個々の日ではなく週です。LLM は隔週ではなく毎週の予定を生成することがよくあります。
5. 「毎年 2 月 29 日」(うるう年の繰り返し)
RRULE:FREQ=YEARLY;BYMONTH=2;BYMONTHDAY=29 — 予定が生成されるのはうるう年(2028 年、2032 年など)だけです。LLM はうるう年でない年に 2 月 28 日や 3 月 1 日を生成することがよくあります。
Truth Engine は、RFC 5545 の仕様に基づいて、これらすべてを決定論的に処理します。推論も、ハルシネーションもありません。
MCP サーバーのアーキテクチャはどのように動作しますか?
MCP サーバーは、npm と Docker を通じて配布される単一の Rust バイナリです。マシン上でローカルに実行され、stdio(標準入出力)またはストリーム可能な HTTP を介して MCP クライアントと通信します。
4 段階のリクエストフロー:
- 受信 — サーバーは、stdio(デフォルト)またはストリーム可能な HTTP(
HTTP_PORTが設定されている場合)を介して、MCP クライアントから JSON-RPC メッセージを受け取ります。 - 解決 — Truth Engine は、人間が表現した日時を正確な UTC タイムスタンプに変換し、タイムゾーン変換と DST の切り替わりを決定論的に処理します。
- 計算 — 空き状況のクエリでは、エンジンが接続されているすべてのカレンダープロバイダーの予定あり/なしデータを統合します。RRULE の展開では、RFC 5545 のルールに従って具体的な予定を生成します。
- 実行 — 予約操作では、Two-Phase Commit がロックを取得し、その時間枠が空いていることを確認して予定を書き込み、ロックを解除します。いずれかの手順が失敗すると、ロールバックが実行されます。
TOON(Token-Oriented Object Notation)は、LLM が利用するカレンダーデータを圧縮します。JSON より約 40% トークン数が少なく、完全な往復変換の忠実性を備えています。TOON はすべてのデータツールでデフォルトの出力形式です。構造化 JSON が必要な場合は、format: "json" を使用してください。
Stdio と HTTP のトランスポート
トランスポートモードは自動検出されます。stdio から HTTP に切り替えるには HTTP_PORT を設定します。
- Stdio(デフォルト):ローカルクライアント(Claude Desktop、VS Code、Cursor)向けの標準的な MCP トランスポートです。サーバーは stdin/stdout を介して JSON-RPC メッセージを読み書きします。
- HTTP(
HTTP_PORTが設定されている場合):MCP 2025-11-25 仕様に準拠したストリーム可能な HTTP トランスポートです。サーバーはhttp://{HTTP_HOST}:{HTTP_PORT}/mcpで待ち受け、SSE ストリーミング、セッション管理(Mcp-Session-Idヘッダー)、Origin 検証を提供します。無効なOriginヘッダーを含むリクエストは HTTP 403 で拒否されます。
# HTTP mode example
HTTP_PORT=8009 npx @temporal-cortex/cortex-mcp
ローカルモードとプラットフォームモード
モードは自動検出され、設定フラグはありません。
- ローカルモード(デフォルト):インフラストラクチャは不要です。インメモリロックとローカルファイルへの認証情報の保存を使用します。複数のカレンダープロバイダー(Google、Outlook、CalDAV)に対応し、複数のカレンダーの空き状況を統合できます。個人の開発者向けに設計されています。
- プラットフォームモード(mcp.temporal-cortex.com のマネージドサービス):Postgres による認証情報の保存、Bearer トークン認証、ガードレール(レート制限と予約上限)、使用量計測、複数のエージェント間の安全性を確保する分散ロックを備えた、マネージドなマルチテナントホスティングです。チームや本番環境へのデプロイ向けに設計されています。
Temporal Cortex はどのように設定しますか?
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
GOOGLE_CLIENT_ID | Google の場合 | — | Cloud Console で取得する Google OAuth クライアント ID |
GOOGLE_CLIENT_SECRET | Google の場合 | — | Google OAuth クライアントシークレット |
GOOGLE_OAUTH_CREDENTIALS | いいえ | — | Google OAuth JSON 認証情報ファイルのパス(CLIENT_ID と CLIENT_SECRET の代替) |
MICROSOFT_CLIENT_ID | Outlook の場合 | — | Outlook カレンダーへのアクセスに使用する Azure AD アプリケーション(クライアント)ID |
MICROSOFT_CLIENT_SECRET | Outlook の場合 | — | Outlook カレンダーへのアクセスに使用する Azure AD クライアントシークレット |
TIMEZONE | いいえ | 自動検出 | IANA タイムゾーンの上書き値(例:America/New_York)。保存済みの設定と OS による検出結果を上書きします。 |
WEEK_START | いいえ | monday | 週の開始曜日:monday(ISO 8601)または sunday。「週の初め」「来週」などに影響します。 |
REDIS_URLS | いいえ | — | Platform Mode 内で分散ロックに使用する、カンマ区切りの Redis URL。任意です。設定されていない場合はインメモリロックにフォールバックします。 |
TENANT_ID | いいえ | 自動生成 | テナント分離に使用する UUID |
LOCK_TTL_SECS | いいえ | 30 | ロックの有効期間(秒) |
OAUTH_REDIRECT_PORT | いいえ | 8085 | ローカル OAuth コールバックサーバーのポート |
HTTP_PORT | いいえ | — | HTTP トランスポートのポート。設定すると、stdio の代わりにストリーミング可能な HTTP モードが有効になります。 |
HTTP_HOST | いいえ | 127.0.0.1 | HTTP トランスポートのバインドアドレス。0.0.0.0 はリバースプロキシの背後でのみ使用してください。 |
ALLOWED_ORIGINS | いいえ | — | HTTP モードで許可する Origin ヘッダー(カンマ区切り。例:http://localhost:3000)。設定されていない場合、すべてのクロスオリジンリクエストが拒否されます。 |
少なくとも 1 つのカレンダープロバイダーを設定する必要があります。プロバイダーのセットアップガイドについては、Google Calendar、Microsoft Outlook、CalDAV(iCloud/Fastmail)をご覧ください。設定の完全なリファレンスについては、設定ガイドをご覧ください。
よくある問題のトラブルシューティング方法を教えてください。
| 問題 | 解決方法 |
|---|---|
| "No credentials found" | npx @temporal-cortex/cortex-mcp auth google(または outlook / caldav)を実行して認証します |
| OAuth エラー/"Access blocked" | GOOGLE_CLIENT_ID と GOOGLE_CLIENT_SECRET(Outlook の場合は MICROSOFT_CLIENT_ID と MICROSOFT_CLIENT_SECRET)が正しいことを確認します。OAuth 同意画面が設定されていることも確認してください。 |
| ポート 8085 がすでに使用中 | OAUTH_REDIRECT_PORT に別のポートを設定します(例:8086) |
| MCP クライアントにサーバーが表示されない | Node.js 18 以降がインストールされていることを確認します(node --version)。MCP クライアントのログにエラーがないか確認してください。 |
| 起動時にプロバイダーが検出されない | プロバイダーが ~/.config/temporal-cortex/config.json に登録されていることを確認します(必要に応じて auth を再実行してください) |
プロバイダー固有のトラブルシューティングについては、Google Calendar、Microsoft Outlook、CalDAVをご覧ください。
よくある質問
Temporal Cortex はインターネットに接続できなくても動作しますか?
レイヤー 1 のツール(時間的コンテキスト、日時の解決、タイムゾーン変換、期間の計算、タイムスタンプの調整)は純粋な計算処理であり、ネットワークアクセスは不要です。カレンダーツール(レイヤー 2~4)では、Google Calendar、Microsoft Outlook、CalDAV API にアクセスするためにネットワーク接続が必要です。MCP サーバー自体はお使いのマシン上でローカルに動作します。
どの AI クライアントに対応していますか?
Model Context Protocol 互換のクライアントであれば、どれでも動作します。Claude Desktop、Claude Code、GitHub Copilot を搭載した VS Code、Cursor、Windsurf 向けの動作確認済み設定を提供しています。サーバーはデフォルトで stdio トランスポートを使用し、カスタム統合向けにストリーミング可能な HTTP トランスポートにも対応しています。
CrewAI で Temporal Cortex を使用するにはどうすればよいですか?
Temporal Cortex は、ラッパーを必要とせず、ネイティブの MCPServerAdapter を介して CrewAI と連携します。複数のエージェントで構成されるスケジューリングクルーの完全な例については、CrewAI 統合ガイドとサンプルコードをご覧ください。
クイックスタート(DSL — 最も簡単な方法):
from crewai import Agent
from crewai.mcp import MCPServerStdio
scheduler = Agent(
role="Calendar Scheduling Assistant",
goal="Schedule meetings using deterministic calendar tools",
backstory="You always call get_temporal_context first to orient in time.",
mcps=[
MCPServerStdio(
command="npx",
args=["-y", "@temporal-cortex/cortex-mcp"],
env={"TIMEZONE": "America/New_York"},
),
],
)
プラットフォームモード(SSE — ローカルサーバー不要):
from crewai.mcp import MCPServerSSE
scheduler = Agent(
...,
mcps=[
MCPServerSSE(
url="https://mcp.temporal-cortex.com/mcp",
headers={"Authorization": "Bearer YOUR_API_KEY"},
),
],
)
LangGraph で Temporal Cortex を使用するにはどうすればよいですか?
Temporal Cortex は、langchain-mcp-adapters を介して LangGraph と連携します。このアダプターはすべての MCP ツールを自動検出し、LangChain 互換の StructuredTool オブジェクトに変換します。ReAct エージェント、複数エージェントの StateGraph、Human-in-the-loop の例については、LangGraph 統合ガイドとサンプルコードをご覧ください。
クイックスタート(ReAct エージェント):
from langchain_anthropic import ChatAnthropic
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
model = ChatAnthropic(model="claude-sonnet-4-6")
async with MultiServerMCPClient(
{
"temporal-cortex": {
"command": "npx",
"args": ["-y", "@temporal-cortex/cortex-mcp"],
"env": {"TIMEZONE": "America/New_York"},
"transport": "stdio",
}
}
) as client:
tools = client.get_tools()
agent = create_react_agent(model, tools)
プラットフォームモード(HTTP — ローカルサーバー不要):
async with MultiServerMCPClient(
{
"temporal-cortex": {
"url": "https://mcp.temporal-cortex.com/mcp",
"headers": {"Authorization": "Bearer YOUR_API_KEY"},
"transport": "streamable_http",
}
}
) as client:
tools = client.get_tools()
agent = create_react_agent(model, tools)
OpenAI Agents SDK で Temporal Cortex を使用するにはどうすればよいですか?
Temporal Cortex は、HostedMCPTool を介して OpenAI Agents SDK と連携します。MCP 接続は OpenAI がサーバー側で処理するため、ローカルサーバーは必要ありません。シングルエージェント、複数エージェント、承認ワークフローの例については、OpenAI Agents SDK 統合ガイドとサンプルコードをご覧ください。
クイックスタート:
from agents import Agent, HostedMCPTool
agent = Agent(
name="Calendar Scheduler",
instructions="You schedule meetings using Temporal Cortex calendar tools.",
tools=[
HostedMCPTool(
tool_config={
"type": "mcp",
"server_label": "temporal-cortex",
"server_url": "https://mcp.temporal-cortex.com/mcp",
"headers": {"Authorization": "Bearer YOUR_API_KEY"},
"require_approval": "never",
}
),
],
)
複数のカレンダープロバイダーに同時に接続できますか?
はい。各プロバイダー(Google、Outlook、CalDAV)の認証フローを個別に実行してください。サーバーは起動時に設定済みのすべてのプロバイダーを検出し、それらのカレンダーを統合された空き状況ビューにまとめます。特定のカレンダーを指定するには、google/primary や outlook/work のようなプロバイダー名を付けた ID を使用してください。
2 フェーズコミットはどのように二重予約を防ぎますか?
book_slot が呼び出されると、サーバーは時間範囲のロックを取得し、競合するイベントや有効なロックがないことを確認してから、カレンダー API にイベントを書き込み、ロックを解除します。いずれかの手順が失敗した場合、操作はロールバックされます。2 つのエージェントが同じ時間枠を同時に予約しようとした場合、必ず一方だけが成功し、もう一方には明確なエラーが返されます。
TOON とは何ですか?また、なぜコストを削減できるのですか?
TOON(Token-Oriented Object Notation)は、完全な往復変換の忠実性を維持しながら、カレンダーのペイロードを JSON と比べて約 40% 少ないトークン数に圧縮します(Google Calendar のイベントスキーマベンチマークでは 38%)。トークン数が少ないほど API コストを抑えられ、LLM のコンテキストウィンドウに余裕が生まれます。TOON は現在、すべてのデータツール(list_calendars、list_events、find_free_slots、expand_rrule、get_availability)のデフォルト出力形式です。JSON 出力を取得するには、format: "json" を使用してください。
Temporal Cortex は夏時間をどのように処理しますか?
すべての時間関連ツールは夏時間に対応しています。春の時計変更期間に adjust_timestamp で「+1d」を指定すると、壁時計時刻が維持されます(EST の午前 1:00 は EDT の午前 1:00 になります)。RRULE の展開では、夏時間の切り替え後も繰り返しイベントが現地時刻に保たれます。get_temporal_context は、現在夏時間が適用されているかどうかと、次の夏時間への切り替えを予測して報告します。これには、切り替え日、方向(春の時計の進み/秋の時計の戻り)、発生までの日数が含まれます。
ローカルモードとプラットフォームモードの違いは何ですか?
ローカルモード(デフォルト)は、お使いのマシン上で動作します。メモリ内ロックとローカルファイルへの認証情報保存を使用し、インフラストラクチャは不要です。15 個のコアツールはすべて、設定なしですぐに使用できます(連絡先ツールには連絡先へのアクセス許可が必要です)。プラットフォームモード(mcp.temporal-cortex.com)では、管理された OAuth ライフサイクル、分散ロックによる複数エージェント間の調整、使用量の計測、呼び出し元ベースのポリシー、コンテンツファイアウォール、ダッシュボード UI、さらに 3 個の Open Scheduling ツール(resolve_identity、query_public_availability、request_booking)が追加されます。どちらのモードも同じ 15 個のコアツールと 5 つのレイヤーを提供します。プラットフォームモードでは安全性、調整、可視性が加わり、チーム向けには最大 18 個のツールを利用できます。
LLM の時間推論能力はどれほど低いのでしょうか?
最新のフロンティアモデルである GPT-5、Claude Sonnet 4、Gemini 2.5 Pro でさえ、時間推論タスクのスコアは 50% 未満です(OOLONG ベンチマーク、arXiv:2511.02817)。以前のモデルでは、スケジュール調整で 29%、所要時間の計算で 13% という低いスコアでした(Test of Time、ICLR 2025、arXiv:2406.09170)。時間に関する質問は、LLM にとって一貫して最も難しいカテゴリです。Temporal Cortex は、すべてのカレンダー計算で LLM の推論を決定論的な計算に置き換えます。
マネージドクラウド版はありますか?
はい。Temporal Cortex Platform は app.temporal-cortex.com でご利用いただけます。無料で登録できます。個人ユーザーは Starter ティアで月 20 件、開発者は月 100 件の予約を利用できます。有料ティア(Individual Pro、Developer Growth/Scale)では、上限の引き上げと優先サポートが追加されます。無料プランを含むすべてのティアで、すべてのスケジュール機能をご利用いただけます。
Temporal Cortex はテレメトリを収集しますか?
セットアップ中に、匿名の使用状況データを共有するかどうかを尋ねる対話型プロンプトが表示されます(デフォルト:オフ)。
収集する情報: ツール名、成功/エラーの件数、プラットフォーム、バージョン。収集しない情報: カレンダーデータ、イベント、個人情報。
非対話型セッション(MCP stdio)では、自動的にオプトアウトされます。設定はいつでも変更できます。
export TEMPORAL_CORTEX_TELEMETRY=off
AI エージェントにスケジュール調整のワークフローを教えるにはどうすればよいですか?
Temporal Cortex Agent Skills は、時間の把握から競合のない予約まで、これらのツールを使うための正しいワークフローを AI エージェントに教えます。インストールして、カレンダー操作の手順に関する知識をエージェントに与えましょう。
# Claude Code
npx skills add temporal-cortex/skills
このスキルは Agent Skills specification に準拠しており、Claude Code、OpenAI Codex、Google Gemini、GitHub Copilot、Cursor など、20 以上のプラットフォームで動作します。
Temporal Cortex の計算レイヤーは何を基盤としていますか?
計算レイヤーはオープンソースです。
- temporal-cortex-core — Truth Engine(時間の解決、RRULE の展開、空き時間の統合、タイムゾーン変換)+ TOON(トークン圧縮)
- crates.io、npm、PyPI で利用できます
- Rust テスト 510 件以上、JS テスト 42 件、Python テスト 30 件、プロパティベーステスト約 9,000 件
貢献
バグ報告や機能リクエストを歓迎します。CONTRIBUTING.md をご覧ください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。