/ Verzeichnis / Playground / keeper.sh
● Community ridafkih ⚡ Sofort

keeper.sh

von ridafkih · ridafkih/keeper.sh

Universal calendar MCP — aggregate Google, Outlook, iCloud, CalDAV, and ICS calendars into one tool surface your AI agent can query and sync.

keeper.sh is an open-source calendar sync engine with a built-in MCP server. It aggregates events from Google Calendar, Outlook/Office 365, iCloud, CalDAV, Fastmail, and ICS feeds, then exposes them via three MCP tools. Self-hostable with Docker (AGPL-3.0) or available as a cloud service with a free tier.

Warum nutzen

Hauptfunktionen

Live-Demo

In der Praxis

keeper-sh.replay ▶ bereit
0/0

Installieren

Wählen Sie Ihren Client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "keeper-sh": {
      "command": "npx",
      "args": [
        "-y",
        "keeper.sh"
      ],
      "_inferred": true
    }
  }
}

Öffne Claude Desktop → Settings → Developer → Edit Config. Nach dem Speichern neu starten.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "keeper-sh": {
      "command": "npx",
      "args": [
        "-y",
        "keeper.sh"
      ],
      "_inferred": true
    }
  }
}

Cursor nutzt das gleiche mcpServers-Schema wie Claude Desktop. Projektkonfiguration schlägt die globale.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "keeper-sh": {
      "command": "npx",
      "args": [
        "-y",
        "keeper.sh"
      ],
      "_inferred": true
    }
  }
}

Klicken Sie auf das MCP-Servers-Symbol in der Cline-Seitenleiste, dann "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "keeper-sh": {
      "command": "npx",
      "args": [
        "-y",
        "keeper.sh"
      ],
      "_inferred": true
    }
  }
}

Gleiche Struktur wie Claude Desktop. Windsurf neu starten zum Übernehmen.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "keeper-sh",
      "command": "npx",
      "args": [
        "-y",
        "keeper.sh"
      ]
    }
  ]
}

Continue nutzt ein Array von Serverobjekten statt einer Map.

~/.config/zed/settings.json
{
  "context_servers": {
    "keeper-sh": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "keeper.sh"
        ]
      }
    }
  }
}

In context_servers hinzufügen. Zed lädt beim Speichern neu.

claude mcp add keeper-sh -- npx -y keeper.sh

Einzeiler. Prüfen mit claude mcp list. Entfernen mit claude mcp remove.

Anwendungsfälle

Praxisnahe Nutzung: keeper.sh

How to get a daily schedule briefing from all your calendars

👤 Professionals juggling work + personal calendars across providers ⏱ ~5 min beginner

Wann einsetzen: Every morning when you want Claude to summarize your day across Google, Outlook, and iCloud calendars in one shot.

Voraussetzungen
  • keeper.sh running with calendars connected — npx -y keeper.sh or self-host via Docker; connect providers in the web UI
Ablauf
  1. List connected calendars
    List all my connected calendars in keeper.sh — show provider and account for each.✓ Kopiert
    → Table of calendars with provider names
  2. Pull today's events
    Get all events from today across all calendars. Group by morning/afternoon/evening and flag any conflicts.✓ Kopiert
    → Chronological event list with conflict warnings
  3. Plan the day
    Given those events, suggest an optimal order for my 3 unscheduled tasks: code review, doc writing, and 1:1 prep.✓ Kopiert
    → Time-blocked suggestions fitting around existing events

Ergebnis: A single-view daily briefing across all calendar providers with actionable scheduling advice.

Fallstricke
  • Stale events on the free tier (30-min refresh) — Trigger a manual sync in the web UI before querying, or upgrade to Pro for 1-min refresh
Kombinieren mit: notion · linear

Analyze your meeting load to reclaim focus time

👤 Engineering managers and ICs drowning in meetings ⏱ ~10 min beginner

Wann einsetzen: End of week when you suspect meetings ate all your deep work time.

Ablauf
  1. Pull this week's event count
    How many calendar events did I have this week? Break down by calendar.✓ Kopiert
    → Count per calendar
  2. Get event details for the week
    Get all events from Monday through Friday this week. Calculate total meeting hours and longest uninterrupted block.✓ Kopiert
    → Hour totals and gap analysis
  3. Suggest improvements
    Which recurring meetings could be async? Flag any that overlap or back-to-back with no break.✓ Kopiert
    → Specific meetings to cancel or move

Ergebnis: A data-driven view of your meeting load with concrete suggestions to reclaim time.

Fallstricke
  • All-day events inflate meeting hours — Ask Claude to filter out all-day events before calculating

Detect scheduling conflicts across work and personal calendars

👤 Anyone with calendars on different providers that don't talk to each other ⏱ ~5 min beginner

Wann einsetzen: Before scheduling something new, check all calendars for conflicts.

Ablauf
  1. Query a time range
    Get all events next Tuesday between 9am and 5pm across all calendars. Are there any overlaps?✓ Kopiert
    → List of events with any conflicts highlighted
  2. Find open slots
    Find 3 open 1-hour slots next week that are free across all my calendars.✓ Kopiert
    → Concrete time slots with no conflicts

Ergebnis: Conflict-free scheduling across providers without manually checking each calendar.

Fallstricke
  • Timezone mismatches between providers — Always specify IANA timezone in your prompt (e.g., 'in America/New_York')

Kombinationen

Mit anderen MCPs für 10-fache Wirkung

keeper-sh + notion

Pull today's calendar events and create a Notion daily planner page with time blocks

Get today's events from keeper.sh, then create a Notion page in my Daily Notes database with time-blocked tasks around the meetings.✓ Kopiert
keeper-sh + linear

Check calendar availability before assigning sprint tasks with deadlines

Show my free blocks this week via keeper.sh, then assign these 3 Linear issues to slots where I have 2+ hours free.✓ Kopiert

Werkzeuge

Was dieses MCP bereitstellt

WerkzeugEingabenWann aufrufenKosten
list_calendars none See all connected calendars and their providers 1 local API call
get_events start: ISO 8601, end: ISO 8601, timezone: IANA Retrieve events within a date range 1 local API call
get_event_count none Quick check of total synced events 1 local API call

Kosten & Limits

Was der Betrieb kostet

API-Kontingent
Self-hosted: unlimited. Cloud free tier: 30-min refresh, 2 sources, 1 destination.
Tokens pro Aufruf
100-500 tokens per tool call; large date ranges can return more
Kosten in €
Self-hosted: free (AGPL). Cloud: free tier or $5/month Pro (1-min sync, unlimited sources).
Tipp
Self-host the standalone Docker image for zero recurring cost. Cloud Pro is worth it only if you need sub-minute sync.

Sicherheit

Rechte, Secrets, Reichweite

Minimale Scopes: calendar:read (per connected provider)
Credential-Speicherung: OAuth tokens and CalDAV credentials encrypted at rest. Session signing via BETTER_AUTH_SECRET env var.
Datenabfluss: Self-hosted: stays on your server. Cloud: keeper.sh servers. Calendar API calls go to Google/Microsoft/iCloud respectively.
Niemals gewähren: calendar:write (unless you explicitly need sync destinations)

Fehlerbehebung

Häufige Fehler und Lösungen

CSRF validation failed

Set the TRUSTED_ORIGINS environment variable to your domain (e.g., https://calendar.example.com)

Prüfen: Check the keeper.sh web UI loads without 403 errors
Google OAuth redirect fails

Ensure your Google Cloud OAuth consent screen has the correct redirect URI matching your keeper.sh deployment URL

Events not refreshing

Free tier refreshes every 30 minutes. Trigger a manual sync in the web UI, or upgrade to Pro for 1-minute sync.

Prüfen: Check get_event_count before and after manual sync
CalDAV connection rejected

Verify the CalDAV URL includes the full path (usually /dav/calendars/user/). Check credentials and ensure the server supports CalDAV, not just CardDAV.

Prüfen: curl -u user:pass -X PROPFIND <caldav-url>

Alternativen

keeper.sh vs. andere

AlternativeWann stattdessenKompromiss
Google Calendar MCPYou only use Google Calendar and want a simpler setupSingle provider; no aggregation across Outlook/iCloud
Notion CalendarYou're already deep in the Notion ecosystemProprietary; no MCP interface

Mehr

Ressourcen

📖 Offizielle README auf GitHub lesen

🐙 Offene Issues ansehen

🔍 Alle 400+ MCP-Server und Skills durchsuchen