Skip to main content
Glama

Google Calendar MCP Server

by shaynemeyer
readme.md4.92 kB
# Google Calendar MCP Server A Model Context Protocol (MCP) server that provides integration with Google Calendar API. This server allows MCP clients to retrieve calendar events by date. ## Architecture Diagram ``` ┌─────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐ │ MCP Client │────▶│ MCP Server │────▶│ Google Calendar │ │ (Claude AI, │ │ (gcal-mcp-server) │ │ API v3 │ │ other AI │ │ │ │ │ │ assistants) │ │ ┌──────────────┐ │ │ ┌──────────────┐ │ └─────────────────┘ │ │ Tool: │ │ │ │ Calendar │ │ │ │getMyCalendar │ │ │ │ Events │ │ │ │ │DataByDate │ │ │ │ │ │ │ │ └──────────────┘ │ │ └──────────────┘ │ │ │ │ │ │ │ │ ┌──────────────┐ │ └─────────────────────┘ │ │ │ Validation │ │ │ │ │ │ (Zod) │ │ │ │ │ └──────────────┘ │ │ │ │ │ │ │ │ ┌──────────────┐ │ │ │ │ │ Transport │ │ │ │ │ │ (stdio) │ │ │ │ │ └──────────────┘ │ │ │ └─────────────────────┘ │ │ │ │ Environment Variables: │ │ • GOOGLE_PUBLIC_API_KEY ──────────────┘ │ • CALENDAR_ID │ └─── Tool Call: getMyCalendarDataByDate(date) Returns: { meetings: [...] } or { error: "..." } ``` ### Data Flow 1. **MCP Client** sends a tool call request to the server via stdio transport 2. **MCP Server** receives and validates the request using Zod schema 3. **Tool Function** processes the date parameter and makes API call to Google Calendar 4. **Google Calendar API** returns events for the specified date range 5. **Server** formats the response and sends it back to the client 6. **Client** receives structured calendar data or error information ## Features - Retrieve calendar events for a specific date - Integration with Google Calendar API v3 - Simple MCP tool interface with date validation - Error handling for API failures ## Prerequisites - Node.js (ES modules support required) - Google Calendar API access - Google API key with Calendar API enabled - Target Google Calendar ID ## Installation 1. Clone the repository: ```bash git clone <repository-url> cd gcal-mcp-server ``` 2. Install dependencies: ```bash npm install ``` 3. Set up environment variables: ```bash cp example.env .env ``` 4. Configure your `.env` file: ``` GOOGLE_PUBLIC_API_KEY=your_google_api_key_here CALENDAR_ID=your_calendar_id_here ``` ## Usage Start the MCP server: ```bash npm start ``` The server will run using stdio transport and register the following tool: ### `getMyCalendarDataByDate` Retrieves calendar events for a specified date. **Parameters:** - `date` (string): A valid date string (e.g., "2024-01-15", "2024-01-15T10:00:00Z") **Returns:** - `meetings`: Array of formatted meeting strings with summary and start time - `error`: Error message if the API call fails ## Development This project uses ES modules and requires Node.js with module support. **Project Structure:** - `server.js` - Main MCP server implementation - `package.json` - Project configuration and dependencies - `example.env` - Environment variable template - `.env` - Your local environment configuration (git-ignored) ## Dependencies - `@modelcontextprotocol/sdk` - MCP framework - `googleapis` - Google APIs client library - `dotenv` - Environment variable loading - `zod` - Input validation ## License MIT

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shaynemeyer/gcal-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server