{"adoption": {"forks": 327, "observed_at": "2026-09-03T02:15:15.572888+00:00", "stars": 1180}, "canonical_url": "https://ross.abutalabs.com/products/google-calendar-mcp", "card": {"archived": false, "artifact_type": "service", "description": "MCP integration for Google Calendar to manage events.", "domain": ["developer-tools", "large-language-models"], "enriched": true, "function": ["mcp", "scheduling", "auth", "api-framework"], "health_score": 100, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["nspady/google-calendar-mcp"], "name": "nspady/google-calendar-mcp", "platform": ["cross-platform", "self-hosted"], "pushed_at": "2026-09-02T21:57:03+00:00", "repo": "nspady/google-calendar-mcp", "stars": 1180, "tags": ["google-calendar", "mcp-server", "claude-desktop", "event-management", "oauth", "ai-agents", "automation", "nodejs"], "topics": [], "urls": [], "use_cases": ["let Claude manage my Google Calendar events", "check availability across multiple calendars with an AI assistant", "create calendar events from natural language", "detect scheduling conflicts across work and personal accounts", "import events from images or PDFs into Google Calendar", "manage recurring events via an AI assistant"], "what_it_is": "A Model Context Protocol (MCP) server that integrates Google Calendar with AI assistants like Claude, enabling event creation, updates, deletion, search, and free/busy queries. It supports multiple Google accounts and calendars, cross-account conflict detection, natural language scheduling, and importing events from images, PDFs, or web links.", "when_to_avoid": ["you need a standalone calendar app rather than an AI assistant integration", "you don't want to set up Google Cloud OAuth credentials", "you use a platform without MCP support"], "when_to_choose": ["you use Claude Desktop or another MCP-compatible assistant and want calendar control", "you need multi-account or multi-calendar event management", "you want natural language scheduling and smart event import"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/google-calendar-mcp", "repo": "nspady/google-calendar-mcp", "role": "main", "score": 89}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:28:13.902248+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb95ea9fb587f058ccacc5533544fd4b36d84e640129ce1e70e3e9191dac02b2", "fetched_at": "2026-09-03T02:15:15.572888+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nspady/google-calendar-mcp"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:28:13.902248+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb95ea9fb587f058ccacc5533544fd4b36d84e640129ce1e70e3e9191dac02b2", "fetched_at": "2026-09-03T02:15:15.572888+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nspady/google-calendar-mcp"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:28:13.902248+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb95ea9fb587f058ccacc5533544fd4b36d84e640129ce1e70e3e9191dac02b2", "fetched_at": "2026-09-03T02:15:15.572888+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nspady/google-calendar-mcp"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:28:13.902248+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb95ea9fb587f058ccacc5533544fd4b36d84e640129ce1e70e3e9191dac02b2", "fetched_at": "2026-09-03T02:15:15.572888+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nspady/google-calendar-mcp"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:28:13.902248+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb95ea9fb587f058ccacc5533544fd4b36d84e640129ce1e70e3e9191dac02b2", "fetched_at": "2026-09-03T02:15:15.572888+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nspady/google-calendar-mcp"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:28:13.902248+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb95ea9fb587f058ccacc5533544fd4b36d84e640129ce1e70e3e9191dac02b2", "fetched_at": "2026-09-03T02:15:15.572888+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nspady/google-calendar-mcp"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:15.572888+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:28:13.902248+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb95ea9fb587f058ccacc5533544fd4b36d84e640129ce1e70e3e9191dac02b2", "fetched_at": "2026-09-03T02:15:15.572888+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nspady/google-calendar-mcp"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:28:13.902248+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb95ea9fb587f058ccacc5533544fd4b36d84e640129ce1e70e3e9191dac02b2", "fetched_at": "2026-09-03T02:15:15.572888+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nspady/google-calendar-mcp"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:28:13.902248+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb95ea9fb587f058ccacc5533544fd4b36d84e640129ce1e70e3e9191dac02b2", "fetched_at": "2026-09-03T02:15:15.572888+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nspady/google-calendar-mcp"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:28:13.902248+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "eb95ea9fb587f058ccacc5533544fd4b36d84e640129ce1e70e3e9191dac02b2", "fetched_at": "2026-09-03T02:15:15.572888+00:00", "kind": "readme", "missing": false, "url": "https://github.com/nspady/google-calendar-mcp"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 44, "rhythm": 100}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 627, "days_push": 0, "days_rel": 0, "gap_med": 4.0, "n_releases_24m": 25}, "score": 89, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}