{
  "markdown": "# google-cal-mcp\n\nMCP server for Google Calendar - list, create, update, and manage calendar events.\n\n## Use Cases\n\n**Schedule meetings**: \"Set up a 30-min sync with Sarah next week\" → finds a free slot, creates the event with a Meet link, and sends the invite.\n\n**RSVP to invites**: \"Accept the team offsite but decline the vendor demo\" → responds to pending invitations automatically.\n\n**Find availability**: \"When am I free this Thursday afternoon?\" → queries your calendar and returns open slots.\n\n**Reschedule events**: \"Move my 1:1 with Alex to Friday at 2pm\" → updates the event and notifies attendees.\n\n**Daily briefing**: \"What's on my calendar today?\" → lists all events with times, locations, and attendees.\n\n**Block focus time**: \"Block 2 hours tomorrow morning for deep work\" → creates a calendar event to protect your time.\n\n(These are just examples - any workflow that needs calendar access can use this.)\n\n## Setup\n\n### 1. Create Google OAuth credentials\n\n1. Go to [Google Cloud Console](https://console.cloud.google.com/)\n2. Create a new project (or use existing)\n3. Enable the Google Calendar API\n4. Go to **APIs & Services** → **OAuth consent screen**, set up consent screen\n5. Go to **APIs & Services** → **Credentials** → **Create Credentials** → **OAuth client ID**\n6. Choose **Web application**\n7. Add `http://localhost:3000/callback` to **Authorized redirect URIs**\n8. Note your Client ID and Client Secret\n\n### 2. Run the server\n\n```bash\nGOOGLE_CLIENT_ID='your-client-id' \\\nGOOGLE_CLIENT_SECRET='your-client-secret' \\\nMCP_TRANSPORT=http \\\nnpm start\n```\n\nThe server runs on `http://localhost:3000` by default. Change with `PORT=3001`.\n\n### 3. Add to your MCP client\n\nWith the server running, follow the instructions on [install-mcp](https://adamjones.me/install-mcp/?url=http://localhost:3000/mcp), which generates the right config for your MCP client (Claude Code, Claude Desktop, Cursor, Cline, VS Code, and more).\n\n## Architecture\n\nThis server acts as an **OAuth proxy** to Google:\n\n```mermaid\ngraph LR\n    A[MCP client] <--> B[google-cal-mcp] <--> C[Google OAuth/API]\n```\n\n1. Server advertises itself as an OAuth authorization server via `/.well-known/oauth-authorization-server`\n2. `/register` returns the Google OAuth client credentials\n3. `/authorize` redirects to Google, encoding the client's callback URL in state\n4. `/callback` receives the code from Google and forwards to the client's callback\n5. `/token` proxies token requests to Google, injecting client credentials\n6. `/mcp` handles MCP requests, using the bearer token to call Calendar API\n\nThe server holds no tokens or state - it just proxies OAuth to Google.\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| **Calendars** | |\n| `calendars_list` | List all calendars the user has access to |\n| `calendarlist_insert` | Subscribe to a shared calendar |\n| `calendarlist_update` | Update calendar settings (color, visibility, reminders) |\n| `calendarlist_delete` | Unsubscribe from a calendar |\n| **Events** | |\n| `events_list` | List events in a time range with search/filter |\n| `event_get` | Get details of a specific event |\n| `event_create` | Create a new event with attendees and Meet link |\n| `event_update` | Update an existing event |\n| `event_delete` | Delete an event |\n| `event_respond` | RSVP to an invitation (accept/decline/tentative) |\n| `event_move` | Move event to a different calendar |\n| `event_instances` | Get instances of a recurring event |\n| **Availability** | |\n| `freebusy_query` | Find free/busy times for scheduling |\n| **Sharing** | |\n| `acl_list` | List who has access to a calendar |\n| **Colors** | |\n| `colors_get` | Get available color palette for calendars/events |\n\n## Calendar API Scopes\n\n- `calendar` - Full access to calendars\n- `calendar.events` - Read/write events\n\n## Contributing\n\nPull requests are welcomed on GitHub! To get started:\n\n1. Install Git and Node.js\n2. Clone the repository\n3. Install dependencies with `npm install`\n4. Run `npm run test` to run tests\n5. Build with `npm run build`\n\n## Releases\n\nVersions follow the [semantic versioning spec](https://semver.org/).\n\nTo release:\n\n1. Use `npm version <major | minor | patch>` to bump the version\n2. Run `git push --follow-tags` to push with tags\n3. Wait for GitHub Actions to publish to the NPM registry.\n",
  "bytes": 4309,
  "sha": "fef53861b46238bcd5689dc4531daafc8432c18e5d46a240f18225fd30e315a7",
  "repo_slug": "domdomegg/google-calendar-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_domdomegg_google_cal_mcp_f3ccc60b/readme"
}