Skip to main content
Glama

Google Calendar MCP Server

by shaynemeyer
server.js1.98 kB
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import dotenv from 'dotenv'; import { google } from 'googleapis'; import { z } from 'zod'; // create the MCP server const server = new McpServer({ name: 'Shaynes Calendar', version: '1.0.0', }); // tool function async function getMyCalendarDataByDate(date) { const calendar = google.calendar({ version: 'v3', auth: process.env.GOOGLE_PUBLIC_API_KEY, }); // Calculate the start and end of the given date (UTC) const start = new Date(date); start.setUTCHours(0, 0, 0, 0); const end = new Date(start); end.setUTCDate(end.getUTCDate() + 1); try { const res = await calendar.events.list({ calendarId: process.env.CALENDAR_ID, timeMin: start.toISOString(), timeMax: end.toISOString(), maxResults: 10, singleEvents: true, orderBy: 'startTime', }); const events = res.data.items || []; const meetings = events.map((event) => { const start = event.start.dateTime || event.start.date; return `${event.summary} at ${start}`; }); if (meetings.length > 0) { return { meetings, }; } else { return { meetings: [], }; } } catch (err) { return { error: err.message, }; } } // register the tool to MCP server.tool('getMyCalendarDataByDate', { date: z.string().refine( (val) => !isNaN(Date.parse(val)), { message: 'Invalid date format. Please provide a valid date string.', }, async ({ date }) => { return { content: [ { type: 'text', text: JSON.stringify(await getMyCalendarDataByDate(date)), }, ], }; } ), }); // set transfort async function init() { const transport = new StdioServerTransport(); await server.connect(transport); } // call the initialization init();

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