@node2flow/gmail-mcp 1.0.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/dist/server.js ADDED
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Shared MCP Server — used by both Node.js (index.ts) and CF Worker (worker.ts)
3
+ */
4
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import { ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
6
+ import { GmailClient } from './gmail-client.js';
7
+ import { TOOLS } from './tools.js';
8
+ export function handleToolCall(toolName, args, client) {
9
+ switch (toolName) {
10
+ // ========== Messages ==========
11
+ case 'gmail_list_messages':
12
+ return client.listMessages({
13
+ q: args.q,
14
+ labelIds: args.label_ids,
15
+ maxResults: args.max_results,
16
+ pageToken: args.page_token,
17
+ includeSpamTrash: args.include_spam_trash,
18
+ });
19
+ case 'gmail_get_message':
20
+ return client.getMessage({
21
+ id: args.id,
22
+ format: args.format,
23
+ metadataHeaders: args.metadata_headers,
24
+ });
25
+ case 'gmail_send_message':
26
+ return client.sendMessage({
27
+ to: args.to,
28
+ subject: args.subject,
29
+ body: args.body,
30
+ cc: args.cc,
31
+ bcc: args.bcc,
32
+ html: args.html,
33
+ in_reply_to: args.in_reply_to,
34
+ references: args.references,
35
+ thread_id: args.thread_id,
36
+ });
37
+ case 'gmail_delete_message':
38
+ return client.deleteMessage({ id: args.id });
39
+ case 'gmail_trash_message':
40
+ return client.trashMessage({ id: args.id });
41
+ case 'gmail_untrash_message':
42
+ return client.untrashMessage({ id: args.id });
43
+ case 'gmail_modify_message':
44
+ return client.modifyMessage({
45
+ id: args.id,
46
+ addLabelIds: args.add_label_ids,
47
+ removeLabelIds: args.remove_label_ids,
48
+ });
49
+ case 'gmail_batch_delete':
50
+ return client.batchDeleteMessages({
51
+ ids: args.ids,
52
+ });
53
+ case 'gmail_batch_modify':
54
+ return client.batchModifyMessages({
55
+ ids: args.ids,
56
+ addLabelIds: args.add_label_ids,
57
+ removeLabelIds: args.remove_label_ids,
58
+ });
59
+ case 'gmail_get_attachment':
60
+ return client.getAttachment({
61
+ messageId: args.message_id,
62
+ attachmentId: args.attachment_id,
63
+ });
64
+ // ========== Drafts ==========
65
+ case 'gmail_list_drafts':
66
+ return client.listDrafts({
67
+ maxResults: args.max_results,
68
+ pageToken: args.page_token,
69
+ q: args.q,
70
+ });
71
+ case 'gmail_get_draft':
72
+ return client.getDraft({
73
+ id: args.id,
74
+ format: args.format,
75
+ });
76
+ case 'gmail_create_draft':
77
+ return client.createDraft({
78
+ to: args.to,
79
+ subject: args.subject,
80
+ body: args.body,
81
+ cc: args.cc,
82
+ bcc: args.bcc,
83
+ html: args.html,
84
+ thread_id: args.thread_id,
85
+ });
86
+ case 'gmail_update_draft':
87
+ return client.updateDraft({
88
+ id: args.id,
89
+ to: args.to,
90
+ subject: args.subject,
91
+ body: args.body,
92
+ cc: args.cc,
93
+ bcc: args.bcc,
94
+ html: args.html,
95
+ thread_id: args.thread_id,
96
+ });
97
+ case 'gmail_delete_draft':
98
+ return client.deleteDraft({ id: args.id });
99
+ case 'gmail_send_draft':
100
+ return client.sendDraft({ id: args.id });
101
+ // ========== Labels ==========
102
+ case 'gmail_list_labels':
103
+ return client.listLabels();
104
+ case 'gmail_get_label':
105
+ return client.getLabel({ id: args.id });
106
+ case 'gmail_create_label':
107
+ return client.createLabel({
108
+ name: args.name,
109
+ messageListVisibility: args.message_list_visibility,
110
+ labelListVisibility: args.label_list_visibility,
111
+ backgroundColor: args.background_color,
112
+ textColor: args.text_color,
113
+ });
114
+ case 'gmail_update_label':
115
+ return client.updateLabel({
116
+ id: args.id,
117
+ name: args.name,
118
+ messageListVisibility: args.message_list_visibility,
119
+ labelListVisibility: args.label_list_visibility,
120
+ backgroundColor: args.background_color,
121
+ textColor: args.text_color,
122
+ });
123
+ case 'gmail_delete_label':
124
+ return client.deleteLabel({ id: args.id });
125
+ // ========== Threads ==========
126
+ case 'gmail_list_threads':
127
+ return client.listThreads({
128
+ q: args.q,
129
+ labelIds: args.label_ids,
130
+ maxResults: args.max_results,
131
+ pageToken: args.page_token,
132
+ includeSpamTrash: args.include_spam_trash,
133
+ });
134
+ case 'gmail_get_thread':
135
+ return client.getThread({
136
+ id: args.id,
137
+ format: args.format,
138
+ });
139
+ case 'gmail_modify_thread':
140
+ return client.modifyThread({
141
+ id: args.id,
142
+ addLabelIds: args.add_label_ids,
143
+ removeLabelIds: args.remove_label_ids,
144
+ });
145
+ case 'gmail_trash_thread':
146
+ return client.trashThread({ id: args.id });
147
+ case 'gmail_untrash_thread':
148
+ return client.untrashThread({ id: args.id });
149
+ // ========== Settings ==========
150
+ case 'gmail_get_profile':
151
+ return client.getProfile();
152
+ case 'gmail_update_vacation':
153
+ return client.updateVacation({
154
+ enableAutoReply: args.enable_auto_reply,
155
+ responseSubject: args.response_subject,
156
+ responseBodyPlainText: args.response_body_plain_text,
157
+ responseBodyHtml: args.response_body_html,
158
+ restrictToContacts: args.restrict_to_contacts,
159
+ restrictToDomain: args.restrict_to_domain,
160
+ startTime: args.start_time,
161
+ endTime: args.end_time,
162
+ });
163
+ default:
164
+ throw new Error(`Unknown tool: ${toolName}`);
165
+ }
166
+ }
167
+ export function createServer(config) {
168
+ const server = new McpServer({
169
+ name: 'gmail-mcp',
170
+ version: '1.0.0',
171
+ });
172
+ let client = null;
173
+ for (const tool of TOOLS) {
174
+ server.registerTool(tool.name, {
175
+ description: tool.description,
176
+ inputSchema: tool.inputSchema,
177
+ annotations: tool.annotations,
178
+ }, async (args) => {
179
+ const clientId = config?.clientId ||
180
+ args.GOOGLE_CLIENT_ID;
181
+ const clientSecret = config?.clientSecret ||
182
+ args.GOOGLE_CLIENT_SECRET;
183
+ const refreshToken = config?.refreshToken ||
184
+ args.GOOGLE_REFRESH_TOKEN;
185
+ if (!clientId || !clientSecret || !refreshToken) {
186
+ return {
187
+ content: [{ type: 'text', text: 'Error: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and GOOGLE_REFRESH_TOKEN are all required.' }],
188
+ isError: true,
189
+ };
190
+ }
191
+ if (!client || config?.clientId !== clientId) {
192
+ client = new GmailClient({ clientId, clientSecret, refreshToken });
193
+ }
194
+ try {
195
+ const result = await handleToolCall(tool.name, args, client);
196
+ const text = result === undefined ? '{"success": true}' : JSON.stringify(result, null, 2);
197
+ return {
198
+ content: [{ type: 'text', text }],
199
+ isError: false,
200
+ };
201
+ }
202
+ catch (error) {
203
+ return {
204
+ content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }],
205
+ isError: true,
206
+ };
207
+ }
208
+ });
209
+ }
210
+ // Register prompts
211
+ server.prompt('compose-and-send', 'Guide for composing and sending emails, managing drafts', async () => ({
212
+ messages: [{
213
+ role: 'user',
214
+ content: {
215
+ type: 'text',
216
+ text: [
217
+ 'You are a Gmail email assistant.',
218
+ '',
219
+ 'Sending emails:',
220
+ '1. **Send directly** — gmail_send_message with to, subject, body',
221
+ '2. **HTML emails** — Include html parameter for rich formatting',
222
+ '3. **Reply to thread** — Set thread_id, in_reply_to (Message-ID header), and references',
223
+ '4. **CC/BCC** — Comma-separate multiple addresses',
224
+ '',
225
+ 'Working with drafts:',
226
+ '1. **Create draft** — gmail_create_draft (same params as send)',
227
+ '2. **Update draft** — gmail_update_draft replaces the entire draft',
228
+ '3. **Send draft** — gmail_send_draft with the draft ID',
229
+ '4. **List drafts** — gmail_list_drafts to see all drafts',
230
+ '',
231
+ 'Tips:',
232
+ '- For replies, always get the original message first to extract Message-ID and thread_id',
233
+ '- Use gmail_get_thread to see the full conversation before replying',
234
+ '- HTML body is sent alongside plain text as multipart/alternative',
235
+ ].join('\n'),
236
+ },
237
+ }],
238
+ }));
239
+ server.prompt('search-and-organize', 'Guide for searching emails, managing labels, and organizing the mailbox', async () => ({
240
+ messages: [{
241
+ role: 'user',
242
+ content: {
243
+ type: 'text',
244
+ text: [
245
+ 'You are a Gmail organization assistant.',
246
+ '',
247
+ 'Search syntax (q parameter):',
248
+ '- from:user@example.com — Messages from a sender',
249
+ '- to:user@example.com — Messages to a recipient',
250
+ '- subject:"meeting notes" — Subject contains text',
251
+ '- has:attachment — Messages with attachments',
252
+ '- is:unread / is:starred / is:important',
253
+ '- label:custom-label — Messages with a specific label',
254
+ '- after:2026/01/01 / before:2026/12/31 — Date range',
255
+ '- newer_than:2d / older_than:1y — Relative dates',
256
+ '- filename:pdf — Attachments by type',
257
+ '- Combine: "from:boss@company.com has:attachment is:unread"',
258
+ '',
259
+ 'Organizing with labels:',
260
+ '1. **List labels** — gmail_list_labels to see all labels',
261
+ '2. **Create label** — gmail_create_label with nested support ("Projects/Active")',
262
+ '3. **Apply labels** — gmail_modify_message to add/remove labels',
263
+ '4. **Mark as read** — Remove "UNREAD" label',
264
+ '5. **Star message** — Add "STARRED" label',
265
+ '6. **Batch operations** — gmail_batch_modify for bulk label changes',
266
+ '',
267
+ 'System labels: INBOX, SENT, DRAFT, SPAM, TRASH, UNREAD, STARRED, IMPORTANT, CATEGORY_PERSONAL, CATEGORY_SOCIAL, CATEGORY_PROMOTIONS, CATEGORY_UPDATES, CATEGORY_FORUMS',
268
+ ].join('\n'),
269
+ },
270
+ }],
271
+ }));
272
+ // Register resource
273
+ server.resource('server-info', 'gmail://server-info', {
274
+ description: 'Connection status and available tools for this Gmail MCP server',
275
+ mimeType: 'application/json',
276
+ }, async () => ({
277
+ contents: [{
278
+ uri: 'gmail://server-info',
279
+ mimeType: 'application/json',
280
+ text: JSON.stringify({
281
+ name: 'gmail-mcp',
282
+ version: '1.0.0',
283
+ connected: !!config,
284
+ has_oauth: !!(config?.clientId),
285
+ tools_available: TOOLS.length,
286
+ tool_categories: {
287
+ messages: 10,
288
+ drafts: 6,
289
+ labels: 5,
290
+ threads: 5,
291
+ settings: 2,
292
+ },
293
+ }, null, 2),
294
+ }],
295
+ }));
296
+ // Override tools/list handler to return raw JSON Schema with property descriptions
297
+ server.server.setRequestHandler(ListToolsRequestSchema, () => ({
298
+ tools: TOOLS.map(tool => ({
299
+ name: tool.name,
300
+ description: tool.description,
301
+ inputSchema: tool.inputSchema,
302
+ annotations: tool.annotations,
303
+ })),
304
+ }));
305
+ return server;
306
+ }
307
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 28 Gmail MCP Tool Definitions
3
+ */
4
+ import type { MCPToolDefinition } from './types.js';
5
+ export declare const TOOLS: MCPToolDefinition[];
6
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD,eAAO,MAAM,KAAK,EAAE,iBAAiB,EAmdpC,CAAC"}