yandex-calendar-mcp
yandex-calendar-mcp
CalDAV 経由で AI アシスタントに Yandex Calendar へのアクセスを提供する MCP サーバーです。スケジュールの読み取り、イベントの作成・移動・削除ができます。
言語についての注意: ツールの説明と応答は ロシア語 です。 このサーバーはロシア語を話すアシスタント向けに書かれたためです。コード、 設定、このドキュメントは英語です。それ以外はすべて、言語に関係なく 動作します。
できること
読み取り
任意の期間のイベント: デフォルトは今日、または最大92日までの明示的な範囲。
すべてのカレンダーを一度に取得し、各イベントには取得元のカレンダーがラベル付けされます。または、名前で選択した単一のカレンダーも取得できます。
繰り返しイベントは具体的な日付に展開されます。展開に失敗した場合は、正確なものとして提示するのではなく、警告付きでイベントが返されます。
参加者が、それぞれの返答状況(承諾、辞退、仮承諾、未返答)とともに一覧表示されます。
終日イベントは終日として認識され、深夜の予定としては表示されません。
すべての応答には、使用されたタイムゾーンと UTC オフセットが明記されます。
書き込み
イベントの作成: タイトル、開始、終了または所要時間、場所、説明。時刻指定または複数日にわたる終日イベント。
繰り返しイベントの作成 — 日次、週次、月次、または年次 — 発生回数または終了日で制限されます。
イベントの更新: 移動、名前変更、場所や説明の変更。渡したフィールドだけが変更されます。移動したイベントは、指定しない限り元の所要時間を維持します。
繰り返しシリーズの 単一の出現 またはシリーズ全体を編集・削除できます。変更した日は
RECURRENCE-IDの上書きになり、削除した日はEXDATEになります。これは標準的な仕組みなので、結果は Yandex アプリでも他のクライアントでも正しく表示されます。参加者の招待: イベント作成時に参加者を追加でき、後から追加・削除もできます。招待メールとキャンセルメールは Yandex が自ら送信します。
イベントの削除。ただし、後述の保護機能があります。
タイムゾーン: 意図的な処理
すべてのタイムスタンプは
zoneinfoで設定されたゾーンに変換されます。時刻文字列が文字位置で切り出されることはありません。書き込まれるイベントには、明示的な
DTSTART;TZID=…と完全なVTIMEZONEブロックが含まれるため、どのカレンダークライアントでも同じように解釈されます。サーバーを実行しているマシンは通常 UTC ですが、それが応答に漏れることはありません。実際に使用されたゾーンがすべての応答に明記されるため、誤りがあれば黙って通り過ぎずに明らかになります。
アシスタントが操作するために設計
応答はイベントの
uidを含む読みやすい平文テキストなので、一覧表示の後に編集や削除を直接行えます。create_eventは明示的なカレンダーを必須とします。人々は目的別に複数のカレンダーを持っており、誤ったカレンダーに黙って登録されたイベントは失われたも同然だからです。アシスタントは推測するのではなく質問することが期待されています。エラーはスタックトレースではなく、次に何をすべきかを説明する文章として返されます。
Related MCP server: MCP Personal Calendar
必要条件
Python 3.10 以降(3.13 でテスト済み)
Yandex の アプリパスワード(アカウントのパスワードではありません): https://id.yandex.ru/security/app-passwords → アプリの種類 "Календарь (CalDAV)"
pip install -r requirements.txttzdata は意図的に requirements に含まれています。スリムな Linux イメージにはタイムゾーンデータベースが含まれていないことが多く、その場合 ZoneInfo("Europe/Moscow") は失敗します。
設定
すべての設定は環境変数から取得されます。
変数 | 必須 | デフォルト | 意味 |
| はい | — |
|
| はい | — | アプリパスワード |
| いいえ |
| CalDAV エンドポイント |
| いいえ |
| すべての入力と出力に使用される IANA タイムゾーン |
| いいえ |
| 変更・削除されたイベントのコピーが保存される場所 |
| いいえ |
| 招待状で会議の主催者として表示されるアドレス |
サーバーは stdio 経由で MCP を話します。クライアント設定の例は examples/ にあります。
ツール
ツール | 説明 |
| 期間内のイベント。デフォルトは今日。繰り返しを展開します。 |
| カレンダー名と URL |
| 参加者付きでイベントを作成(単発または繰り返し)。 |
| 移動、名前変更、場所・説明の変更、参加者の追加・削除。シリーズの1日分またはシリーズ全体。 |
| イベントを削除。シリーズの1日分またはシリーズ全体。 |
削除は取り消せません — そのための保護
タイトル確認。
delete_eventはuidとイベントのタイトルの両方を受け取ります。それらが比較され、一致しない場合は何も削除されず、応答には両方のタイトルとカレンダーが示されます。古い、または誤ったuidが原因で誤ったイベントを破壊するのが現実的なリスクですが、このチェックがそれを捕捉します。ゴミ箱。 すべての削除 および すべての更新の前に、元のイベント全体がタイムスタンプ付きの
.icsファイルとしてYANDEX_TRASH_DIRに書き込まれます。コピーが書き込めない場合、操作はまったく実行されません。復元はそのファイルを再インポートすることです。繰り返しシリーズ。 シリーズへの編集や削除は、適用対象を明示する必要があります: 1日分は
occurrence、シリーズ全体はapply_to_seriesです。どちらも指定しない場合、ツールは拒否して選択肢を説明します。これにより、「火曜日をキャンセル」が1年分の会議を消してしまうことを防ぎます。
参加者を招待すると実際のメールが送信されます
Yandex は calendar-auto-schedule を宣伝しているため、参加者を追加するとサーバーが招待状を送信し、参加者を削除するとキャンセル通知を送信します。どちらも取り消すことはできません。これはサーバーの宣伝された機能だけでなく、エンドツーエンドで検証されています: create_event で追加された招待状が受信者のメールボックスに届きました。
そこから導かれること:
アドレスは文字どおりに受け取られ、検証されます。サーバーは名前からアドレスを導出することはありません。そうしないと、連絡先を曖昧に覚えているアシスタントが見知らぬ人にメールを送ってしまうからです。
update_eventは参加者リストを置き換えるのではなく、参加者を 追加および削除 するため、他の参加者がすでに返した回答は保持されます。すべての応答には、イベントに誰が参加していて、それぞれがどう返答したかが正確に記載されるため、誤ったアドレスはすぐにわかります。
このサーバーを操作するアシスタントは、呼び出し前にユーザーとアドレスリストを確認すべきです。招待状の送信は取り消しできない操作です。
テスト
python tests/write_cycle.py "Calendar name"実際のプロトコルを通じて実際のカレンダーに対して行う自己クリーンアップの一連のテストです。単発イベント: 作成 → 誤ったタイトルでの削除を試行(拒否されること)→ 移動と名前変更 → 一覧に表示されることを確認 → 削除 → 消えたことを確認。3回発生するシリーズ: 1日分を編集、1日分を削除、シリーズ全体を削除し、そのたびに正確に1日だけが変更されたことを確認します。削除に失敗した場合、残ったイベントの uid が黙って放置されるのではなく出力されます。
参加者のテストは、実際のメールを送信するため、アドレスが明示的に渡された場合にのみ実行されます:
python tests/write_cycle.py "Calendar name" someone@example.comtests/probe.jsonl は、ハンドシェイクと読み取りパスを確認するための生のプロトコルメッセージのセットです:
python src/server.py < tests/probe.jsonl既知の制限
終日イベントは作成できますが、その時刻を移動することはできません。
繰り返しルールは一般的な形式(毎日 / 毎週 / 毎月 / 毎年、回数または終了日付き)で作成できます。より複雑なルール — 「毎月第2火曜日」や曜日のセットなど — は正しく読み取り・展開できますが、ツールからは作成できません。
リマインダーとアラームには対応していません。
参加者は常に必須参加者として招待されます。任意参加者や参加者ごとの役割は公開されていません。
Yandex Calendar に対してのみ検証済みです。他の CalDAV サーバーでも動作する可能性は高いですが、テストされていません。
ライセンス
MIT — LICENSE を参照してください。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn MCP server that exposes CalDAV calendar operations as tools for AI assistants. It enables users to connect to CalDAV servers to create and list calendar events within specific timeframes.43297MIT
- AlicenseNot gradedqualityAmaintenanceA CalDAV-compliant MCP server that enables AI models to manage personal schedules and to-do lists, supporting batch creation, modification, and intelligent timezone adjustments.MIT
- AlicenseNot gradedqualityFmaintenanceProvider-agnostic CalDAV calendar MCP server that connects any CalDAV calendar to AI assistants, enabling calendar operations like listing, creating, updating, and deleting events.AGPL 3.0
- AlicenseNot gradedqualityFmaintenanceA comprehensive MCP server that provides AI assistants with natural language access to Apple Calendar, enabling reading, searching, creating, and managing calendar events.3MIT
Related MCP Connectors
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
AI-native scheduling: check availability, book meetings, cancel and reschedule via MCP
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/PlatonKing/yandex-calendar-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server