mcpField
P
pim-mcp

pim-mcp

ローカル
github.com/da-the-dev生産性04 日前に更新

pim-mcp について

pim-mcpは、Nextcloud、iCloud、Google、各種CalDAVのカレンダーを統合し、エージェントが参照・管理できるローカルMCPサーバーです。認証情報はTOML設定の外で管理し、ガードレールとETag確認で危険な操作や編集競合を抑えます。

主な機能

  1. 01複数カレンダーを時系列で統合
  2. 02予定の検索と詳細表示
  3. 03空き時間の検索と予定作成
  4. 04単一回またはシリーズ単位で予定を更新
  5. 05削除、招待、競合編集の制限

活用シーン

  1. 01複数アカウントの予定を確認
  2. 02予定作成前に空き時間を検索
  3. 03繰り返し予定を作成または更新
  4. 04別の場所での変更を上書きしないための確認

MCP 対応

ローカルでstdio経由で動作し、MCPクライアントにカレンダーツールを提供します。プロセスはクライアントが必要に応じて起動し、Nextcloud、iCloud、Google、その他のCalDAVサーバーに接続します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"da-the-dev-pim": {
"command": "npx",
"args": [
"-y",
"pim-mcp"
]
}
}
}
起動コマンドnpx -y pim-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmpim-mcp0.1.0

ツール

8

掲載時のツール一覧 · 4 日前に更新

このツールにパラメーターはありません。

詳細

pim-mcp:あらゆるエージェントで使える、あなたのカレンダー

すべてのカレンダーをまとめる、シンプルなローカル MCP サーバーです。
Nextcloud · iCloud · Google · あらゆる CalDAV をひとつのビューに統合し、エージェントが読み取り・管理できます。


npm CI MCP Registry Node Platforms License: MIT

クイックスタート · アカウント · エージェントを接続 · ツール · 安全対策 · プロバイダー · コントリビューション


 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.

✨ 選ばれる理由

🗂️ 統合されたひとつのビュー
すべてのアカウントのカレンダーを、繰り返しイベントを展開したうえで、ひとつの並べ替え済みリストに表示します。「あの予定はどのアカウントにあった?」と迷うことはありません。

🧳 持ち運び可能
シークレットを含まない TOML ファイルひとつで使えます。シークレットは OS のシークレットストア、環境変数、またはパスワードマネージャーへの参照として保存するため、同じ設定をどのマシンでも使えます。

🪶 シンプルでローカル
必要なときにエージェントのクライアントが stdio 経由で起動します。バックグラウンドでは何も動作せず、ポートも開かず、間にクラウドが介在することもありません。

🛡️ デフォルトで安全
イベントの削除や、他の人にメールを送信する操作は、許可するまで無効です。編集によって、ほかの場所で行われた変更が上書きされることはありません。

🧭 仕組み

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/accountOS のシークレットストアです。最も簡単な方法: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 サーバー)
  1. Nextcloud → 設定 → セキュリティ → デバイスとセッション → 新しいアプリパスワードを作成
  2. 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
  1. account.apple.com → サインインとセキュリティ → App用パスワード
  2. 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 のみです。

  1. Google Cloud Console:プロジェクトを作成し、CalDAV API を有効にします。
  2. OAuth 同意画面:External を選択し、自分をテストユーザーとして追加します。その後、公開ステータスを In production に設定します。「Testing」モードで発行されたトークンは 7 日後に期限切れになるためです。個人用アプリでは、サインイン時に「未確認のアプリ」という警告が表示されるのは正常です。
  3. 認証情報 → OAuth クライアント ID を作成 → デスクトップアプリ。クライアント ID を設定ファイルに記述し、シークレットを保存します:pim-mcp secret set pim-mcp/google-client-secret
  4. 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_timeN 分以上の空き時間帯を検索します。必要に応じて勤務時間内に限定できます。
➕create_event繰り返し、リマインダー、予定あり/なしのステータスを指定して、時刻指定または終日予定を作成します。
✏️update_event渡したフィールドのみを変更します。繰り返し予定には scope として instance または series を指定します。
🗑️delete_eventallow_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 · エージェント向けに構築、人にも読みやすく

コメント

MCP は初めてですか?

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

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