mcpField
C
calendar

calendar

ローカル
mcp.zovo.one生産性22 日前に更新

calendar について

タイムゾーン変換、複数国にまたがる会議調整、カレンダー招待状の作成に対応するローカル優先の MCP サーバーです。夏時間や営業日、保存した連絡先も扱えます。

主な機能

  1. 01地域間の時刻変換
  2. 02公平性順の会議候補
  3. 03重複時間と夏時間の確認
  4. 04営業日の計算
  5. 05.ics 招待状の作成
  6. 06連絡先と勤務時間の保存

活用シーン

  1. 01各国の勤務時間内で会議候補を探す
  2. 02現地時刻と時計変更を確認する
  3. 03.ics 形式の招待状を用意する

MCP 対応

MCP クライアントに時刻、会議、カレンダーファイル、連絡先のツールを提供し、連絡先リソースとスケジュール用プロンプトも公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbtimezone.mcpb0.22.5

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mcp-timezone

時差を頭の中で計算せずに、ほかの国のクライアントと仕事ができます。「リスボンにいる Maria は今何時?」「ワルシャワの午後3時をニューヨークとバンガロールの時刻に変換して」「来週、私とニューヨークのクライアント、ロンドンのデザイナー全員に都合のよい時間を1時間探して」と尋ねるだけで、すぐに活用できる答えが得られます。全員がそれぞれの勤務時間内に参加できる会議候補の順位、1日の正確な重なり時間、時計が切り替わるタイミング、納期までの営業日数、送信できるカレンダーファイルを確認できます。保存した連絡先と勤務時間は、それ以外のデータを含めず、すべてご自身のマシン上にプレーンな JSON として保存されます。

theluckystrike が開発しました。

公式 MCP Registry に登録されています(io.github.theluckystrike/timezone-world-clock-meeting-slots-overlap-ics)。

タイムゾーンのデモ

海外にいる全員に都合のよい会議時間を探したり、都市間の時刻を変換したり、招待状を作成したりできます。セットアップは不要で、すべてローカルで動作します。

60秒でインストール

@theluckystrike/mcp-timezone の npm 公開は保留中です。それまでは、以下で動作を確認済みのワンクリック .mcpb バンドル、またはクローンしてビルドする方法をご利用ください。

ワンクリック(.mcpb):最新リリースから timezone.mcpb をダウンロードし、Claude Desktop でダブルクリックします: https://github.com/theluckystrike/mcp-servers/releases/latest

(claude_desktop_config.json):

{
  "mcpServers": {
    "timezone": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-timezone"]
    }
  }
}

Claude Code:

claude mcp add timezone -- npx -y @theluckystrike/mcp-timezone

(.cursor/mcp.json):

{
  "mcpServers": {
    "timezone": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-timezone"]
    }
  }
}

上記の npx 形式は、パッケージが公開され次第利用できるようになります。それまでは、上記の .mcpb バンドルを使うか、次の3つのコマンドだけでソースからビルドしてください:

git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-servers
npm install
npm run build -w packages/mcp-license -w servers/timezone

次に、クライアントの command を node に設定し、引数として servers/timezone/dist/index.js の絶対パスを1つ指定します。

Pro モードで実行するには、同じ設定ブロックで MCP_LICENSE_KEY を設定するか、キーを使って license_activate を一度呼び出します。

ツール

ツール機能
now任意の場所の現在時刻を、タイムゾーン略称と UTC オフセットとともに表示します。引数を指定しない場合は、このマシンのタイムゾーンと UTC を表示します。
convert_timeある場所の時刻を、指定した数の任意の場所の時刻に変換します。"2026-09-10 15:00"、ISO タイムスタンプ、または "3pm tomorrow" を from_zone の壁時計時刻として読み取ります。末尾の Z または明示的なオフセットがある場合は、from_zone より優先されます。変換結果が翌日または前日になる場合はその旨を示し、DST の重複時間帯(gap、fold)では、どちらの時刻を使ったかを示します。
find_meeting_slots参加者全員がそれぞれの勤務時間内に参加できる候補を、30分刻みで順位付けします。週末は除外されます。順位は公平性に基づきます(下記参照)。
overlap指定したすべての場所で全員が勤務中となる1日の時間帯を、UTC と各地域の現地時刻で表示します。DST のある週も正確になるよう、実際の日付に基づいて計算します。
dst_changes1年間にその場所で発生するすべての時計の切り替わりについて、正確な UTC 時刻、切り替え前後のオフセット、およびそれぞれの現地時刻を表示します。
business_days指定した場所における2つの日付間の営業日数を、週末と指定した祝日を除いて計算します。日付の形式は厳密です。2026-02-30 は翌月に繰り越されず、拒否されます。
ics_create1件の会議の .ics カレンダーファイルを作成し、パスを返します。メールアドレスを含む出席者には招待が送信されます。メールアドレスのない名前は説明欄に記載されます。organizer_email を指定すると、ORGANIZER 行が作成されます。
contacts_setクライアントやチームメイトのタイムゾーンと勤務時間を保存します。
contacts_list保存した連絡先、その人の現在の現地時刻、および勤務時間内かどうかを表示します。
license_statusFree または Pro のライセンス状況と、アップグレード方法を表示します。
license_activatePro キーを有効化します(オフラインで検証)。

リソース tz://contacts(保存した連絡先と現在の現地時刻)と、プロンプト schedule_with(保存した連絡先との候補時刻を提示し、招待状の作成も提案)も利用できます。

何と言えばよいですか

ツール名を指定する必要はありません。

言い方ツール
「今、ワルシャワ、ニューヨーク、バンガロールはそれぞれ何時ですか?」now
「9月10日のワルシャワ時間午後3時を、ニューヨーク時間とインド時間に変換してください。」convert_time
「来週、ワルシャワにいる私と、ニューヨークにいるクライアント、ロンドンにいるデザイナーの予定が合う1時間を探してください。」find_meeting_slots
「ワルシャワとニューヨークの両方が勤務時間内なのはいつですか?」overlap
「3月の打ち合わせの前に、ワルシャワで時計が変わりますか?」dst_changes
「9月1日から30日までの営業日は何日ですか?15日は除外してください。」business_days
「ワルシャワ時間の木曜日午後3時から45分間の予定を作成して、[email protected] を招待する .ics ファイルを書いてください。」ics_create
「Maria はリスボンにいて、10時から18時まで働くことを覚えておいてください。」contacts_set
「今、起きているのは誰ですか?」contacts_list

実例

You: Find an hour next week for me in Warsaw, my client in New York and my designer in London.

  find_meeting_slots { participants: [{name:"Me",zone:"Warsaw"},{name:"Client",zone:"New York"},
                                     {name:"Designer",zone:"London"}], duration_minutes: 60, days: 5 }

Assistant: 15 slots fit all 3 participants. Best first:
  1. 2026-09-07T13:30:00.000Z  fairness 3.00h
     Me 15:30-16:30 | Client 09:30-10:30 | Designer 14:30-15:30

公平性スコアが3時間であることは、ランキングの欠陥ではありません。ワルシャワとニューヨークの実情を表しています。双方の勤務時間が09:00~17:00の場合、共通の時間帯はワルシャワ時間の15:00~17:00だけなので、誰かの会議時間は必ずその日の中間から大きく離れます。スコアはそれを隠さずに示します。どちらか一方の勤務時間を広げると、スコアは改善します。

You: Write the invite for that one, 45 minutes, and send it to [email protected].

  ics_create { title:"Kickoff with Acme", start:"2026-09-10 15:00", zone:"Warsaw",
               duration_minutes:45, attendees:[{name:"Maria Nowak", email:"[email protected]"}],
               organizer_email:"[email protected]" }

Assistant: Wrote /Users/you/.local/share/mcp-servers/timezone/meeting.ics
Kickoff with Acme: 2026-09-10 15:00 Thu (CEST, UTC+02:00) for 45 min
DTSTART 2026-09-10T13:00:00.000Z (UTC)

ランキングの仕組み

find_meeting_slots は、候補となる各時間帯について、13:00(各参加者の現地時間)からの距離を時間単位で計算し、最も条件の悪い参加者の値をスコアとして昇順に並べます。平均ではなく最も条件の悪い参加者を基準にするのは、2人にとって快適でも3人目には07:00となる時間帯が、全員にとって10:00となる時間帯より上位になってはならないためです。公平性の値が0なら、全員にとって会議が正午に行われることを意味します。およそ2未満なら快適です。

会議の開始から終了までが、各参加者の現地カレンダー上の同じ日における勤務時間内に収まる場合にのみ、時間帯が提案されます。最初の参加者のタイムゾーンで週末に当たる日は除外されます。earliest_date より前に始まる時間帯が提案されることはありません。earliest_date に時刻を指定した場合、その日のうち指定した時刻より前の時間帯は提案されません。

条件に合う時間帯がない場合、サーバーはその旨を伝えて各人の勤務時間帯を表示し、続いて、誰かの勤務時間内に収まる最も近い時間帯を、勤務時間外となる合計分数の少ない順に一覧表示します。それぞれの時間帯について、各人の現地時刻と、その時間帯が全員に合うようにするために必要な勤務時間も示します。無料プランでは、検索期間が5日を超えると5日に短縮され、その旨が回答に記載されます。検索が完全に拒否されることはありません。

場所の解決方法

都市名と国名は、490件(300以上の都市、一般的に使用されるすべての国名と米国の州の略称)を収録した組み込みテーブルを使って解決されます。起動時にすべてのエントリを Intl.supportedValuesOf("timeZone") で検証します。この Node ビルドで解決できないエントリは、誤ったタイムゾーンを黙って返すのではなく、標準エラー出力に行を出して除外されます。

  • 複数のタイムゾーンにまたがる国は、主要なビジネスタイムゾーンに対応付けられます:United States -> America/New_York、Australia -> Australia/Sydney、Canada -> America/Toronto、Brazil -> America/Sao_Paulo、Russia -> Europe/Moscow、Mexico -> America/Mexico_City、Indonesia -> Asia/Jakarta。別のタイムゾーンが必要な場合は、都市名を指定してください。
  • IANA ID は常に使用でき、常に優先されます:America/Denver を渡すと、正確にそのタイムゾーンが返されます。
  • UTC+2 形式のオフセットは、対応する固定タイムゾーン(Etc/GMT-2)に解決されます。Etc の符号が逆になるのは IANA データベースの仕様であり、このサーバーによるものではありません。
  • 固定の略称は場所ではなくオフセットです。 EST は年間を通して Etc/GMT+5(UTC-05:00)、PST は Etc/GMT+8、CET は Etc/GMT-1、JST は Etc/GMT-9 です。これらを夏時間を採用するタイムゾーンに対応付けると、EST が毎年夏に EDT(UTC-04:00)を意味することになり、半年間は1時間ずれてしまいます。各回答には、代わりに指定する場所("New York"、"Los Angeles"、"Paris")を示す注記が付きます。地域の略称 ET、CT、MT、PT は引き続き場所を示し、時計の変更も反映されます。IST はインド(UTC+05:30、Asia/Kolkata、夏時間なし)として解釈され、その旨が注記されます。これは IST がアイルランド時間やイスラエル時間も表すためです。
  • 不明な名前が推測されることはありません。候補を含むエラーが返されます: unknown time zone or place: "Warsawa". Did you mean: warsaw (Europe/Warsaw)?

ここでは夏時間(DST)の情報を一切保存しません。オフセットはすべて、Intl.DateTimeFormat を介して Node ビルド内の ICU データから取得されるため、同梱テーブルの情報が古くなることなく、Node の更新に伴って規則も最新の状態に保たれます。

Free と Pro の比較

FreePro
now、convert_time、overlap、dst_changes、business_days無制限無制限
find_meeting_slots の参加者最大3人無制限
find_meeting_slots の検索期間最大5日(それより長いリクエストは拒否されず、短縮されます)無制限
繰り返し枠の検索(recurring: true)--対応
保存できる連絡先5件無制限
.ics ファイル月3件無制限

Pro は19ドルの買い切り、またはバンドル内のサーバーすべてで39ドルです:Pro を入手。 有効化はオフラインで行われます。キーは、パッケージにコンパイルされた公開鍵を使って検証される Ed25519 署名です。

データの保存方法

連絡先と月ごとの .ics カウンターは、1つの JSON ファイルに保存されます: ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/timezone/data.json。

すべての書き込みは .../timezone/.lock のアドバイザリロック下で行われ、読み込みから変更、保存までの処理全体を通して保持されます。そのため、同じデータディレクトリを共有する2つのクライアントが互いの連絡先を消してしまうことはありません。保存時には一時ファイルを書き込んでから所定の場所に名前を変更するため、書き込み中にクラッシュしても、旧ファイルか新ファイルのどちらかが残ります。

data.json が読み取れない場合や有効な JSON でない場合、サーバーはそれを「連絡先がまだない」状態として扱いません。ファイルをバイト単位でそのまま data.json.corrupt-<timestamp> として退避し、data.json.corrupt マーカーを書き込みます。正常なコピーを復元してマーカーを削除するまで、以後のすべての呼び出しは data file is corrupt; moved to ...; nothing was written というエラーで失敗します。

日付、時刻、そして正直な注意事項

  • オフセットのない時刻は UTC ではなく、from_zone の現地時刻です。 from_zone: "Warsaw" の場合、2026-09-10 15:00 はワルシャワの15:00です。末尾の Z または明示的な +05:30 はそのまま尊重され、その場合 from_zone は表示にのみ使用されます。
  • 日付は正規化せず、妥当性を検証します。 2026-02-30 は、日付を読み取るすべての場所(convert_time、overlap、business_days、ics_create、祝日リスト)で、理由(2026年2月は28日まで)とともに拒否されます。3月に繰り越されることはありません。
  • 春の夏時間への切り替え時に存在しない現地時刻は拒否されます。 ワルシャワの2026-03-29の 02:30 は、両隣の有効な時刻(2026-03-29 01:30 と 2026-03-29 03:30)を示すエラーになります。切り替え後の時刻にするには gap:"forward"、切り替え前の時刻にするには gap:"backward" を渡してください。その場合、回答でどちらを使用したかが示されます。推測によって黙って時刻を決めると、年に一度、会議の時間が1時間ずれてしまいます。
  • 秋の折り返し時に曖昧な時刻が指定された場合、最初の時刻が返され、その旨が示されます。 ワルシャワの2026-10-25の 02:30 は CEST の時刻として 00:30Z です。CET の 01:30Z にするには fold:"second" を渡してください。どちらの回答にも、使用した略称とオフセットが示されます。
  • .ics の参加者はカレンダーアドレスです。 メールアドレスを持つ参加者は ATTENDEE;CN="Name";RSVP=TRUE:mailto:addr となり、CN は RFC 5545 の引用符付きパラメーター値として記述されます。メールアドレスのない名前は、ルーティングできないアドレスとして記述するのではなく、DESCRIPTION に記載されます。いずれかのフィールドに CR、LF、制御文字が含まれている場合は、エスケープして取り除かずに拒否されます。これはコンテンツ行へのインジェクションに見られるものです。organizer_email を指定すると ORGANIZER 行が書き込まれます。指定しない場合は ORGANIZER 行が書き込まれず、その旨が回答に示されます。返信先がなくなるためです。
  • .ics ファイルには UTC 時刻が記録され(DTSTART:20260910T130000Z)、VTIMEZONE ブロックは含まれません。古くなった DST ルールを含む手書きの VTIMEZONE は、招待の時刻が1時間ずれて届く典型的な原因となるため、これは意図的な仕様です。
  • このサーバーが扱うカレンダーは営業時間だけです。 既存の会議、祝日(business_days に自分で渡してください)、昼休みは把握していません。祝日リストが渡されない場合、business_days は回答内でその旨を示します。そのため、「22営業日」という値が祝日を考慮したものと誤解されることはありません。
  • 引数のサイズには上限があります。 呼び出し元の処理が1回の呼び出しをハングさせたり、巨大な応答を生成したりするのを防ぐためです。場所と日付の文字列は100文字、イベントタイトルは200文字、説明は5000文字、ゾーンは最大50件、参加者は100人、出席者は100人、祝日は400件、days は <= 366、duration_minutes は <= 1440、business_days の範囲は最大3700日です(それを超える範囲は拒否され、黙って切り詰められることはありません)。
  • out_path には指定した場所に書き込みます。 ics_create は相対パスをプロセスの作業ディレクトリを基準に解決し、データディレクトリ内に限定しません。書き込みできないパスを指定した場合は、明確な EACCES が返され、月間無料枠は消費されません。
  • 週末のスキップには最初の参加者のゾーンと、土曜・日曜の慣例が使用されます。 金曜・土曜が週末となるケースには対応していません。work_start/work_end を設定するか、日付を確認してください。

トラブルシューティング

  • npx がハングする、またはパッケージが見つからない:npm への公開が保留中です。上記の .mcpb バンドルまたはクローンしてビルドする手順を使用してください。
  • 都市が認識されない:エラーに候補が表示されます。IANA ID は常に使用できるため、都市名が一覧にない場合でも America/Argentina/Cordoba は利用できます。
  • Node のバージョン:Node >= 18 が必要です。node -v で確認してください。古いビルドには古い DST ルールが含まれています。
  • 何も表示されない/エラーが出ないまま失敗する:このサーバーは stderr にのみ出力し、stdout には出力しません。Claude Desktop では「Settings -> Developer -> サーバーのログ」を確認してください。Claude Code では --mcp-debug を付けて実行してください。
  • Pro キーが認識されない:license_status を実行し、MCP_LICENSE_KEY がシェルだけでなく、クライアントが起動するプロセスに設定されていることを確認してください。

プライバシー

すべてのデータはローカルに保存されます。連絡先は ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/timezone/data.json に保存されます。 サーバーはネットワークリクエストを送信せず、テレメトリもなく、アカウントも不要です。タイムゾーンのデータは、Node にすでに含まれている ICU データベースを使用します。

以下と組み合わせて使用できます

  • mcp-time-tracker。各クライアントに費やした時間を記録し、レポートします。
  • mcp-invoice。記録した時間を、海外のクライアント向けの番号付き PDF 請求書に変換します。
  • office-suite。複数のサーバーを一度にインストールし、設定エントリは 1 つだけです。

FAQ

はい。このサーバーは独自の DST ルールを保存しません。各オフセットは、お使いの Node ビルド内の ICU データから読み取られるため、 2026 年 3 月 8 日から 29 日の間、ワルシャワとニューヨークの時差が 6 時間ではなく 5 時間になることも正しく反映されます。

実際の重複時間が 2 時間に及ぶことがあるためです。公平性スコアでは、最も不利な人の正午からのずれが表示されるので、負担を把握し、誰が受け入れるかを決められます。

はい。インド(+05:30)、ネパール(+05:45)、アデレード(+09:30)、チャタムも他のタイムゾーンと同様に処理されます。時間枠の 刻みは 30 分なので、30 分ずれたタイムゾーンでは、現地時刻の開始時刻が :00 と :30 になります。

いいえ。指定された営業時間のみを使用します。.ics ファイルを書き出しますが、カレンダーサービスを読み取ったり、接続したりすることはありません。

いいえ。ライセンス認証を含め、ネットワーク呼び出しは一切ありません。

ライセンス

MIT

スイート全体で使用する 1 つのビジネスプロフィール

ユーザー情報は ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/profile/business.json に一度だけ保存され、 スイート内のすべてのサーバーがこれを読み取ります。請求書の発行者、docx のレターヘッド、定期発行者、expense-tracker のデフォルト VAT 税率、time-tracker と timezone のホームゾーン、履歴書と契約書のレターヘッドで使用されます。business_set(invoice または docx)で一度設定すれば、ほかの場所で繰り返し設定する必要はありません。メールアドレスは、プロフィールまたは明示的な引数からのみ取得されます。保存されていない場合、書類には [add: email] と表示され、ツールもその旨を伝えるため、誰かが勝手にアドレスを作ることはありません。

このドキュメントを MCP サーバーとして使用する

任意の MCP クライアント(Claude、Cursor、Windsurf、VS Code)から、インストール不要で GitMCP 経由でこのリポジトリのドキュメントを直接読み取れます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。