google-workspace-mcp-server 1.1.1 → 1.2.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.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Google Workspace MCP Server
2
2
 
3
- MCP server for Google Workspace APIs - Docs, Sheets, and Drive Comments. Use it with Claude Code to read, create, and edit Google Docs and Sheets, and manage comments.
3
+ MCP server for Google Workspace APIs - Docs, Sheets, Drive, Gmail, and Calendar. Use it with Claude Code to read, create, and edit Google Docs and Sheets, manage comments, read emails, and view calendar events.
4
4
 
5
5
  ## Quick Start
6
6
 
@@ -42,6 +42,8 @@ MCP server for Google Workspace APIs - Docs, Sheets, and Drive Comments. Use it
42
42
  - **Google Docs API** → Click → **Enable**
43
43
  - **Google Sheets API** → Click → **Enable**
44
44
  - **Google Drive API** → Click → **Enable**
45
+ - **Gmail API** → Click → **Enable**
46
+ - **Google Calendar API** → Click → **Enable**
45
47
 
46
48
  ### Step 3: Configure OAuth Consent Screen
47
49
 
@@ -88,6 +90,8 @@ MCP server for Google Workspace APIs - Docs, Sheets, and Drive Comments. Use it
88
90
  - **Google Docs API v1** → `https://www.googleapis.com/auth/documents`
89
91
  - **Google Sheets API v4** → `https://www.googleapis.com/auth/spreadsheets`
90
92
  - **Google Drive API v3** → `https://www.googleapis.com/auth/drive`
93
+ - **Gmail API v1** → `https://www.googleapis.com/auth/gmail.readonly`
94
+ - **Google Calendar API v3** → `https://www.googleapis.com/auth/calendar.readonly`
91
95
 
92
96
  7. Click **Authorize APIs**
93
97
 
@@ -162,6 +166,24 @@ Restart Claude Code to load the new MCP server. You should now be able to use Go
162
166
  | `drive_resolve_comment` | Mark comment as resolved |
163
167
  | `drive_delete_comment` | Delete a comment |
164
168
 
169
+ ### Gmail API (Read-Only)
170
+
171
+ | Tool | Description |
172
+ |------|-------------|
173
+ | `gmail_list_messages` | List messages with optional search filters |
174
+ | `gmail_get_message` | Get full content of a specific message |
175
+ | `gmail_list_threads` | List conversation threads |
176
+ | `gmail_get_thread` | Get all messages in a thread |
177
+ | `gmail_list_labels` | List all Gmail labels (folders) |
178
+
179
+ ### Google Calendar API (Read-Only)
180
+
181
+ | Tool | Description |
182
+ |------|-------------|
183
+ | `calendar_list_calendars` | List all accessible calendars |
184
+ | `calendar_list_events` | List events with time range and search filters |
185
+ | `calendar_get_event` | Get detailed event information |
186
+
165
187
  ## Usage Examples
166
188
 
167
189
  Once configured, you can ask Claude Code things like:
@@ -173,6 +195,11 @@ Once configured, you can ask Claude Code things like:
173
195
  - "Search my Drive for files about project planning"
174
196
  - "Show me the comments on this document"
175
197
  - "Reply to John's comment saying I'll fix it tomorrow"
198
+ - "Show me my unread emails"
199
+ - "Find emails from notifications@github.com"
200
+ - "What's on my calendar today?"
201
+ - "Show me my meetings for this week"
202
+ - "Get the details of that standup meeting"
176
203
 
177
204
  ## Troubleshooting
178
205
 
@@ -183,7 +210,7 @@ The MCP server automatically refreshes tokens using your refresh token. If you s
183
210
  This is normal for personal projects. Click **Advanced** → **Go to [App Name] (unsafe)** to proceed.
184
211
 
185
212
  ### "Insufficient permissions" errors
186
- Make sure you enabled all three APIs (Docs, Sheets, Drive) in Step 2, and selected all three scopes in Step 5.
213
+ Make sure you enabled all five APIs (Docs, Sheets, Drive, Gmail, Calendar) in Step 2, and selected all five scopes in Step 5.
187
214
 
188
215
  ## Environment Variables
189
216
 
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,eAAO,MAAM,MAAM,UAIlB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,eAAO,MAAM,MAAM,UAMlB,CAAC"}
package/dist/constants.js CHANGED
@@ -7,6 +7,8 @@ export var ResponseFormat;
7
7
  export const SCOPES = [
8
8
  "https://www.googleapis.com/auth/documents",
9
9
  "https://www.googleapis.com/auth/drive",
10
- "https://www.googleapis.com/auth/spreadsheets"
10
+ "https://www.googleapis.com/auth/spreadsheets",
11
+ "https://www.googleapis.com/auth/gmail.readonly",
12
+ "https://www.googleapis.com/auth/calendar.readonly"
11
13
  ];
12
14
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,2CAA2C;IAC3C,uCAAuC;IACvC,8CAA8C;CAC/C,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,MAAM,CAAN,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,2CAA2C;IAC3C,uCAAuC;IACvC,8CAA8C;IAC9C,gDAAgD;IAChD,mDAAmD;CACpD,CAAC"}
package/dist/index.js CHANGED
@@ -12,13 +12,17 @@ import { initializeGoogleAuth } from "./services/google-auth.js";
12
12
  import { registerDocsTools } from "./tools/docs.js";
13
13
  import { registerDriveTools } from "./tools/drive.js";
14
14
  import { registerSheetsTools } from "./tools/sheets.js";
15
+ import { registerGmailTools } from "./tools/gmail.js";
16
+ import { registerCalendarTools } from "./tools/calendar.js";
15
17
  const server = new McpServer({
16
18
  name: "google-workspace-mcp-server",
17
- version: "1.1.1"
19
+ version: "1.2.0"
18
20
  });
19
21
  registerDocsTools(server);
20
22
  registerDriveTools(server);
21
23
  registerSheetsTools(server);
24
+ registerGmailTools(server);
25
+ registerCalendarTools(server);
22
26
  async function main() {
23
27
  try {
24
28
  initializeGoogleAuth();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,6BAA6B;IACnC,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAE5B,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,oBAAoB,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;AACjE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,6BAA6B;IACnC,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAE9B,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,oBAAoB,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;AACjE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { z } from "zod";
2
+ import { ResponseFormat } from "../constants.js";
3
+ export declare const ListCalendarsSchema: z.ZodObject<{
4
+ response_format: z.ZodDefault<z.ZodNativeEnum<typeof ResponseFormat>>;
5
+ }, "strict", z.ZodTypeAny, {
6
+ response_format: ResponseFormat;
7
+ }, {
8
+ response_format?: ResponseFormat | undefined;
9
+ }>;
10
+ export type ListCalendarsInput = z.infer<typeof ListCalendarsSchema>;
11
+ export declare const ListEventsSchema: z.ZodObject<{
12
+ calendar_id: z.ZodDefault<z.ZodString>;
13
+ time_min: z.ZodOptional<z.ZodString>;
14
+ time_max: z.ZodOptional<z.ZodString>;
15
+ max_results: z.ZodDefault<z.ZodNumber>;
16
+ query: z.ZodOptional<z.ZodString>;
17
+ single_events: z.ZodDefault<z.ZodBoolean>;
18
+ order_by: z.ZodDefault<z.ZodEnum<["startTime", "updated"]>>;
19
+ page_token: z.ZodOptional<z.ZodString>;
20
+ response_format: z.ZodDefault<z.ZodNativeEnum<typeof ResponseFormat>>;
21
+ }, "strict", z.ZodTypeAny, {
22
+ response_format: ResponseFormat;
23
+ order_by: "startTime" | "updated";
24
+ max_results: number;
25
+ calendar_id: string;
26
+ single_events: boolean;
27
+ page_token?: string | undefined;
28
+ query?: string | undefined;
29
+ time_min?: string | undefined;
30
+ time_max?: string | undefined;
31
+ }, {
32
+ response_format?: ResponseFormat | undefined;
33
+ page_token?: string | undefined;
34
+ order_by?: "startTime" | "updated" | undefined;
35
+ query?: string | undefined;
36
+ max_results?: number | undefined;
37
+ calendar_id?: string | undefined;
38
+ time_min?: string | undefined;
39
+ time_max?: string | undefined;
40
+ single_events?: boolean | undefined;
41
+ }>;
42
+ export type ListEventsInput = z.infer<typeof ListEventsSchema>;
43
+ export declare const GetEventSchema: z.ZodObject<{
44
+ calendar_id: z.ZodDefault<z.ZodString>;
45
+ event_id: z.ZodString;
46
+ response_format: z.ZodDefault<z.ZodNativeEnum<typeof ResponseFormat>>;
47
+ }, "strict", z.ZodTypeAny, {
48
+ response_format: ResponseFormat;
49
+ calendar_id: string;
50
+ event_id: string;
51
+ }, {
52
+ event_id: string;
53
+ response_format?: ResponseFormat | undefined;
54
+ calendar_id?: string | undefined;
55
+ }>;
56
+ export type GetEventInput = z.infer<typeof GetEventSchema>;
57
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/schemas/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,eAAO,MAAM,mBAAmB;;;;;;EAIrB,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAErE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BlB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D,eAAO,MAAM,cAAc;;;;;;;;;;;;EAUhB,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { z } from "zod";
2
+ import { ResponseFormat } from "../constants.js";
3
+ export const ListCalendarsSchema = z.object({
4
+ response_format: z.nativeEnum(ResponseFormat)
5
+ .default(ResponseFormat.MARKDOWN)
6
+ .describe("Output format: 'markdown' for human-readable or 'json' for structured data")
7
+ }).strict();
8
+ export const ListEventsSchema = z.object({
9
+ calendar_id: z.string()
10
+ .default("primary")
11
+ .describe("Calendar ID (default: 'primary' for user's main calendar)"),
12
+ time_min: z.string()
13
+ .optional()
14
+ .describe("Start of time range (ISO 8601 format, e.g., '2024-01-01T00:00:00Z')"),
15
+ time_max: z.string()
16
+ .optional()
17
+ .describe("End of time range (ISO 8601 format)"),
18
+ max_results: z.number()
19
+ .int()
20
+ .min(1)
21
+ .max(250)
22
+ .default(10)
23
+ .describe("Maximum events to return (1-250)"),
24
+ query: z.string()
25
+ .optional()
26
+ .describe("Free text search terms to find events"),
27
+ single_events: z.boolean()
28
+ .default(true)
29
+ .describe("Whether to expand recurring events into instances"),
30
+ order_by: z.enum(["startTime", "updated"])
31
+ .default("startTime")
32
+ .describe("Sort order (requires single_events=true for 'startTime')"),
33
+ page_token: z.string()
34
+ .optional()
35
+ .describe("Token for pagination"),
36
+ response_format: z.nativeEnum(ResponseFormat)
37
+ .default(ResponseFormat.MARKDOWN)
38
+ .describe("Output format: 'markdown' or 'json'")
39
+ }).strict();
40
+ export const GetEventSchema = z.object({
41
+ calendar_id: z.string()
42
+ .default("primary")
43
+ .describe("Calendar ID (default: 'primary')"),
44
+ event_id: z.string()
45
+ .min(1, "Event ID is required")
46
+ .describe("The ID of the event to retrieve"),
47
+ response_format: z.nativeEnum(ResponseFormat)
48
+ .default(ResponseFormat.MARKDOWN)
49
+ .describe("Output format: 'markdown' or 'json'")
50
+ }).strict();
51
+ //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/schemas/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;SAC1C,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;SAChC,QAAQ,CAAC,4EAA4E,CAAC;CAC1F,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,2DAA2D,CAAC;IACxE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,qEAAqE,CAAC;IAClF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,kCAAkC,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SACd,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IACpD,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE;SACvB,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,mDAAmD,CAAC;IAChE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;SACvC,OAAO,CAAC,WAAW,CAAC;SACpB,QAAQ,CAAC,0DAA0D,CAAC;IACvE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,QAAQ,EAAE;SACV,QAAQ,CAAC,sBAAsB,CAAC;IACnC,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;SAC1C,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;SAChC,QAAQ,CAAC,qCAAqC,CAAC;CACnD,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,kCAAkC,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;SACjB,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;SAC9B,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,eAAe,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;SAC1C,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;SAChC,QAAQ,CAAC,qCAAqC,CAAC;CACnD,CAAC,CAAC,MAAM,EAAE,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { z } from "zod";
2
+ import { ResponseFormat } from "../constants.js";
3
+ export declare const ListMessagesSchema: z.ZodObject<{
4
+ query: z.ZodOptional<z.ZodString>;
5
+ max_results: z.ZodDefault<z.ZodNumber>;
6
+ label_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
7
+ page_token: z.ZodOptional<z.ZodString>;
8
+ response_format: z.ZodDefault<z.ZodNativeEnum<typeof ResponseFormat>>;
9
+ }, "strict", z.ZodTypeAny, {
10
+ response_format: ResponseFormat;
11
+ max_results: number;
12
+ page_token?: string | undefined;
13
+ query?: string | undefined;
14
+ label_ids?: string[] | undefined;
15
+ }, {
16
+ response_format?: ResponseFormat | undefined;
17
+ page_token?: string | undefined;
18
+ query?: string | undefined;
19
+ max_results?: number | undefined;
20
+ label_ids?: string[] | undefined;
21
+ }>;
22
+ export type ListMessagesInput = z.infer<typeof ListMessagesSchema>;
23
+ export declare const GetMessageSchema: z.ZodObject<{
24
+ message_id: z.ZodString;
25
+ response_format: z.ZodDefault<z.ZodNativeEnum<typeof ResponseFormat>>;
26
+ }, "strict", z.ZodTypeAny, {
27
+ response_format: ResponseFormat;
28
+ message_id: string;
29
+ }, {
30
+ message_id: string;
31
+ response_format?: ResponseFormat | undefined;
32
+ }>;
33
+ export type GetMessageInput = z.infer<typeof GetMessageSchema>;
34
+ export declare const ListThreadsSchema: z.ZodObject<{
35
+ query: z.ZodOptional<z.ZodString>;
36
+ max_results: z.ZodDefault<z.ZodNumber>;
37
+ label_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
38
+ page_token: z.ZodOptional<z.ZodString>;
39
+ response_format: z.ZodDefault<z.ZodNativeEnum<typeof ResponseFormat>>;
40
+ }, "strict", z.ZodTypeAny, {
41
+ response_format: ResponseFormat;
42
+ max_results: number;
43
+ page_token?: string | undefined;
44
+ query?: string | undefined;
45
+ label_ids?: string[] | undefined;
46
+ }, {
47
+ response_format?: ResponseFormat | undefined;
48
+ page_token?: string | undefined;
49
+ query?: string | undefined;
50
+ max_results?: number | undefined;
51
+ label_ids?: string[] | undefined;
52
+ }>;
53
+ export type ListThreadsInput = z.infer<typeof ListThreadsSchema>;
54
+ export declare const GetThreadSchema: z.ZodObject<{
55
+ thread_id: z.ZodString;
56
+ response_format: z.ZodDefault<z.ZodNativeEnum<typeof ResponseFormat>>;
57
+ }, "strict", z.ZodTypeAny, {
58
+ response_format: ResponseFormat;
59
+ thread_id: string;
60
+ }, {
61
+ thread_id: string;
62
+ response_format?: ResponseFormat | undefined;
63
+ }>;
64
+ export type GetThreadInput = z.infer<typeof GetThreadSchema>;
65
+ export declare const ListLabelsSchema: z.ZodObject<{
66
+ response_format: z.ZodDefault<z.ZodNativeEnum<typeof ResponseFormat>>;
67
+ }, "strict", z.ZodTypeAny, {
68
+ response_format: ResponseFormat;
69
+ }, {
70
+ response_format?: ResponseFormat | undefined;
71
+ }>;
72
+ export type ListLabelsInput = z.infer<typeof ListLabelsSchema>;
73
+ //# sourceMappingURL=gmail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail.d.ts","sourceRoot":"","sources":["../../src/schemas/gmail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAmBpB,CAAC;AAEZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,eAAO,MAAM,gBAAgB;;;;;;;;;EAOlB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAmBnB,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,eAAO,MAAM,eAAe;;;;;;;;;EAOjB,CAAC;AAEZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D,eAAO,MAAM,gBAAgB;;;;;;EAIlB,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { z } from "zod";
2
+ import { ResponseFormat } from "../constants.js";
3
+ export const ListMessagesSchema = z.object({
4
+ query: z.string()
5
+ .optional()
6
+ .describe("Gmail search query (e.g., 'from:someone@example.com is:unread', 'subject:invoice')"),
7
+ max_results: z.number()
8
+ .int()
9
+ .min(1)
10
+ .max(100)
11
+ .default(10)
12
+ .describe("Maximum messages to return (1-100)"),
13
+ label_ids: z.array(z.string())
14
+ .optional()
15
+ .describe("Filter by label IDs (e.g., ['INBOX', 'UNREAD', 'STARRED'])"),
16
+ page_token: z.string()
17
+ .optional()
18
+ .describe("Token for pagination to retrieve the next page of results"),
19
+ response_format: z.nativeEnum(ResponseFormat)
20
+ .default(ResponseFormat.MARKDOWN)
21
+ .describe("Output format: 'markdown' for human-readable or 'json' for structured data")
22
+ }).strict();
23
+ export const GetMessageSchema = z.object({
24
+ message_id: z.string()
25
+ .min(1, "Message ID is required")
26
+ .describe("The ID of the message to retrieve"),
27
+ response_format: z.nativeEnum(ResponseFormat)
28
+ .default(ResponseFormat.MARKDOWN)
29
+ .describe("Output format: 'markdown' for human-readable or 'json' for structured data")
30
+ }).strict();
31
+ export const ListThreadsSchema = z.object({
32
+ query: z.string()
33
+ .optional()
34
+ .describe("Gmail search query to filter threads"),
35
+ max_results: z.number()
36
+ .int()
37
+ .min(1)
38
+ .max(100)
39
+ .default(10)
40
+ .describe("Maximum threads to return (1-100)"),
41
+ label_ids: z.array(z.string())
42
+ .optional()
43
+ .describe("Filter by label IDs"),
44
+ page_token: z.string()
45
+ .optional()
46
+ .describe("Token for pagination"),
47
+ response_format: z.nativeEnum(ResponseFormat)
48
+ .default(ResponseFormat.MARKDOWN)
49
+ .describe("Output format: 'markdown' or 'json'")
50
+ }).strict();
51
+ export const GetThreadSchema = z.object({
52
+ thread_id: z.string()
53
+ .min(1, "Thread ID is required")
54
+ .describe("The ID of the thread to retrieve"),
55
+ response_format: z.nativeEnum(ResponseFormat)
56
+ .default(ResponseFormat.MARKDOWN)
57
+ .describe("Output format: 'markdown' or 'json'")
58
+ }).strict();
59
+ export const ListLabelsSchema = z.object({
60
+ response_format: z.nativeEnum(ResponseFormat)
61
+ .default(ResponseFormat.MARKDOWN)
62
+ .describe("Output format: 'markdown' or 'json'")
63
+ }).strict();
64
+ //# sourceMappingURL=gmail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail.js","sourceRoot":"","sources":["../../src/schemas/gmail.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
- import { docs_v1, drive_v3, sheets_v4 } from "googleapis";
1
+ import { docs_v1, drive_v3, sheets_v4, gmail_v1, calendar_v3 } from "googleapis";
2
2
  export declare function initializeGoogleAuth(): void;
3
3
  export declare function getDocsClient(): docs_v1.Docs;
4
4
  export declare function getDriveClient(): drive_v3.Drive;
5
5
  export declare function getSheetsClient(): sheets_v4.Sheets;
6
+ export declare function getGmailClient(): gmail_v1.Gmail;
7
+ export declare function getCalendarClient(): calendar_v3.Calendar;
6
8
  export declare function handleGoogleError(error: unknown): string;
7
9
  //# sourceMappingURL=google-auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-auth.d.ts","sourceRoot":"","sources":["../../src/services/google-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAOlE,wBAAgB,oBAAoB,IAAI,IAAI,CAiB3C;AAED,wBAAgB,aAAa,IAAI,OAAO,CAAC,IAAI,CAK5C;AAED,wBAAgB,cAAc,IAAI,QAAQ,CAAC,KAAK,CAK/C;AAED,wBAAgB,eAAe,IAAI,SAAS,CAAC,MAAM,CAKlD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAwBxD"}
1
+ {"version":3,"file":"google-auth.d.ts","sourceRoot":"","sources":["../../src/services/google-auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AASzF,wBAAgB,oBAAoB,IAAI,IAAI,CAmB3C;AAED,wBAAgB,aAAa,IAAI,OAAO,CAAC,IAAI,CAK5C;AAED,wBAAgB,cAAc,IAAI,QAAQ,CAAC,KAAK,CAK/C;AAED,wBAAgB,eAAe,IAAI,SAAS,CAAC,MAAM,CAKlD;AAED,wBAAgB,cAAc,IAAI,QAAQ,CAAC,KAAK,CAK/C;AAED,wBAAgB,iBAAiB,IAAI,WAAW,CAAC,QAAQ,CAKxD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAwBxD"}
@@ -4,6 +4,8 @@ let oauth2Client = null;
4
4
  let docsClient = null;
5
5
  let driveClient = null;
6
6
  let sheetsClient = null;
7
+ let gmailClient = null;
8
+ let calendarClient = null;
7
9
  export function initializeGoogleAuth() {
8
10
  const clientId = process.env.GOOGLE_CLIENT_ID;
9
11
  const clientSecret = process.env.GOOGLE_CLIENT_SECRET;
@@ -16,6 +18,8 @@ export function initializeGoogleAuth() {
16
18
  docsClient = google.docs({ version: "v1", auth: oauth2Client });
17
19
  driveClient = google.drive({ version: "v3", auth: oauth2Client });
18
20
  sheetsClient = google.sheets({ version: "v4", auth: oauth2Client });
21
+ gmailClient = google.gmail({ version: "v1", auth: oauth2Client });
22
+ calendarClient = google.calendar({ version: "v3", auth: oauth2Client });
19
23
  }
20
24
  export function getDocsClient() {
21
25
  if (!docsClient) {
@@ -35,6 +39,18 @@ export function getSheetsClient() {
35
39
  }
36
40
  return sheetsClient;
37
41
  }
42
+ export function getGmailClient() {
43
+ if (!gmailClient) {
44
+ throw new Error("Google auth not initialized. Call initializeGoogleAuth() first.");
45
+ }
46
+ return gmailClient;
47
+ }
48
+ export function getCalendarClient() {
49
+ if (!calendarClient) {
50
+ throw new Error("Google auth not initialized. Call initializeGoogleAuth() first.");
51
+ }
52
+ return calendarClient;
53
+ }
38
54
  export function handleGoogleError(error) {
39
55
  if (error instanceof Error) {
40
56
  const message = error.message;
@@ -1 +1 @@
1
- {"version":3,"file":"google-auth.js","sourceRoot":"","sources":["../../src/services/google-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAgC,MAAM,YAAY,CAAC;AAElE,IAAI,YAAY,GAAwB,IAAI,CAAC;AAC7C,IAAI,UAAU,GAAwB,IAAI,CAAC;AAC3C,IAAI,WAAW,GAA0B,IAAI,CAAC;AAC9C,IAAI,YAAY,GAA4B,IAAI,CAAC;AAEjD,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACtD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAEtD,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;IACJ,CAAC;IAED,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACxD,YAAY,CAAC,cAAc,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;IAE7D,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAChE,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAClE,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE9B,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACjE,OAAO,6FAA6F,CAAC;QACvG,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,8FAA8F,CAAC;QACxG,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,qEAAqE,CAAC;QAC/E,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,sEAAsE,CAAC;QAChF,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,2BAA2B,OAAO,EAAE,CAAC;QAC9C,CAAC;QAED,OAAO,UAAU,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,qCAAqC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"google-auth.js","sourceRoot":"","sources":["../../src/services/google-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerCalendarTools(server: McpServer): void;
3
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/tools/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqDzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoU7D"}