gcal-mcp
A Google Calendar MCP server that provides comprehensive tools for managing calendars, events, and settings using OAuth2 authentication via the Dedalus framework. It enables users to perform operations such as event scheduling, searching, and free/busy queries through natural language interfaces.
README
gcal-mcp
A Google Calendar MCP server using OAuth2 bearer token auth via the Dedalus MCP framework.
Tools
Calendars
gcal_list_calendars- List all calendars accessible by the usergcal_get_calendar- Get details of a specific calendargcal_create_calendar- Create a secondary calendargcal_delete_calendar- Delete a secondary calendargcal_clear_calendar- Clear a calendar (deletes all events)gcal_patch_calendar- Patch calendar metadatagcal_update_calendar- Update calendar metadata (full replace)
Calendar List
gcal_calendarlist_get- Get a calendar list entrygcal_calendarlist_insert- Insert an existing calendar into the user's calendar listgcal_calendarlist_delete- Remove a calendar from the user's calendar listgcal_calendarlist_patch- Patch a calendar list entrygcal_calendarlist_update- Update a calendar list entry (full replace)
Events
gcal_list_events- List events from a calendargcal_get_event- Get a specific event by IDgcal_search_events- Search for events by text querygcal_get_event_instances- Get instances of a recurring eventgcal_create_event- Create an eventgcal_delete_event- Delete an eventgcal_patch_event- Patch an event (partial update)gcal_update_event- Update an event (full replace)gcal_quick_add_event- Quick add an event from a text stringgcal_move_event- Move an event to another calendargcal_import_event- Import an event (creates a private copy)
Free/Busy
gcal_get_freebusy- Query free/busy information for calendars
Settings
gcal_get_settings- Get user's calendar settingsgcal_get_setting- Get a specific calendar setting
Colors
gcal_get_colors- Get available calendar and event colors
Watch (Webhooks)
gcal_channels_stop- Stop watching a channelgcal_events_watch- Watch for changes to Events resourcesgcal_calendarlist_watch- Watch for changes to CalendarList resourcesgcal_settings_watch- Watch for changes to Settings resources
For MCP Users
Use this section if you want to call the gcal-mcp server from your own application via the Dedalus SDK.
Prerequisites
- A Dedalus API key (
dsk-live-*ordsk-test-*) - The
dedalus-labsPython SDK:pip install dedalus-labs
Quick Start
See src/_client.py for the complete working example.
OAuth Flow
- Your first request raises
AuthenticationErrorwith aconnect_url - Open the URL in a browser to authorize Google Calendar access
- After authorization, retry the request — credentials are now stored
- Subsequent requests work without re-authorization
For MCP Developers
Use this section if you want to build, modify, or deploy a Google Calendar MCP server like this one.
Project Structure
src/
main.py # Entrypoint — loads .env and starts the server
server.py # MCPServer setup (port 8080, streamable HTTP)
gcal.py # All 29 Google Calendar tools + API connection
_client.py # Example client with OAuth browser flow
Prerequisites
- Google Cloud project with the Calendar API enabled
- OAuth 2.0 credentials — create a "Web application" client in the Google Cloud Console and download the client secret JSON
- Dedalus API key (
dsk-live-*ordsk-test-*) - uv package manager
Environment Variables
Copy .env.example and fill in your values:
cp .env.example .env
OAuth configuration (from your Google client secret JSON):
OAUTH_ENABLED=true
OAUTH_AUTHORIZE_URL=https://accounts.google.com/o/oauth2/auth
OAUTH_TOKEN_URL=https://oauth2.googleapis.com/token
OAUTH_CLIENT_ID=<your-client-id>.apps.googleusercontent.com
OAUTH_CLIENT_SECRET=GOCSPX-<your-secret>
OAUTH_SCOPES_AVAILABLE=https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/calendar.events
OAUTH_BASE_URL=https://www.googleapis.com/calendar/v3
Dedalus platform:
DEDALUS_API_KEY=dsk-live-...
DEDALUS_API_URL=https://api.dedaluslabs.ai
DEDALUS_AS_URL=https://as.dedaluslabs.ai
Adding a New Tool
- Define an async function in
gcal.pywith the@tooldecorator: - Add it to the
gcal_toolslist at the bottom ofgcal.py
Running Locally
cd gcal-mcp
uv sync
uv run python src/main.py
The server starts on port 8080 and exposes /mcp via streamable HTTP.
API Reference
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.