@node2flow/google-calendar-mcp 1.0.2 → 1.0.3

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.
package/dist/index.d.ts CHANGED
@@ -16,38 +16,5 @@ export default function createSmitheryServer(opts?: {
16
16
  GOOGLE_CLIENT_SECRET?: string;
17
17
  GOOGLE_REFRESH_TOKEN?: string;
18
18
  };
19
- }): import("@modelcontextprotocol/sdk/server").Server<{
20
- method: string;
21
- params?: {
22
- [x: string]: unknown;
23
- _meta?: {
24
- [x: string]: unknown;
25
- progressToken?: string | number | undefined;
26
- "io.modelcontextprotocol/related-task"?: {
27
- taskId: string;
28
- } | undefined;
29
- } | undefined;
30
- } | undefined;
31
- }, {
32
- method: string;
33
- params?: {
34
- [x: string]: unknown;
35
- _meta?: {
36
- [x: string]: unknown;
37
- progressToken?: string | number | undefined;
38
- "io.modelcontextprotocol/related-task"?: {
39
- taskId: string;
40
- } | undefined;
41
- } | undefined;
42
- } | undefined;
43
- }, {
44
- [x: string]: unknown;
45
- _meta?: {
46
- [x: string]: unknown;
47
- progressToken?: string | number | undefined;
48
- "io.modelcontextprotocol/related-task"?: {
49
- taskId: string;
50
- } | undefined;
51
- } | undefined;
52
- }>;
19
+ }): import("@modelcontextprotocol/sdk/server/mcp.js").McpServer;
53
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AA2JH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,IAAI,CAAC,EAAE;IAClD,MAAM,CAAC,EAAE;QACP,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAMA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;GAUG;AA2JH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,IAAI,CAAC,EAAE;IAClD,MAAM,CAAC,EAAE;QACP,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;CACH,+DAMA"}
package/dist/server.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Shared MCP Server — used by both Node.js (index.ts) and CF Worker (worker.ts)
3
3
  */
4
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
4
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
5
  import { CalendarClient } from './calendar-client.js';
6
6
  export interface CalendarMcpConfig {
7
7
  clientId: string;
@@ -9,5 +9,5 @@ export interface CalendarMcpConfig {
9
9
  refreshToken: string;
10
10
  }
11
11
  export declare function handleToolCall(toolName: string, args: Record<string, unknown>, client: CalendarClient): Promise<import("./types.js").EventList> | Promise<import("./types.js").Event> | Promise<void> | Promise<import("./types.js").CalendarListList> | Promise<import("./types.js").Calendar> | Promise<import("./types.js").AclList> | Promise<import("./types.js").AclRule> | Promise<import("./types.js").FreeBusyResponse> | Promise<import("./types.js").Colors> | Promise<import("./types.js").SettingsList>;
12
- export declare function createServer(config?: CalendarMcpConfig): Server;
12
+ export declare function createServer(config?: CalendarMcpConfig): McpServer;
13
13
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AASnE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,cAAc,gZAiPvB;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAyM/D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,cAAc,gZAiPvB;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB,aA4LtD"}
package/dist/server.js CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Shared MCP Server — used by both Node.js (index.ts) and CF Worker (worker.ts)
3
3
  */
4
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
5
- import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
4
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import { ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
6
6
  import { CalendarClient } from './calendar-client.js';
7
7
  import { TOOLS } from './tools.js';
8
8
  export function handleToolCall(toolName, args, client) {
@@ -242,30 +242,23 @@ export function handleToolCall(toolName, args, client) {
242
242
  }
243
243
  }
244
244
  export function createServer(config) {
245
- const server = new Server({ name: 'google-calendar-mcp', version: '1.0.0' }, { capabilities: { tools: {}, prompts: {}, resources: {} } });
245
+ const server = new McpServer({
246
+ name: 'google-calendar-mcp',
247
+ version: '1.0.0',
248
+ });
246
249
  let client = null;
247
- // List available tools
248
- server.setRequestHandler(ListToolsRequestSchema, async () => ({
249
- tools: TOOLS.map(tool => {
250
- const hasProperties = Object.keys(tool.inputSchema.properties).length > 0;
251
- return {
252
- name: tool.name,
253
- description: tool.description,
254
- ...(hasProperties ? { inputSchema: tool.inputSchema } : {}),
255
- annotations: tool.annotations,
256
- };
257
- }),
258
- }));
259
- // Handle tool calls
260
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
261
- const { name, arguments: args } = request.params;
262
- try {
250
+ for (const tool of TOOLS) {
251
+ server.registerTool(tool.name, {
252
+ description: tool.description,
253
+ inputSchema: tool.inputSchema,
254
+ annotations: tool.annotations,
255
+ }, async (args) => {
263
256
  const clientId = config?.clientId ||
264
- args?.GOOGLE_CLIENT_ID;
257
+ args.GOOGLE_CLIENT_ID;
265
258
  const clientSecret = config?.clientSecret ||
266
- args?.GOOGLE_CLIENT_SECRET;
259
+ args.GOOGLE_CLIENT_SECRET;
267
260
  const refreshToken = config?.refreshToken ||
268
- args?.GOOGLE_REFRESH_TOKEN;
261
+ args.GOOGLE_REFRESH_TOKEN;
269
262
  if (!clientId || !clientSecret || !refreshToken) {
270
263
  return {
271
264
  content: [{ type: 'text', text: 'Error: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and GOOGLE_REFRESH_TOKEN are all required.' }],
@@ -275,150 +268,137 @@ export function createServer(config) {
275
268
  if (!client || config?.clientId !== clientId) {
276
269
  client = new CalendarClient({ clientId, clientSecret, refreshToken });
277
270
  }
278
- const result = await handleToolCall(name, args || {}, client);
279
- const text = result === undefined ? '{"success": true}' : JSON.stringify(result, null, 2);
280
- return {
281
- content: [{ type: 'text', text }],
282
- isError: false,
283
- };
284
- }
285
- catch (error) {
286
- return {
287
- content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }],
288
- isError: true,
289
- };
290
- }
291
- });
292
- // List prompts
293
- server.setRequestHandler(ListPromptsRequestSchema, async () => ({
294
- prompts: [
295
- { name: 'schedule-and-manage', description: 'Guide for creating events, recurring schedules, attendees, and reminders' },
296
- { name: 'search-and-organize', description: 'Guide for searching events, managing calendars, sharing, and checking availability' },
297
- ],
271
+ try {
272
+ const result = await handleToolCall(tool.name, args, client);
273
+ const text = result === undefined ? '{"success": true}' : JSON.stringify(result, null, 2);
274
+ return {
275
+ content: [{ type: 'text', text }],
276
+ isError: false,
277
+ };
278
+ }
279
+ catch (error) {
280
+ return {
281
+ content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }],
282
+ isError: true,
283
+ };
284
+ }
285
+ });
286
+ }
287
+ // Register prompts
288
+ server.prompt('schedule-and-manage', 'Guide for creating events, recurring schedules, attendees, and reminders', async () => ({
289
+ messages: [{
290
+ role: 'user',
291
+ content: {
292
+ type: 'text',
293
+ text: [
294
+ 'You are a Google Calendar scheduling assistant.',
295
+ '',
296
+ 'Creating events:',
297
+ '1. **Timed event** — gcal_create_event with start_date_time + end_date_time (RFC 3339)',
298
+ '2. **All-day event** — Use start_date + end_date (YYYY-MM-DD). Single day: start=15, end=16',
299
+ '3. **Quick add** — gcal_quick_add with natural language ("Meeting tomorrow 3pm")',
300
+ '4. **Attendees** — Pass email addresses array, set send_updates="all" to notify',
301
+ '',
302
+ 'Recurring events:',
303
+ '1. **Daily** — recurrence: ["RRULE:FREQ=DAILY"]',
304
+ '2. **Weekly** — recurrence: ["RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR"]',
305
+ '3. **Monthly** — recurrence: ["RRULE:FREQ=MONTHLY;BYMONTHDAY=15"]',
306
+ '4. **Until date** — Add ;UNTIL=20261231T235959Z',
307
+ '5. **Count** — Add ;COUNT=10 for 10 occurrences',
308
+ '6. **Exceptions** — Add EXDATE entries to skip dates',
309
+ '7. **View instances** — gcal_list_instances to see individual occurrences',
310
+ '',
311
+ 'Reminders:',
312
+ '- Default reminders: { "useDefault": true }',
313
+ '- Custom: { "useDefault": false, "overrides": [{ "method": "popup", "minutes": 10 }, { "method": "email", "minutes": 60 }] }',
314
+ '',
315
+ 'Tips:',
316
+ '- Use "primary" as calendar_id for the main calendar',
317
+ '- Set transparency="transparent" for events that don\'t block time',
318
+ '- Use gcal_patch_event to change only specific fields without affecting others',
319
+ '- Use gcal_move_event to transfer events between calendars',
320
+ ].join('\n'),
321
+ },
322
+ }],
298
323
  }));
299
- // Get prompt
300
- server.setRequestHandler(GetPromptRequestSchema, async (request) => {
301
- const { name } = request.params;
302
- if (name === 'schedule-and-manage') {
303
- return {
304
- messages: [{
305
- role: 'user',
306
- content: {
307
- type: 'text',
308
- text: [
309
- 'You are a Google Calendar scheduling assistant.',
310
- '',
311
- 'Creating events:',
312
- '1. **Timed event** — gcal_create_event with start_date_time + end_date_time (RFC 3339)',
313
- '2. **All-day event** — Use start_date + end_date (YYYY-MM-DD). Single day: start=15, end=16',
314
- '3. **Quick add** — gcal_quick_add with natural language ("Meeting tomorrow 3pm")',
315
- '4. **Attendees** — Pass email addresses array, set send_updates="all" to notify',
316
- '',
317
- 'Recurring events:',
318
- '1. **Daily** — recurrence: ["RRULE:FREQ=DAILY"]',
319
- '2. **Weekly** — recurrence: ["RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR"]',
320
- '3. **Monthly** — recurrence: ["RRULE:FREQ=MONTHLY;BYMONTHDAY=15"]',
321
- '4. **Until date** — Add ;UNTIL=20261231T235959Z',
322
- '5. **Count** — Add ;COUNT=10 for 10 occurrences',
323
- '6. **Exceptions** — Add EXDATE entries to skip dates',
324
- '7. **View instances** — gcal_list_instances to see individual occurrences',
325
- '',
326
- 'Reminders:',
327
- '- Default reminders: { "useDefault": true }',
328
- '- Custom: { "useDefault": false, "overrides": [{ "method": "popup", "minutes": 10 }, { "method": "email", "minutes": 60 }] }',
329
- '',
330
- 'Tips:',
331
- '- Use "primary" as calendar_id for the main calendar',
332
- '- Set transparency="transparent" for events that don\'t block time',
333
- '- Use gcal_patch_event to change only specific fields without affecting others',
334
- '- Use gcal_move_event to transfer events between calendars',
335
- ].join('\n'),
336
- },
337
- }],
338
- };
339
- }
340
- if (name === 'search-and-organize') {
341
- return {
342
- messages: [{
343
- role: 'user',
344
- content: {
345
- type: 'text',
346
- text: [
347
- 'You are a Google Calendar organization assistant.',
348
- '',
349
- 'Searching events:',
350
- '- **By text** — q parameter searches summary, description, location, attendees',
351
- '- **By time** — time_min + time_max (RFC 3339) to filter date range',
352
- '- **Expand recurring** — single_events=true to see individual instances',
353
- '- **Sort** — order_by="startTime" (requires singleEvents) or "updated"',
354
- '- **Pagination** — Use max_results + page_token for large result sets',
355
- '',
356
- 'Managing calendars:',
357
- '1. **List all** — gcal_list_calendars to see subscribed calendars',
358
- '2. **Create** — gcal_create_calendar for a new secondary calendar',
359
- '3. **Customize** — gcal_update_calendar_entry for display color, name override',
360
- '4. **Subscribe** — gcal_add_calendar to add a shared calendar',
361
- '5. **Unsubscribe** — gcal_remove_calendar (doesn\'t delete the calendar)',
362
- '',
363
- 'Sharing calendars (ACL):',
364
- '- **freeBusyReader** — Can only see free/busy',
365
- '- **reader** — Can see event details',
366
- '- **writer** — Can create and edit events',
367
- '- **owner** — Full control including sharing',
368
- '- scope_type: "user" (email), "group" (group email), "domain", or "default" (public)',
369
- '',
370
- 'Checking availability:',
371
- '- gcal_query_freebusy with time range and calendar IDs',
372
- '- Returns busy time blocks for each calendar',
373
- '- Use to find free slots for scheduling meetings',
374
- '',
375
- 'Colors:',
376
- '- gcal_get_colors for color palette (IDs 1-24 for calendars, 1-11 for events)',
377
- '- Apply to events: color_id in gcal_create_event',
378
- '- Apply to calendars: color_id in gcal_update_calendar_entry',
379
- ].join('\n'),
380
- },
381
- }],
382
- };
383
- }
384
- throw new Error(`Unknown prompt: ${name}`);
385
- });
386
- // List resources
387
- server.setRequestHandler(ListResourcesRequestSchema, async () => ({
388
- resources: [{
324
+ server.prompt('search-and-organize', 'Guide for searching events, managing calendars, sharing, and checking availability', async () => ({
325
+ messages: [{
326
+ role: 'user',
327
+ content: {
328
+ type: 'text',
329
+ text: [
330
+ 'You are a Google Calendar organization assistant.',
331
+ '',
332
+ 'Searching events:',
333
+ '- **By text** — q parameter searches summary, description, location, attendees',
334
+ '- **By time** time_min + time_max (RFC 3339) to filter date range',
335
+ '- **Expand recurring** — single_events=true to see individual instances',
336
+ '- **Sort** — order_by="startTime" (requires singleEvents) or "updated"',
337
+ '- **Pagination** — Use max_results + page_token for large result sets',
338
+ '',
339
+ 'Managing calendars:',
340
+ '1. **List all** — gcal_list_calendars to see subscribed calendars',
341
+ '2. **Create** — gcal_create_calendar for a new secondary calendar',
342
+ '3. **Customize** — gcal_update_calendar_entry for display color, name override',
343
+ '4. **Subscribe** — gcal_add_calendar to add a shared calendar',
344
+ '5. **Unsubscribe** — gcal_remove_calendar (doesn\'t delete the calendar)',
345
+ '',
346
+ 'Sharing calendars (ACL):',
347
+ '- **freeBusyReader** — Can only see free/busy',
348
+ '- **reader** — Can see event details',
349
+ '- **writer** — Can create and edit events',
350
+ '- **owner** — Full control including sharing',
351
+ '- scope_type: "user" (email), "group" (group email), "domain", or "default" (public)',
352
+ '',
353
+ 'Checking availability:',
354
+ '- gcal_query_freebusy with time range and calendar IDs',
355
+ '- Returns busy time blocks for each calendar',
356
+ '- Use to find free slots for scheduling meetings',
357
+ '',
358
+ 'Colors:',
359
+ '- gcal_get_colors for color palette (IDs 1-24 for calendars, 1-11 for events)',
360
+ '- Apply to events: color_id in gcal_create_event',
361
+ '- Apply to calendars: color_id in gcal_update_calendar_entry',
362
+ ].join('\n'),
363
+ },
364
+ }],
365
+ }));
366
+ // Register resource
367
+ server.resource('server-info', 'gcal://server-info', {
368
+ description: 'Connection status and available tools for this Google Calendar MCP server',
369
+ mimeType: 'application/json',
370
+ }, async () => ({
371
+ contents: [{
389
372
  uri: 'gcal://server-info',
390
- name: 'server-info',
391
- description: 'Connection status and available tools for this Google Calendar MCP server',
392
373
  mimeType: 'application/json',
374
+ text: JSON.stringify({
375
+ name: 'google-calendar-mcp',
376
+ version: '1.0.0',
377
+ connected: !!config,
378
+ has_oauth: !!(config?.clientId),
379
+ tools_available: TOOLS.length,
380
+ tool_categories: {
381
+ events: 10,
382
+ calendar_list: 5,
383
+ calendars: 5,
384
+ acl: 5,
385
+ utility: 3,
386
+ },
387
+ }, null, 2),
393
388
  }],
394
389
  }));
395
- // Read resource
396
- server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
397
- const { uri } = request.params;
398
- if (uri === 'gcal://server-info') {
390
+ // Override tools/list handler to return raw JSON Schema with property descriptions
391
+ server.server.setRequestHandler(ListToolsRequestSchema, () => ({
392
+ tools: TOOLS.map(tool => {
393
+ const hasProperties = Object.keys(tool.inputSchema.properties).length > 0;
399
394
  return {
400
- contents: [{
401
- uri: 'gcal://server-info',
402
- mimeType: 'application/json',
403
- text: JSON.stringify({
404
- name: 'google-calendar-mcp',
405
- version: '1.0.0',
406
- connected: !!config,
407
- has_oauth: !!(config?.clientId),
408
- tools_available: TOOLS.length,
409
- tool_categories: {
410
- events: 10,
411
- calendar_list: 5,
412
- calendars: 5,
413
- acl: 5,
414
- utility: 3,
415
- },
416
- }, null, 2),
417
- }],
395
+ name: tool.name,
396
+ description: tool.description,
397
+ ...(hasProperties ? { inputSchema: tool.inputSchema } : {}),
398
+ annotations: tool.annotations,
418
399
  };
419
- }
420
- throw new Error(`Unknown resource: ${uri}`);
421
- });
400
+ }),
401
+ }));
422
402
  return server;
423
403
  }
424
404
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node2flow/google-calendar-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "MCP server for Google Calendar — create events, manage calendars, check availability, and share calendars through 28 tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/server.ts CHANGED
@@ -2,15 +2,8 @@
2
2
  * Shared MCP Server — used by both Node.js (index.ts) and CF Worker (worker.ts)
3
3
  */
4
4
 
5
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
6
- import {
7
- CallToolRequestSchema,
8
- ListToolsRequestSchema,
9
- ListPromptsRequestSchema,
10
- GetPromptRequestSchema,
11
- ListResourcesRequestSchema,
12
- ReadResourceRequestSchema,
13
- } from '@modelcontextprotocol/sdk/types.js';
5
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
6
+ import { ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
14
7
  import { CalendarClient } from './calendar-client.js';
15
8
  import { TOOLS } from './tools.js';
16
9
 
@@ -266,205 +259,192 @@ export function handleToolCall(
266
259
  }
267
260
  }
268
261
 
269
- export function createServer(config?: CalendarMcpConfig): Server {
270
- const server = new Server(
271
- { name: 'google-calendar-mcp', version: '1.0.0' },
272
- { capabilities: { tools: {}, prompts: {}, resources: {} } }
273
- );
262
+ export function createServer(config?: CalendarMcpConfig) {
263
+ const server = new McpServer({
264
+ name: 'google-calendar-mcp',
265
+ version: '1.0.0',
266
+ });
274
267
 
275
268
  let client: CalendarClient | null = null;
276
269
 
277
- // List available tools
278
- server.setRequestHandler(ListToolsRequestSchema, async () => ({
279
- tools: TOOLS.map(tool => {
280
- const hasProperties = Object.keys(tool.inputSchema.properties).length > 0;
281
- return {
282
- name: tool.name,
270
+ for (const tool of TOOLS) {
271
+ server.registerTool(
272
+ tool.name,
273
+ {
283
274
  description: tool.description,
284
- ...(hasProperties ? { inputSchema: tool.inputSchema } : {}),
275
+ inputSchema: tool.inputSchema as any,
285
276
  annotations: tool.annotations,
286
- };
287
- }),
288
- }));
277
+ },
278
+ async (args: Record<string, unknown>) => {
279
+ const clientId =
280
+ config?.clientId ||
281
+ (args as Record<string, unknown>).GOOGLE_CLIENT_ID as string;
282
+ const clientSecret =
283
+ config?.clientSecret ||
284
+ (args as Record<string, unknown>).GOOGLE_CLIENT_SECRET as string;
285
+ const refreshToken =
286
+ config?.refreshToken ||
287
+ (args as Record<string, unknown>).GOOGLE_REFRESH_TOKEN as string;
289
288
 
290
- // Handle tool calls
291
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
292
- const { name, arguments: args } = request.params;
289
+ if (!clientId || !clientSecret || !refreshToken) {
290
+ return {
291
+ content: [{ type: 'text' as const, text: 'Error: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and GOOGLE_REFRESH_TOKEN are all required.' }],
292
+ isError: true,
293
+ };
294
+ }
293
295
 
294
- try {
295
- const clientId =
296
- config?.clientId ||
297
- (args as Record<string, unknown>)?.GOOGLE_CLIENT_ID as string;
298
- const clientSecret =
299
- config?.clientSecret ||
300
- (args as Record<string, unknown>)?.GOOGLE_CLIENT_SECRET as string;
301
- const refreshToken =
302
- config?.refreshToken ||
303
- (args as Record<string, unknown>)?.GOOGLE_REFRESH_TOKEN as string;
296
+ if (!client || config?.clientId !== clientId) {
297
+ client = new CalendarClient({ clientId, clientSecret, refreshToken });
298
+ }
304
299
 
305
- if (!clientId || !clientSecret || !refreshToken) {
306
- return {
307
- content: [{ type: 'text' as const, text: 'Error: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and GOOGLE_REFRESH_TOKEN are all required.' }],
308
- isError: true,
309
- };
300
+ try {
301
+ const result = await handleToolCall(tool.name, args, client);
302
+ const text = result === undefined ? '{"success": true}' : JSON.stringify(result, null, 2);
303
+ return {
304
+ content: [{ type: 'text' as const, text }],
305
+ isError: false,
306
+ };
307
+ } catch (error) {
308
+ return {
309
+ content: [{ type: 'text' as const, text: `Error: ${error instanceof Error ? error.message : String(error)}` }],
310
+ isError: true,
311
+ };
312
+ }
310
313
  }
314
+ );
315
+ }
311
316
 
312
- if (!client || config?.clientId !== clientId) {
313
- client = new CalendarClient({ clientId, clientSecret, refreshToken });
314
- }
315
-
316
- const result = await handleToolCall(name, args || {}, client);
317
- const text = result === undefined ? '{"success": true}' : JSON.stringify(result, null, 2);
318
- return {
319
- content: [{ type: 'text' as const, text }],
320
- isError: false,
321
- };
322
- } catch (error) {
323
- return {
324
- content: [{ type: 'text' as const, text: `Error: ${error instanceof Error ? error.message : String(error)}` }],
325
- isError: true,
326
- };
327
- }
328
- });
329
-
330
- // List prompts
331
- server.setRequestHandler(ListPromptsRequestSchema, async () => ({
332
- prompts: [
333
- { name: 'schedule-and-manage', description: 'Guide for creating events, recurring schedules, attendees, and reminders' },
334
- { name: 'search-and-organize', description: 'Guide for searching events, managing calendars, sharing, and checking availability' },
335
- ],
336
- }));
337
-
338
- // Get prompt
339
- server.setRequestHandler(GetPromptRequestSchema, async (request) => {
340
- const { name } = request.params;
341
-
342
- if (name === 'schedule-and-manage') {
343
- return {
344
- messages: [{
345
- role: 'user' as const,
346
- content: {
347
- type: 'text' as const,
348
- text: [
349
- 'You are a Google Calendar scheduling assistant.',
350
- '',
351
- 'Creating events:',
352
- '1. **Timed event** — gcal_create_event with start_date_time + end_date_time (RFC 3339)',
353
- '2. **All-day event** — Use start_date + end_date (YYYY-MM-DD). Single day: start=15, end=16',
354
- '3. **Quick add** — gcal_quick_add with natural language ("Meeting tomorrow 3pm")',
355
- '4. **Attendees** — Pass email addresses array, set send_updates="all" to notify',
356
- '',
357
- 'Recurring events:',
358
- '1. **Daily** — recurrence: ["RRULE:FREQ=DAILY"]',
359
- '2. **Weekly** — recurrence: ["RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR"]',
360
- '3. **Monthly** — recurrence: ["RRULE:FREQ=MONTHLY;BYMONTHDAY=15"]',
361
- '4. **Until date** — Add ;UNTIL=20261231T235959Z',
362
- '5. **Count** — Add ;COUNT=10 for 10 occurrences',
363
- '6. **Exceptions** — Add EXDATE entries to skip dates',
364
- '7. **View instances** — gcal_list_instances to see individual occurrences',
365
- '',
366
- 'Reminders:',
367
- '- Default reminders: { "useDefault": true }',
368
- '- Custom: { "useDefault": false, "overrides": [{ "method": "popup", "minutes": 10 }, { "method": "email", "minutes": 60 }] }',
369
- '',
370
- 'Tips:',
371
- '- Use "primary" as calendar_id for the main calendar',
372
- '- Set transparency="transparent" for events that don\'t block time',
373
- '- Use gcal_patch_event to change only specific fields without affecting others',
374
- '- Use gcal_move_event to transfer events between calendars',
375
- ].join('\n'),
376
- },
377
- }],
378
- };
379
- }
380
-
381
- if (name === 'search-and-organize') {
382
- return {
383
- messages: [{
384
- role: 'user' as const,
385
- content: {
386
- type: 'text' as const,
387
- text: [
388
- 'You are a Google Calendar organization assistant.',
389
- '',
390
- 'Searching events:',
391
- '- **By text** — q parameter searches summary, description, location, attendees',
392
- '- **By time** — time_min + time_max (RFC 3339) to filter date range',
393
- '- **Expand recurring** — single_events=true to see individual instances',
394
- '- **Sort** — order_by="startTime" (requires singleEvents) or "updated"',
395
- '- **Pagination** — Use max_results + page_token for large result sets',
396
- '',
397
- 'Managing calendars:',
398
- '1. **List all** — gcal_list_calendars to see subscribed calendars',
399
- '2. **Create** — gcal_create_calendar for a new secondary calendar',
400
- '3. **Customize** — gcal_update_calendar_entry for display color, name override',
401
- '4. **Subscribe** — gcal_add_calendar to add a shared calendar',
402
- '5. **Unsubscribe** — gcal_remove_calendar (doesn\'t delete the calendar)',
403
- '',
404
- 'Sharing calendars (ACL):',
405
- '- **freeBusyReader** — Can only see free/busy',
406
- '- **reader** — Can see event details',
407
- '- **writer** — Can create and edit events',
408
- '- **owner** — Full control including sharing',
409
- '- scope_type: "user" (email), "group" (group email), "domain", or "default" (public)',
410
- '',
411
- 'Checking availability:',
412
- '- gcal_query_freebusy with time range and calendar IDs',
413
- '- Returns busy time blocks for each calendar',
414
- '- Use to find free slots for scheduling meetings',
415
- '',
416
- 'Colors:',
417
- '- gcal_get_colors for color palette (IDs 1-24 for calendars, 1-11 for events)',
418
- '- Apply to events: color_id in gcal_create_event',
419
- '- Apply to calendars: color_id in gcal_update_calendar_entry',
420
- ].join('\n'),
421
- },
422
- }],
423
- };
424
- }
317
+ // Register prompts
318
+ server.prompt(
319
+ 'schedule-and-manage',
320
+ 'Guide for creating events, recurring schedules, attendees, and reminders',
321
+ async () => ({
322
+ messages: [{
323
+ role: 'user' as const,
324
+ content: {
325
+ type: 'text' as const,
326
+ text: [
327
+ 'You are a Google Calendar scheduling assistant.',
328
+ '',
329
+ 'Creating events:',
330
+ '1. **Timed event** — gcal_create_event with start_date_time + end_date_time (RFC 3339)',
331
+ '2. **All-day event** — Use start_date + end_date (YYYY-MM-DD). Single day: start=15, end=16',
332
+ '3. **Quick add** — gcal_quick_add with natural language ("Meeting tomorrow 3pm")',
333
+ '4. **Attendees** — Pass email addresses array, set send_updates="all" to notify',
334
+ '',
335
+ 'Recurring events:',
336
+ '1. **Daily** recurrence: ["RRULE:FREQ=DAILY"]',
337
+ '2. **Weekly** — recurrence: ["RRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR"]',
338
+ '3. **Monthly** recurrence: ["RRULE:FREQ=MONTHLY;BYMONTHDAY=15"]',
339
+ '4. **Until date** Add ;UNTIL=20261231T235959Z',
340
+ '5. **Count** — Add ;COUNT=10 for 10 occurrences',
341
+ '6. **Exceptions** — Add EXDATE entries to skip dates',
342
+ '7. **View instances** — gcal_list_instances to see individual occurrences',
343
+ '',
344
+ 'Reminders:',
345
+ '- Default reminders: { "useDefault": true }',
346
+ '- Custom: { "useDefault": false, "overrides": [{ "method": "popup", "minutes": 10 }, { "method": "email", "minutes": 60 }] }',
347
+ '',
348
+ 'Tips:',
349
+ '- Use "primary" as calendar_id for the main calendar',
350
+ '- Set transparency="transparent" for events that don\'t block time',
351
+ '- Use gcal_patch_event to change only specific fields without affecting others',
352
+ '- Use gcal_move_event to transfer events between calendars',
353
+ ].join('\n'),
354
+ },
355
+ }],
356
+ }),
357
+ );
425
358
 
426
- throw new Error(`Unknown prompt: ${name}`);
427
- });
359
+ server.prompt(
360
+ 'search-and-organize',
361
+ 'Guide for searching events, managing calendars, sharing, and checking availability',
362
+ async () => ({
363
+ messages: [{
364
+ role: 'user' as const,
365
+ content: {
366
+ type: 'text' as const,
367
+ text: [
368
+ 'You are a Google Calendar organization assistant.',
369
+ '',
370
+ 'Searching events:',
371
+ '- **By text** — q parameter searches summary, description, location, attendees',
372
+ '- **By time** — time_min + time_max (RFC 3339) to filter date range',
373
+ '- **Expand recurring** — single_events=true to see individual instances',
374
+ '- **Sort** — order_by="startTime" (requires singleEvents) or "updated"',
375
+ '- **Pagination** — Use max_results + page_token for large result sets',
376
+ '',
377
+ 'Managing calendars:',
378
+ '1. **List all** — gcal_list_calendars to see subscribed calendars',
379
+ '2. **Create** — gcal_create_calendar for a new secondary calendar',
380
+ '3. **Customize** — gcal_update_calendar_entry for display color, name override',
381
+ '4. **Subscribe** — gcal_add_calendar to add a shared calendar',
382
+ '5. **Unsubscribe** — gcal_remove_calendar (doesn\'t delete the calendar)',
383
+ '',
384
+ 'Sharing calendars (ACL):',
385
+ '- **freeBusyReader** — Can only see free/busy',
386
+ '- **reader** — Can see event details',
387
+ '- **writer** — Can create and edit events',
388
+ '- **owner** — Full control including sharing',
389
+ '- scope_type: "user" (email), "group" (group email), "domain", or "default" (public)',
390
+ '',
391
+ 'Checking availability:',
392
+ '- gcal_query_freebusy with time range and calendar IDs',
393
+ '- Returns busy time blocks for each calendar',
394
+ '- Use to find free slots for scheduling meetings',
395
+ '',
396
+ 'Colors:',
397
+ '- gcal_get_colors for color palette (IDs 1-24 for calendars, 1-11 for events)',
398
+ '- Apply to events: color_id in gcal_create_event',
399
+ '- Apply to calendars: color_id in gcal_update_calendar_entry',
400
+ ].join('\n'),
401
+ },
402
+ }],
403
+ }),
404
+ );
428
405
 
429
- // List resources
430
- server.setRequestHandler(ListResourcesRequestSchema, async () => ({
431
- resources: [{
432
- uri: 'gcal://server-info',
433
- name: 'server-info',
406
+ // Register resource
407
+ server.resource(
408
+ 'server-info',
409
+ 'gcal://server-info',
410
+ {
434
411
  description: 'Connection status and available tools for this Google Calendar MCP server',
435
412
  mimeType: 'application/json',
436
- }],
437
- }));
438
-
439
- // Read resource
440
- server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
441
- const { uri } = request.params;
413
+ },
414
+ async () => ({
415
+ contents: [{
416
+ uri: 'gcal://server-info',
417
+ mimeType: 'application/json',
418
+ text: JSON.stringify({
419
+ name: 'google-calendar-mcp',
420
+ version: '1.0.0',
421
+ connected: !!config,
422
+ has_oauth: !!(config?.clientId),
423
+ tools_available: TOOLS.length,
424
+ tool_categories: {
425
+ events: 10,
426
+ calendar_list: 5,
427
+ calendars: 5,
428
+ acl: 5,
429
+ utility: 3,
430
+ },
431
+ }, null, 2),
432
+ }],
433
+ }),
434
+ );
442
435
 
443
- if (uri === 'gcal://server-info') {
436
+ // Override tools/list handler to return raw JSON Schema with property descriptions
437
+ (server as any).server.setRequestHandler(ListToolsRequestSchema, () => ({
438
+ tools: TOOLS.map(tool => {
439
+ const hasProperties = Object.keys(tool.inputSchema.properties).length > 0;
444
440
  return {
445
- contents: [{
446
- uri: 'gcal://server-info',
447
- mimeType: 'application/json',
448
- text: JSON.stringify({
449
- name: 'google-calendar-mcp',
450
- version: '1.0.0',
451
- connected: !!config,
452
- has_oauth: !!(config?.clientId),
453
- tools_available: TOOLS.length,
454
- tool_categories: {
455
- events: 10,
456
- calendar_list: 5,
457
- calendars: 5,
458
- acl: 5,
459
- utility: 3,
460
- },
461
- }, null, 2),
462
- }],
441
+ name: tool.name,
442
+ description: tool.description,
443
+ ...(hasProperties ? { inputSchema: tool.inputSchema } : {}),
444
+ annotations: tool.annotations,
463
445
  };
464
- }
465
-
466
- throw new Error(`Unknown resource: ${uri}`);
467
- });
446
+ }),
447
+ }));
468
448
 
469
449
  return server;
470
450
  }