Skip to main content
Glama
Google Calendar MCP Server

Google Calendar MCP Server

by ampcome-mcps

๐Ÿ“… Google Calendar MCP Server

A powerful Model Context Protocol (MCP) server that lets Claude interact with your Google Calendar seamlessly!

Transform Claude into your personal calendar assistant with full Google Calendar integration. Create meetings, check schedules, manage events, and more - all through natural conversation with Claude.

๐ŸŒŸ What Can This Do?

โœจ Smart Calendar Management

  • ๐Ÿ“‹ View all your calendars - See every calendar you have access to

  • ๐Ÿ“… Check your schedule - Get today's events or upcoming events for any timeframe

  • ๐ŸŽฏ Create meetings instantly - Set up Google Meet events with attendees

  • โŒ Cancel events - Remove events you no longer need

  • ๐Ÿ” Search events - Find events within specific date ranges

๐Ÿค– Claude Integration Examples

Ask Claude things like:

  • "What meetings do I have today?"

  • "Schedule a team standup for tomorrow at 10 AM with the engineering team"

  • "Cancel my 3 PM meeting on Friday"

  • "What's my schedule looking like next week?"

  • "Create a Google Meet for our client review next Tuesday"

Related MCP server: Google Calendar MCP Server

๐Ÿš€ Quick Start

Step 1: Prerequisites

  • Python 3.8 or higher

  • A Google account with Calendar access

  • Nango account for authentication (handles Google OAuth for you)

Step 2: Installation

# Clone or download the MCP server files
git clone <your-repo-url>
cd google-calendar-mcp

# Install required packages
uv sync

Step 3: Set Up Environment Variables

Create a .env file in the project directory:

# Copy the example file
cp .env.example .env

Edit .env with your Nango credentials:

# Required Nango Configuration
NANGO_NANGO_BASE_URL=https://api.nango.dev
NANGO_NANGO_SECRET_KEY=your_nango_secret_key_here 
NANGO_CONNECTION_ID=your_connection_id_here
NANGO_INTEGRATION_ID=your_integration_id_here

๐Ÿ”ง Need help with Nango setup? Check the Nango Setup Guide below!

Step 4: Configure Claude Desktop

Add this configuration to your Claude Desktop settings:

On macOS: ~/Library/Application Support/Claude/claude_desktop_config.json On Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "google-calendar": {
      "command": "uvx",
      "args": ["git+https://github.com/ampcome-mcps/google-calendar-mcp.git"],
      "env": {
        "NANGO_NANGO_BASE_URL": "https://api.nango.dev",
        "NANGO_NANGO_SECRET_KEY": "your_nango_secret_key_here",
        "NANGO_CONNECTION_ID": "your_connection_id_here", 
        "NANGO_INTEGRATION_ID": "your_integration_id_here"
      }
    }
  }
}

Step 5: Test It Out!

  1. Restart Claude Desktop completely

  2. Start a new conversation with Claude

  3. Ask Claude: "What meetings do I have today?"

If everything is set up correctly, Claude will be able to access your Google Calendar! ๐ŸŽ‰

๐Ÿ› ๏ธ Available Tools

Tool

Description

Example Use

get_all_calendars

List all your Google Calendars

"Show me all my calendars"

get_calendar_events

Get events from a specific calendar

"What's on my work calendar this week?"

create_meet_event

Create a new event with Google Meet

"Schedule a team meeting for Friday at 2 PM"

cancel_calendar_event

Delete/cancel an event

"Cancel my 3 PM meeting today"

get_today_events

Get today's events

"What's my schedule today?"

get_upcoming_events

Get upcoming events

"What do I have coming up next week?"

๐Ÿ”ง Nango Setup Guide

Nango handles the complex Google OAuth flow for you. Here's how to set it up:

1. Create a Nango Account

  • Go to Nango.dev and sign up

  • Create a new project

2. Set Up Google Calendar Integration

  • In your Nango dashboard, add a new integration

  • Choose "Google Calendar" as the provider

  • Follow Nango's guide to configure Google OAuth credentials

3. Get Your Credentials

  • NANGO_SECRET_KEY: Found in your Nango project settings

  • NANGO_CONNECTION_ID: Created when a user connects their Google account

  • NANGO_INTEGRATION_ID: The ID of your Google Calendar integration

4. Test Your Connection

# Test that your environment is set up correctly
python -c "import os; print('โœ… All env vars set!' if all([os.getenv('NANGO_CONNECTION_ID'), os.getenv('NANGO_INTEGRATION_ID'), os.getenv('NANGO_NANGO_SECRET_KEY')]) else 'โŒ Missing env vars')"

๐Ÿงช Testing Your Setup

Option 1: Test with MCP Inspector

# Install the MCP inspector
npm install -g @modelcontextprotocol/inspector

# Test your server
npx @modelcontextprotocol/inspector python main.py

Option 2: Direct Python Test

# Run the server directly to see if it starts without errors
python main.py

Option 3: Test with Claude

Ask Claude: "Can you check what calendar tools are available?"

๐Ÿ” Troubleshooting

Common Issues

โŒ "Failed to retrieve calendars"

  • Check your Nango credentials in .env

  • Verify your Google Calendar connection in Nango dashboard

  • Ensure the Google account has calendar access

โŒ "NANGO_CONNECTION_ID environment variable is required"

  • Make sure your .env file is in the same directory as the Python script

  • Check that all environment variables are set correctly

  • Restart Claude Desktop after making changes

โŒ Claude can't find the calendar tools

  • Verify the full path in your Claude config is correct

  • Make sure you restarted Claude Desktop completely

  • Check the Claude Desktop logs for error messages

Getting Help

  1. Check the logs: Claude Desktop shows MCP server logs in its developer console

  2. Test your .env: Run python -c "from dotenv import load_dotenv; load_dotenv(); import os; print(os.environ.get('NANGO_CONNECTION_ID'))"

  3. Verify file paths: Make sure all paths in your Claude config are absolute paths

๐Ÿ“‹ Example Usage with Claude

Once set up, you can have natural conversations with Claude about your calendar:

You: "What's my schedule looking like today?"

Claude: I'll check your calendar for today's events.

{
  "success": true,
  "events": [
    {
      "summary": "Team Standup",
      "start": "2024-01-15T09:00:00Z",
      "end": "2024-01-15T09:30:00Z"
    }
  ],
  "total_events": 1
}

You have 1 event today: Team Standup from 9:00 AM to 9:30 AM.


You: "Schedule a client meeting for next Friday at 2 PM with john@company.com"

Claude: I'll create that meeting for you with a Google Meet link.

{
  "success": true,
  "event": {
    "summary": "Client Meeting",
    "start": "2024-01-19T14:00:00Z",
    "attendees": [{"email": "john@company.com"}]
  }
}

โœ… Created "Client Meeting" for Friday, January 19th at 2:00 PM with john@company.com. Google Meet link has been included automatically.

๐Ÿ” Security & Privacy

  • Your credentials: Stored locally in your .env file - never shared

  • Google access: Managed through Nango's secure OAuth flow

  • Data handling: All calendar data stays between your Google account, Nango, and Claude

  • No data storage: This MCP server doesn't store any of your calendar information

๐Ÿค Contributing

Found a bug or want to add a feature?

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Test thoroughly

  5. Submit a pull request

๐Ÿ“„ License

MIT License - feel free to use this in your own projects!


๐ŸŽ‰ Enjoy your new AI-powered calendar assistant!

If you found this helpful, consider starring the repository and sharing it with others who might benefit from AI calendar management.

Available Tools

6 tools
cancel_calendar_eventB

Cancel (delete) a specific event from Google Calendar

Args: calendar_id: Calendar ID where the event exists event_id: The unique identifier of the event to cancel

Inputs: calendar_id (required), event_id (required).

create_meet_eventB

Create a new Google Calendar event with Google Meet integration

Args: summary: Event title/summary start_datetime: Start datetime in ISO format (e.g., '2024-12-25T10:00:00') end_datetime: End datetime in ISO format (e.g., '2024-12-25T11:00:00') description: Event description attendees: List of attendee emails timezone: Timezone (default: UTC) calendar_id: Calendar ID (default: primary)

Inputs: summary (required), start_datetime (required), end_datetime (required), description, +3 more.

get_all_calendarsB

Get all Google Calendars accessible to the user

Inputs: no named parameters.

get_calendar_eventsB

Get events from a specific Google Calendar

Args: calendar_id: Calendar ID (default: primary) time_min: Lower bound for event start time (ISO format) time_max: Upper bound for event start time (ISO format) max_results: Maximum number of events to return (default: 10)

Inputs: calendar_id, time_min, time_max, max_results.

get_today_eventsC

Get today's events from the primary calendar

Args: calendar_id: Calendar ID (default: primary)

Inputs: calendar_id.

get_upcoming_eventsB

Get upcoming events for the next N days

Args: days_ahead: Number of days to look ahead (default: 7) calendar_id: Calendar ID (default: primary)

Inputs: days_ahead, calendar_id.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelogโ€ฆ

    TDQS

    B3.3/5.0

    Scored across 6 tools

    Disambiguation4/5

    Most tools have distinct purposes, but get_calendar_events, get_today_events, and get_upcoming_events overlap significantly in functionality. An agent might struggle to choose between them for general event retrieval, though their specific scopes (today, upcoming, custom time range) provide some differentiation in descriptions.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with snake_case naming (e.g., cancel_calendar_event, create_meet_event, get_all_calendars). The naming is predictable and readable throughout the set.

    Tool Count4/5

    With 6 tools, the count is reasonable for a calendar server, but it feels slightly thin. Core operations like updating events or managing calendar settings are missing, which could justify a few more tools to cover the domain more completely.

    Completeness3/5

    The server covers basic CRUD operations (create and cancel events, get events and calendars), but lacks update functionality for events, which is a notable gap. There are also no tools for managing calendar properties (e.g., create/delete calendars, update event attendees), limiting agent workflows.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    Appeared in Searches