# ๐Ÿ“… 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"* ## ๐Ÿš€ 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 ```bash # Clone or download the MCP server files git clone cd google-calendar-mcp # Install required packages uv sync ``` ### Step 3: Set Up Environment Variables Create a `.env` file in the project directory: ```bash # Copy the example file cp .env.example .env ``` Edit `.env` with your Nango credentials: ```bash # 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](#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` ```json { "mcpServers": { "google-calendar": { "command": "uvx", "args": ["git+https://github.com/Shameerpc5029/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](https://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 ```bash # 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 ```bash # Install the MCP inspector npm install -g @modelcontextprotocol/inspector # Test your server npx @modelcontextprotocol/inspector python main.py ``` ### Option 2: Direct Python Test ```bash # 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.* ```json { "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.* ```json { "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.