@prmichaelsen/google-calendar-mcp 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,7 +44,7 @@ function createGoogleCalendarServer(userEmail, userId, options) {
44
44
  );
45
45
  const tools = [
46
46
  {
47
- name: "google_create_calendar_event",
47
+ name: "google_calendar_create_calendar_event",
48
48
  description: "Create a new event in Google Calendar with specified details including title, description, start/end times, and optional attendees",
49
49
  inputSchema: {
50
50
  type: "object",
@@ -103,7 +103,7 @@ function createGoogleCalendarServer(userEmail, userId, options) {
103
103
  }
104
104
  },
105
105
  {
106
- name: "google_list_calendar_events",
106
+ name: "google_calendar_list_calendar_events",
107
107
  description: "List upcoming events from Google Calendar within a specified time range",
108
108
  inputSchema: {
109
109
  type: "object",
@@ -125,7 +125,7 @@ function createGoogleCalendarServer(userEmail, userId, options) {
125
125
  }
126
126
  },
127
127
  {
128
- name: "google_update_calendar_event",
128
+ name: "google_calendar_update_calendar_event",
129
129
  description: "Update an existing calendar event by event ID. Can modify title, description, times, location, and attendees.",
130
130
  inputSchema: {
131
131
  type: "object",
@@ -188,7 +188,7 @@ function createGoogleCalendarServer(userEmail, userId, options) {
188
188
  }
189
189
  },
190
190
  {
191
- name: "google_send_email",
191
+ name: "google_calendar_send_email",
192
192
  description: "Send an email from the configured Gmail account. Supports plain text and HTML emails with optional attachments.",
193
193
  inputSchema: {
194
194
  type: "object",
@@ -226,7 +226,7 @@ function createGoogleCalendarServer(userEmail, userId, options) {
226
226
  }
227
227
  },
228
228
  {
229
- name: "google_list_emails",
229
+ name: "google_calendar_list_emails",
230
230
  description: "List emails from Gmail inbox with optional search query. Returns email metadata including ID, subject, sender, and snippet.",
231
231
  inputSchema: {
232
232
  type: "object",
@@ -244,7 +244,7 @@ function createGoogleCalendarServer(userEmail, userId, options) {
244
244
  }
245
245
  },
246
246
  {
247
- name: "google_read_email",
247
+ name: "google_calendar_read_email",
248
248
  description: "Read the full content of an email by its ID. Returns subject, sender, recipients, body, and metadata.",
249
249
  inputSchema: {
250
250
  type: "object",
@@ -274,22 +274,22 @@ function createGoogleCalendarServer(userEmail, userId, options) {
274
274
  }
275
275
  let result;
276
276
  switch (name) {
277
- case "google_create_calendar_event":
277
+ case "google_calendar_create_calendar_event":
278
278
  result = await createCalendarEvent(calendar, calendarId, args);
279
279
  break;
280
- case "google_list_calendar_events":
280
+ case "google_calendar_list_calendar_events":
281
281
  result = await listCalendarEvents(calendar, calendarId, args);
282
282
  break;
283
- case "google_update_calendar_event":
283
+ case "google_calendar_update_calendar_event":
284
284
  result = await updateCalendarEvent(calendar, calendarId, args);
285
285
  break;
286
- case "google_send_email":
286
+ case "google_calendar_send_email":
287
287
  result = await sendEmail(gmail, args);
288
288
  break;
289
- case "google_list_emails":
289
+ case "google_calendar_list_emails":
290
290
  result = await listEmails(gmail, args);
291
291
  break;
292
- case "google_read_email":
292
+ case "google_calendar_read_email":
293
293
  result = await readEmail(gmail, args);
294
294
  break;
295
295
  default:
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/server-factory.ts"],
4
- "sourcesContent": ["/**\n * Server factory for Google Calendar MCP Server\n * Creates per-user server instances for multi-tenant deployments\n */\n\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n Tool,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { google } from \"googleapis\";\nimport {\n createCalendarEvent,\n listCalendarEvents,\n updateCalendarEvent,\n} from \"./tools/calendar-tools.js\";\nimport {\n sendEmail,\n listEmails,\n readEmail,\n} from \"./tools/email-tools.js\";\n\nexport interface GoogleCalendarServerOptions {\n serviceAccountKeyPath: string;\n calendarId?: string;\n}\n\n/**\n * Create a Google Calendar MCP server instance for a specific user\n * @param userEmail - Email address to impersonate (must be in Google Workspace domain)\n * @param userId - Platform user ID for tracking/logging\n * @param options - Server configuration options\n * @returns Configured MCP Server instance\n */\nexport function createGoogleCalendarServer(\n userEmail: string,\n userId: string,\n options: GoogleCalendarServerOptions\n): Server {\n // Initialize service account auth with user impersonation\n const auth = new google.auth.GoogleAuth({\n keyFile: options.serviceAccountKeyPath,\n scopes: [\n \"https://www.googleapis.com/auth/calendar\",\n \"https://www.googleapis.com/auth/gmail.send\",\n \"https://www.googleapis.com/auth/gmail.readonly\",\n \"https://www.googleapis.com/auth/gmail.modify\",\n ],\n clientOptions: {\n subject: userEmail, // Impersonate this user\n },\n });\n\n const calendar = google.calendar({ version: \"v3\", auth });\n const gmail = google.gmail({ version: \"v1\", auth });\n const calendarId = options.calendarId || \"primary\";\n\n // Create MCP server\n const server = new Server(\n {\n name: \"google-calendar-mcp-server\",\n version: \"2.0.0\",\n },\n {\n capabilities: {\n tools: {},\n },\n }\n );\n\n // Define tools with google_ prefix (required by mcp-auth pattern)\n const tools: Tool[] = [\n {\n name: \"google_create_calendar_event\",\n description:\n \"Create a new event in Google Calendar with specified details including title, description, start/end times, and optional attendees\",\n inputSchema: {\n type: \"object\",\n properties: {\n summary: {\n type: \"string\",\n description: \"Event title/summary\",\n },\n description: {\n type: \"string\",\n description: \"Event description (optional)\",\n },\n start_time: {\n type: \"string\",\n description: \"Start time in ISO 8601 format (e.g., 2024-12-25T10:00:00-08:00)\",\n },\n end_time: {\n type: \"string\",\n description: \"End time in ISO 8601 format (e.g., 2024-12-25T11:00:00-08:00)\",\n },\n attendees: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"List of attendee email addresses (optional)\",\n },\n location: {\n type: \"string\",\n description: \"Event location (optional)\",\n },\n send_notifications: {\n type: \"boolean\",\n description: \"Send email notifications to attendees (default: true)\",\n default: true,\n },\n reminders: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n method: {\n type: \"string\",\n enum: [\"email\", \"popup\"],\n description: \"Reminder method: 'email' or 'popup'\",\n },\n minutes: {\n type: \"number\",\n description: \"Minutes before event to send reminder (e.g., 10, 1440 for 1 day)\",\n },\n },\n required: [\"method\", \"minutes\"],\n },\n description: \"Event reminders (optional). Example: [{method: 'popup', minutes: 10}, {method: 'email', minutes: 1440}]\",\n },\n },\n required: [\"summary\", \"start_time\", \"end_time\"],\n },\n },\n {\n name: \"google_list_calendar_events\",\n description:\n \"List upcoming events from Google Calendar within a specified time range\",\n inputSchema: {\n type: \"object\",\n properties: {\n max_results: {\n type: \"number\",\n description: \"Maximum number of events to return (default: 10)\",\n default: 10,\n },\n time_min: {\n type: \"string\",\n description:\n \"Lower bound for event start time in ISO 8601 format (default: now)\",\n },\n time_max: {\n type: \"string\",\n description: \"Upper bound for event start time in ISO 8601 format (optional)\",\n },\n },\n },\n },\n {\n name: \"google_update_calendar_event\",\n description:\n \"Update an existing calendar event by event ID. Can modify title, description, times, location, and attendees.\",\n inputSchema: {\n type: \"object\",\n properties: {\n event_id: {\n type: \"string\",\n description: \"Event ID to update (required)\",\n },\n summary: {\n type: \"string\",\n description: \"Event title/summary (optional)\",\n },\n description: {\n type: \"string\",\n description: \"Event description (optional)\",\n },\n start_time: {\n type: \"string\",\n description: \"Start time in ISO 8601 format (optional)\",\n },\n end_time: {\n type: \"string\",\n description: \"End time in ISO 8601 format (optional)\",\n },\n attendees: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"List of attendee email addresses (optional)\",\n },\n location: {\n type: \"string\",\n description: \"Event location (optional)\",\n },\n send_notifications: {\n type: \"boolean\",\n description: \"Send email notifications to attendees about the update (default: true)\",\n default: true,\n },\n reminders: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n method: {\n type: \"string\",\n enum: [\"email\", \"popup\"],\n description: \"Reminder method: 'email' or 'popup'\",\n },\n minutes: {\n type: \"number\",\n description: \"Minutes before event to send reminder\",\n },\n },\n required: [\"method\", \"minutes\"],\n },\n description: \"Event reminders (optional)\",\n },\n },\n required: [\"event_id\"],\n },\n },\n {\n name: \"google_send_email\",\n description:\n \"Send an email from the configured Gmail account. Supports plain text and HTML emails with optional attachments.\",\n inputSchema: {\n type: \"object\",\n properties: {\n to: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Recipient email addresses\",\n },\n subject: {\n type: \"string\",\n description: \"Email subject\",\n },\n body: {\n type: \"string\",\n description: \"Email body (plain text or HTML)\",\n },\n cc: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"CC email addresses (optional)\",\n },\n bcc: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"BCC email addresses (optional)\",\n },\n is_html: {\n type: \"boolean\",\n description: \"Whether body is HTML (default: false)\",\n default: false,\n },\n },\n required: [\"to\", \"subject\", \"body\"],\n },\n },\n {\n name: \"google_list_emails\",\n description:\n \"List emails from Gmail inbox with optional search query. Returns email metadata including ID, subject, sender, and snippet.\",\n inputSchema: {\n type: \"object\",\n properties: {\n query: {\n type: \"string\",\n description: \"Gmail search query (e.g., 'from:alice@example.com', 'subject:meeting', 'is:unread')\",\n },\n max_results: {\n type: \"number\",\n description: \"Maximum number of emails to return (default: 10, max: 100)\",\n default: 10,\n },\n },\n },\n },\n {\n name: \"google_read_email\",\n description:\n \"Read the full content of an email by its ID. Returns subject, sender, recipients, body, and metadata.\",\n inputSchema: {\n type: \"object\",\n properties: {\n email_id: {\n type: \"string\",\n description: \"Email ID to read (from list_emails)\",\n },\n mark_as_read: {\n type: \"boolean\",\n description: \"Mark email as read after fetching (default: false)\",\n default: false,\n },\n },\n required: [\"email_id\"],\n },\n },\n ];\n\n // Register tools\n server.setRequestHandler(ListToolsRequestSchema, async () => {\n return { tools };\n });\n\n // Handle tool calls\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n try {\n const { name, arguments: args } = request.params;\n\n if (!args) {\n throw new Error(\"No arguments provided\");\n }\n\n let result: string;\n switch (name) {\n case \"google_create_calendar_event\":\n result = await createCalendarEvent(calendar, calendarId, args);\n break;\n case \"google_list_calendar_events\":\n result = await listCalendarEvents(calendar, calendarId, args);\n break;\n case \"google_update_calendar_event\":\n result = await updateCalendarEvent(calendar, calendarId, args);\n break;\n case \"google_send_email\":\n result = await sendEmail(gmail, args);\n break;\n case \"google_list_emails\":\n result = await listEmails(gmail, args);\n break;\n case \"google_read_email\":\n result = await readEmail(gmail, args);\n break;\n default:\n throw new Error(`Unknown tool: ${name}`);\n }\n\n return {\n content: [{ type: \"text\", text: result }],\n };\n } catch (error: any) {\n return {\n content: [\n {\n type: \"text\",\n text: `Error: ${error.message}`,\n },\n ],\n isError: true,\n };\n }\n });\n\n return server;\n}\n"],
4
+ "sourcesContent": ["/**\n * Server factory for Google Calendar MCP Server\n * Creates per-user server instances for multi-tenant deployments\n */\n\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n Tool,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { google } from \"googleapis\";\nimport {\n createCalendarEvent,\n listCalendarEvents,\n updateCalendarEvent,\n} from \"./tools/calendar-tools.js\";\nimport {\n sendEmail,\n listEmails,\n readEmail,\n} from \"./tools/email-tools.js\";\n\nexport interface GoogleCalendarServerOptions {\n serviceAccountKeyPath: string;\n calendarId?: string;\n}\n\n/**\n * Create a Google Calendar MCP server instance for a specific user\n * @param userEmail - Email address to impersonate (must be in Google Workspace domain)\n * @param userId - Platform user ID for tracking/logging\n * @param options - Server configuration options\n * @returns Configured MCP Server instance\n */\nexport function createGoogleCalendarServer(\n userEmail: string,\n userId: string,\n options: GoogleCalendarServerOptions\n): Server {\n // Initialize service account auth with user impersonation\n const auth = new google.auth.GoogleAuth({\n keyFile: options.serviceAccountKeyPath,\n scopes: [\n \"https://www.googleapis.com/auth/calendar\",\n \"https://www.googleapis.com/auth/gmail.send\",\n \"https://www.googleapis.com/auth/gmail.readonly\",\n \"https://www.googleapis.com/auth/gmail.modify\",\n ],\n clientOptions: {\n subject: userEmail, // Impersonate this user\n },\n });\n\n const calendar = google.calendar({ version: \"v3\", auth });\n const gmail = google.gmail({ version: \"v1\", auth });\n const calendarId = options.calendarId || \"primary\";\n\n // Create MCP server\n const server = new Server(\n {\n name: \"google-calendar-mcp-server\",\n version: \"2.0.0\",\n },\n {\n capabilities: {\n tools: {},\n },\n }\n );\n\n // Define tools with google_calendar_ prefix (matches resourceType: 'google-calendar')\n const tools: Tool[] = [\n {\n name: \"google_calendar_create_calendar_event\",\n description:\n \"Create a new event in Google Calendar with specified details including title, description, start/end times, and optional attendees\",\n inputSchema: {\n type: \"object\",\n properties: {\n summary: {\n type: \"string\",\n description: \"Event title/summary\",\n },\n description: {\n type: \"string\",\n description: \"Event description (optional)\",\n },\n start_time: {\n type: \"string\",\n description: \"Start time in ISO 8601 format (e.g., 2024-12-25T10:00:00-08:00)\",\n },\n end_time: {\n type: \"string\",\n description: \"End time in ISO 8601 format (e.g., 2024-12-25T11:00:00-08:00)\",\n },\n attendees: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"List of attendee email addresses (optional)\",\n },\n location: {\n type: \"string\",\n description: \"Event location (optional)\",\n },\n send_notifications: {\n type: \"boolean\",\n description: \"Send email notifications to attendees (default: true)\",\n default: true,\n },\n reminders: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n method: {\n type: \"string\",\n enum: [\"email\", \"popup\"],\n description: \"Reminder method: 'email' or 'popup'\",\n },\n minutes: {\n type: \"number\",\n description: \"Minutes before event to send reminder (e.g., 10, 1440 for 1 day)\",\n },\n },\n required: [\"method\", \"minutes\"],\n },\n description: \"Event reminders (optional). Example: [{method: 'popup', minutes: 10}, {method: 'email', minutes: 1440}]\",\n },\n },\n required: [\"summary\", \"start_time\", \"end_time\"],\n },\n },\n {\n name: \"google_calendar_list_calendar_events\",\n description:\n \"List upcoming events from Google Calendar within a specified time range\",\n inputSchema: {\n type: \"object\",\n properties: {\n max_results: {\n type: \"number\",\n description: \"Maximum number of events to return (default: 10)\",\n default: 10,\n },\n time_min: {\n type: \"string\",\n description:\n \"Lower bound for event start time in ISO 8601 format (default: now)\",\n },\n time_max: {\n type: \"string\",\n description: \"Upper bound for event start time in ISO 8601 format (optional)\",\n },\n },\n },\n },\n {\n name: \"google_calendar_update_calendar_event\",\n description:\n \"Update an existing calendar event by event ID. Can modify title, description, times, location, and attendees.\",\n inputSchema: {\n type: \"object\",\n properties: {\n event_id: {\n type: \"string\",\n description: \"Event ID to update (required)\",\n },\n summary: {\n type: \"string\",\n description: \"Event title/summary (optional)\",\n },\n description: {\n type: \"string\",\n description: \"Event description (optional)\",\n },\n start_time: {\n type: \"string\",\n description: \"Start time in ISO 8601 format (optional)\",\n },\n end_time: {\n type: \"string\",\n description: \"End time in ISO 8601 format (optional)\",\n },\n attendees: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"List of attendee email addresses (optional)\",\n },\n location: {\n type: \"string\",\n description: \"Event location (optional)\",\n },\n send_notifications: {\n type: \"boolean\",\n description: \"Send email notifications to attendees about the update (default: true)\",\n default: true,\n },\n reminders: {\n type: \"array\",\n items: {\n type: \"object\",\n properties: {\n method: {\n type: \"string\",\n enum: [\"email\", \"popup\"],\n description: \"Reminder method: 'email' or 'popup'\",\n },\n minutes: {\n type: \"number\",\n description: \"Minutes before event to send reminder\",\n },\n },\n required: [\"method\", \"minutes\"],\n },\n description: \"Event reminders (optional)\",\n },\n },\n required: [\"event_id\"],\n },\n },\n {\n name: \"google_calendar_send_email\",\n description:\n \"Send an email from the configured Gmail account. Supports plain text and HTML emails with optional attachments.\",\n inputSchema: {\n type: \"object\",\n properties: {\n to: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"Recipient email addresses\",\n },\n subject: {\n type: \"string\",\n description: \"Email subject\",\n },\n body: {\n type: \"string\",\n description: \"Email body (plain text or HTML)\",\n },\n cc: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"CC email addresses (optional)\",\n },\n bcc: {\n type: \"array\",\n items: { type: \"string\" },\n description: \"BCC email addresses (optional)\",\n },\n is_html: {\n type: \"boolean\",\n description: \"Whether body is HTML (default: false)\",\n default: false,\n },\n },\n required: [\"to\", \"subject\", \"body\"],\n },\n },\n {\n name: \"google_calendar_list_emails\",\n description:\n \"List emails from Gmail inbox with optional search query. Returns email metadata including ID, subject, sender, and snippet.\",\n inputSchema: {\n type: \"object\",\n properties: {\n query: {\n type: \"string\",\n description: \"Gmail search query (e.g., 'from:alice@example.com', 'subject:meeting', 'is:unread')\",\n },\n max_results: {\n type: \"number\",\n description: \"Maximum number of emails to return (default: 10, max: 100)\",\n default: 10,\n },\n },\n },\n },\n {\n name: \"google_calendar_read_email\",\n description:\n \"Read the full content of an email by its ID. Returns subject, sender, recipients, body, and metadata.\",\n inputSchema: {\n type: \"object\",\n properties: {\n email_id: {\n type: \"string\",\n description: \"Email ID to read (from list_emails)\",\n },\n mark_as_read: {\n type: \"boolean\",\n description: \"Mark email as read after fetching (default: false)\",\n default: false,\n },\n },\n required: [\"email_id\"],\n },\n },\n ];\n\n // Register tools\n server.setRequestHandler(ListToolsRequestSchema, async () => {\n return { tools };\n });\n\n // Handle tool calls\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n try {\n const { name, arguments: args } = request.params;\n\n if (!args) {\n throw new Error(\"No arguments provided\");\n }\n\n let result: string;\n switch (name) {\n case \"google_calendar_create_calendar_event\":\n result = await createCalendarEvent(calendar, calendarId, args);\n break;\n case \"google_calendar_list_calendar_events\":\n result = await listCalendarEvents(calendar, calendarId, args);\n break;\n case \"google_calendar_update_calendar_event\":\n result = await updateCalendarEvent(calendar, calendarId, args);\n break;\n case \"google_calendar_send_email\":\n result = await sendEmail(gmail, args);\n break;\n case \"google_calendar_list_emails\":\n result = await listEmails(gmail, args);\n break;\n case \"google_calendar_read_email\":\n result = await readEmail(gmail, args);\n break;\n default:\n throw new Error(`Unknown tool: ${name}`);\n }\n\n return {\n content: [{ type: \"text\", text: result }],\n };\n } catch (error: any) {\n return {\n content: [\n {\n type: \"text\",\n text: `Error: ${error.message}`,\n },\n ],\n isError: true,\n };\n }\n });\n\n return server;\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prmichaelsen/google-calendar-mcp",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "description": "Google Calendar and Gmail MCP Server with Service Account Authentication",
5
5
  "type": "module",
6
6
  "main": "build/index.js",