pim-mcp について
pim-mcpは、Nextcloud、iCloud、Google、各種CalDAVのカレンダーを統合し、エージェントが参照・管理できるローカルMCPサーバーです。認証情報はTOML設定の外で管理し、ガードレールとETag確認で危険な操作や編集競合を抑えます。
主な機能
- 01複数カレンダーを時系列で統合
- 02予定の検索と詳細表示
- 03空き時間の検索と予定作成
- 04単一回またはシリーズ単位で予定を更新
- 05削除、招待、競合編集の制限
活用シーン
- 01複数アカウントの予定を確認
- 02予定作成前に空き時間を検索
- 03繰り返し予定を作成または更新
- 04別の場所での変更を上書きしないための確認
MCP 対応
ローカルでstdio経由で動作し、MCPクライアントにカレンダーツールを提供します。プロセスはクライアントが必要に応じて起動し、Nextcloud、iCloud、Google、その他のCalDAVサーバーに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
8掲載時のツール一覧 · 4 日前に更新
このツールにパラメーターはありません。
詳細
すべてのカレンダーをまとめる、シンプルなローカル MCP サーバーです。
Nextcloud · iCloud · Google · あらゆる CalDAV をひとつのビューに統合し、エージェントが読み取り・管理できます。
クイックスタート · アカウント · エージェントを接続 · ツール · 安全対策 · プロバイダー · コントリビューション
you › Find me an hour on Thursday afternoon and put the dentist there.
agent › find_free_time start=Thu 12:00 end=Thu 18:00 duration_minutes=60
↳ 13:00–15:30 · 16:15–18:00
› create_event calendar="icloud/personal" title="Dentist" start=Thu 13:00
↳ ✓ created Thu 13:00–14:00 · icloud/personal
Done. Thursday 13:00 is booked; you're free again from 14:00.
✨ 選ばれる理由
|
🗂️ 統合されたひとつのビュー |
🧳 持ち運び可能 |
|
🪶 シンプルでローカル |
🛡️ デフォルトで安全 |
🧭 仕組み
flowchart LR
A["🤖 Agent<br><sub>Claude Code · Claude Desktop · Cursor</sub>"] -- "MCP · stdio" --> P["<b>pim-mcp</b><br><sub>on your machine</sub>"]
S[("🔐 OS secret store<br><sub>Keychain · Secret Service · DPAPI</sub>")] -. "app passwords / tokens" .-> P
P -- CalDAV --> N["☁️ Nextcloud"]
P -- CalDAV --> I["🍎 iCloud"]
P -- "CalDAV + OAuth" --> G["📅 Google"]
P -- CalDAV --> O["🌐 any CalDAV"]
🚀 クイックスタート
Node.js 22 以降が必要です。
npm install -g pim-mcp # 1 · install (or prefix commands with `npx -y`)
pim-mcp init # 2 · write ~/.config/pim-mcp/config.toml
pim-mcp secret set pim-mcp/icloud # 3 · store an app password (prompted, not echoed)
pim-mcp check # 4 · verify every account
claude mcp add pim -s user -- npx -y pim-mcp # 5 · connect your agent
pim-mcp check を実行すると、検出された項目が一覧表示されます。
✓ nextcloud (nextcloud) — 3 calendar(s)
nextcloud/personal Personal
nextcloud/work Work
✓ icloud (icloud) — 2 calendar(s)
icloud/family Family
icloud/travel Travel
すべての OS で、設定ファイルは ~/.config/pim-mcp/config.toml にあります(Windows では C:\Users\<you>\.config\pim-mcp\config.toml)。別のパスを使うには、PIM_MCP_CONFIG を設定してください。
🔐 シークレット
パスワードやトークンを設定ファイルに直接記述することはありません。設定ファイルには代わりに参照を記述します。
| 参照 | 解決先 |
|---|---|
keychain:service/account | OS のシークレットストアです。最も簡単な方法:pim-mcp secret set service/account |
env:NAME | 環境変数です |
cmd:<command> | コマンドの出力です。例:cmd:op read op://Private/iCloud/password、cmd:pass show icloud、cmd:bw get password icloud |
🍎 macOS:ログインキーチェーン
ログインキーチェーンに汎用パスワードとして保存されます。キーチェーンアクセス、または security add-generic-password -s pim-mcp -a icloud -w でも管理できます。
🐧 Linux:Secret Service(GNOME Keyring / KWallet)
secret-tool が必要です。
sudo apt install libsecret-tools # Debian / Ubuntu
sudo dnf install libsecret # Fedora
sudo pacman -S libsecret # Arch
ヘッドレスマシンでは、通常キーチェーンが起動していません。env: 参照(MCP クライアントの env ブロックに設定)か、pass を使用してください。
password = "cmd:pass show pim-mcp/icloud"
🪟 Windows:DPAPI
シークレットは、資格情報マネージャーでも使用されるユーザーごとの暗号化機能、DPAPI で暗号化されます。%APPDATA%\pim-mcp\secrets\ に保存され、このマシン上の自分の Windows ユーザーのみが復号できます。インストールは不要です。cmd: 参照は cmd.exe で実行されます。
👤 アカウント
☁️ Nextcloud(任意の Nextcloud / ownCloud サーバー)
- Nextcloud → 設定 → セキュリティ → デバイスとセッション → 新しいアプリパスワードを作成
pim-mcp secret set pim-mcp/nextcloud
[[accounts]]
id = "nextcloud"
provider = "nextcloud"
url = "https://your.next.cloud/remote.php/dav"
username = "your-login"
password = "keychain:pim-mcp/nextcloud"
🍎 iCloud
- account.apple.com → サインインとセキュリティ → App用パスワード
pim-mcp secret set pim-mcp/icloud
[[accounts]]
id = "icloud"
provider = "icloud"
username = "[email protected]" # the email you sign into your Apple Account with
password = "keychain:pim-mcp/icloud"
📅 Google(OAuth の初回設定)
Google が CalDAV に対して許可している認証方式は OAuth のみです。
- Google Cloud Console:プロジェクトを作成し、CalDAV API を有効にします。
- OAuth 同意画面:External を選択し、自分をテストユーザーとして追加します。その後、公開ステータスを In production に設定します。「Testing」モードで発行されたトークンは 7 日後に期限切れになるためです。個人用アプリでは、サインイン時に「未確認のアプリ」という警告が表示されるのは正常です。
- 認証情報 → OAuth クライアント ID を作成 → デスクトップアプリ。クライアント ID を設定ファイルに記述し、シークレットを保存します:
pim-mcp secret set pim-mcp/google-client-secret pim-mcp auth google --account googleを実行するとブラウザーが開き、更新トークンが OS のシークレットストアに保存されます。
[[accounts]]
id = "google"
provider = "google"
username = "[email protected]"
client_id = "xxxx.apps.googleusercontent.com"
client_secret = "keychain:pim-mcp/google-client-secret"
refresh_token = "keychain:pim-mcp/google"
🌐 その他の CalDAV サーバー
[[accounts]]
id = "fastmail"
provider = "caldav"
url = "https://caldav.fastmail.com/"
username = "[email protected]"
password = "keychain:pim-mcp/fastmail"
既知の URL はプロバイダーに記載されています。
🔌 エージェントを接続する
Claude Code(すべての OS)
claude mcp add pim -s user -- npx -y pim-mcp
Claude Desktop、Cursor、その他の GUI クライアント。 クライアントの MCP 設定に以下を追加します。
🍎 macOS:~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"pim": { "command": "npx", "args": ["-y", "pim-mcp"] }
}
}
GUI アプリからシェルの PATH が常に参照できるとは限りません。サーバーの起動に失敗した場合は、which npx で確認できるフルパス(例:/opt/homebrew/bin/npx)に npx を置き換えてください。
🪟 Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"pim": { "command": "cmd", "args": ["/c", "npx", "-y", "pim-mcp"] }
}
}
Windows では npx はバッチスクリプトのため、cmd /c 経由で実行されます。
🐧 Linux
Claude Desktop は Linux では利用できません。Claude Code、または macOS と同じ command / args を指定した別の MCP クライアントを使用してください。env: 参照はクライアントの env ブロックに記述します。
"pim": {
"command": "npx",
"args": ["-y", "pim-mcp"],
"env": { "ICLOUD_PASSWORD": "…" }
}
| ツール | 機能 | |
|---|---|---|
| 📚 | list_calendars | すべてのカレンダーとその ID(icloud/work)を表示します。カレンダーを指定するツールでは、通常の名前も使用できます。 |
| 🗓️ | list_events | 指定期間内のすべてのカレンダーの予定を統合し、並べ替えて表示します。デフォルトでは今日から今後 7 日間です。 |
| 🔎 | search_events | タイトル、場所、説明を対象にテキスト検索します。 |
| 📄 | get_event | 説明、参加者、開催者、繰り返しルールなどの詳細を表示します。 |
| 🕐 | find_free_time | N 分以上の空き時間帯を検索します。必要に応じて勤務時間内に限定できます。 |
| ➕ | create_event | 繰り返し、リマインダー、予定あり/なしのステータスを指定して、時刻指定または終日予定を作成します。 |
| ✏️ | update_event | 渡したフィールドのみを変更します。繰り返し予定には scope として instance または series を指定します。 |
| 🗑️ | delete_event | allow_delete = true が設定されていない限り無効です。 |
エージェントに表示される内容:
- オフセットを指定しない時刻は、設定済みの
timezoneの時刻として扱われます。 - 出力はオフセット付きの ISO 8601 形式です。
- 終日予定の日付は
YYYY-MM-DD形式で、終了日を含みます。
🛡️ 安全策
timezone = "Europe/Amsterdam" # default: the system timezone
[guardrails]
allow_delete = false # delete_event is refused
allow_invites = false # no adding attendees, no editing/deleting events that have them
[[accounts]]
# …
read_only = true # no writes to this account at all
read_only_calendars = ["Family"] # protect specific calendars
hide_calendars = ["Birthdays"] # don't show these at all
- 拒否の理由を説明します。 安全策によって処理がブロックされると、どの設定を変更すれば許可されるかをエージェントに伝えるため、再試行するのではなくユーザーに確認します。
- 編集内容を失いません。 書き込みのたびに予定の ETag を確認します。読み取り後に別の場所で予定が変更されていた場合、上書きせずに書き込みを失敗させます。
🌍 プロバイダー
| プロバイダー | ステータス | 設定 |
|---|---|---|
| Nextcloud / ownCloud | ✅ テスト済み | nextcloud · https://<host>/remote.php/dav |
| iCloud | ✅ テスト済み | icloud · アプリ専用パスワード |
| Google Calendar | 🧪 ベータ | google · OAuth。実際のアカウントではまだ試していません。報告をお待ちしています |
| Fastmail | 🟡 未テスト | caldav · https://caldav.fastmail.com/ |
| Yahoo | 🟡 未テスト | caldav · https://caldav.calendar.yahoo.com |
| mailbox.org | 🟡 未テスト | caldav · https://dav.mailbox.org/ |
| Posteo | 🟡 未テスト | caldav · https://posteo.de:8443/ |
| Radicale · Baïkal · SOGo · Synology | 🟡 未テスト | caldav · お使いのサーバーの DAV URL |
| Outlook · Microsoft 365 · Exchange | 🚧 対応希望 | CalDAV には対応していません。Microsoft Graph バックエンドが必要です |
| Proton Calendar | ❌ 対象外 | CalDAV および公開 API には対応していません |
🟡 未テストとは、標準的な CalDAV で動作するはずですが、まだ pim-mcp で確認できていないことを意味します。試したことがある方は、この表を更新する PR をぜひお寄せください。
🗺️ ロードマップ
- CalDAV 経由のカレンダー:Nextcloud、iCloud、Google、汎用
- macOS・Linux・Windows のシークレットストア
- Microsoft Graph 経由の Outlook / Microsoft 365
- メール:IMAP / SMTP、同じアカウントと設定を使用
- ファイル:WebDAV(Nextcloud など)
🤝 コントリビューション
新しいプロバイダー、バグ修正、「X で動作する」という確認を歓迎します。開発環境のセットアップ、テスト用の一時的なローカル CalDAV サーバー、プロバイダーの追加方法については、CONTRIBUTING.md をご覧ください。
MIT © Aleksey Tkachenko · エージェント向けに構築、人にも読みやすく
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。