@mcp-z/mcp-gmail 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.
Files changed (321) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +167 -0
  3. package/bin/server.js +5 -0
  4. package/dist/cjs/constants.d.cts +11 -0
  5. package/dist/cjs/constants.d.ts +11 -0
  6. package/dist/cjs/constants.js +39 -0
  7. package/dist/cjs/constants.js.map +1 -0
  8. package/dist/cjs/email/composition/rfc822-builder.d.cts +11 -0
  9. package/dist/cjs/email/composition/rfc822-builder.d.ts +11 -0
  10. package/dist/cjs/email/composition/rfc822-builder.js +24 -0
  11. package/dist/cjs/email/composition/rfc822-builder.js.map +1 -0
  12. package/dist/cjs/email/messages/fetch-message.d.cts +24 -0
  13. package/dist/cjs/email/messages/fetch-message.d.ts +24 -0
  14. package/dist/cjs/email/messages/fetch-message.js +367 -0
  15. package/dist/cjs/email/messages/fetch-message.js.map +1 -0
  16. package/dist/cjs/email/messages/messages.d.cts +7 -0
  17. package/dist/cjs/email/messages/messages.d.ts +7 -0
  18. package/dist/cjs/email/messages/messages.js +146 -0
  19. package/dist/cjs/email/messages/messages.js.map +1 -0
  20. package/dist/cjs/email/parsing/header-parsing.d.cts +1 -0
  21. package/dist/cjs/email/parsing/header-parsing.d.ts +1 -0
  22. package/dist/cjs/email/parsing/header-parsing.js +20 -0
  23. package/dist/cjs/email/parsing/header-parsing.js.map +1 -0
  24. package/dist/cjs/email/parsing/headers-utils.d.cts +5 -0
  25. package/dist/cjs/email/parsing/headers-utils.d.ts +5 -0
  26. package/dist/cjs/email/parsing/headers-utils.js +46 -0
  27. package/dist/cjs/email/parsing/headers-utils.js.map +1 -0
  28. package/dist/cjs/email/parsing/html-processing.d.cts +8 -0
  29. package/dist/cjs/email/parsing/html-processing.d.ts +8 -0
  30. package/dist/cjs/email/parsing/html-processing.js +72 -0
  31. package/dist/cjs/email/parsing/html-processing.js.map +1 -0
  32. package/dist/cjs/email/parsing/message-extraction.d.cts +2 -0
  33. package/dist/cjs/email/parsing/message-extraction.d.ts +2 -0
  34. package/dist/cjs/email/parsing/message-extraction.js +25 -0
  35. package/dist/cjs/email/parsing/message-extraction.js.map +1 -0
  36. package/dist/cjs/email/querying/execute-query.d.cts +17 -0
  37. package/dist/cjs/email/querying/execute-query.d.ts +17 -0
  38. package/dist/cjs/email/querying/execute-query.js +265 -0
  39. package/dist/cjs/email/querying/execute-query.js.map +1 -0
  40. package/dist/cjs/email/querying/pagination.d.cts +27 -0
  41. package/dist/cjs/email/querying/pagination.d.ts +27 -0
  42. package/dist/cjs/email/querying/pagination.js +533 -0
  43. package/dist/cjs/email/querying/pagination.js.map +1 -0
  44. package/dist/cjs/email/querying/query-builder.d.cts +47 -0
  45. package/dist/cjs/email/querying/query-builder.d.ts +47 -0
  46. package/dist/cjs/email/querying/query-builder.js +387 -0
  47. package/dist/cjs/email/querying/query-builder.js.map +1 -0
  48. package/dist/cjs/email/querying/search-execution.d.cts +29 -0
  49. package/dist/cjs/email/querying/search-execution.d.ts +29 -0
  50. package/dist/cjs/email/querying/search-execution.js +190 -0
  51. package/dist/cjs/email/querying/search-execution.js.map +1 -0
  52. package/dist/cjs/index.d.cts +8 -0
  53. package/dist/cjs/index.d.ts +8 -0
  54. package/dist/cjs/index.js +314 -0
  55. package/dist/cjs/index.js.map +1 -0
  56. package/dist/cjs/labels/gmail-labels.d.cts +2 -0
  57. package/dist/cjs/labels/gmail-labels.d.ts +2 -0
  58. package/dist/cjs/labels/gmail-labels.js +206 -0
  59. package/dist/cjs/labels/gmail-labels.js.map +1 -0
  60. package/dist/cjs/lib/base64-encoding.d.cts +2 -0
  61. package/dist/cjs/lib/base64-encoding.d.ts +2 -0
  62. package/dist/cjs/lib/base64-encoding.js +32 -0
  63. package/dist/cjs/lib/base64-encoding.js.map +1 -0
  64. package/dist/cjs/lib/create-store.d.cts +2 -0
  65. package/dist/cjs/lib/create-store.d.ts +2 -0
  66. package/dist/cjs/lib/create-store.js +166 -0
  67. package/dist/cjs/lib/create-store.js.map +1 -0
  68. package/dist/cjs/lib/date-conversion.d.cts +1 -0
  69. package/dist/cjs/lib/date-conversion.d.ts +1 -0
  70. package/dist/cjs/lib/date-conversion.js +16 -0
  71. package/dist/cjs/lib/date-conversion.js.map +1 -0
  72. package/dist/cjs/lib/messages-to-row.d.cts +61 -0
  73. package/dist/cjs/lib/messages-to-row.d.ts +61 -0
  74. package/dist/cjs/lib/messages-to-row.js +243 -0
  75. package/dist/cjs/lib/messages-to-row.js.map +1 -0
  76. package/dist/cjs/mcp/index.d.cts +3 -0
  77. package/dist/cjs/mcp/index.d.ts +3 -0
  78. package/dist/cjs/mcp/index.js +66 -0
  79. package/dist/cjs/mcp/index.js.map +1 -0
  80. package/dist/cjs/mcp/prompts/draft-email.d.cts +30 -0
  81. package/dist/cjs/mcp/prompts/draft-email.d.ts +30 -0
  82. package/dist/cjs/mcp/prompts/draft-email.js +184 -0
  83. package/dist/cjs/mcp/prompts/draft-email.js.map +1 -0
  84. package/dist/cjs/mcp/prompts/index.d.cts +2 -0
  85. package/dist/cjs/mcp/prompts/index.d.ts +2 -0
  86. package/dist/cjs/mcp/prompts/index.js +26 -0
  87. package/dist/cjs/mcp/prompts/index.js.map +1 -0
  88. package/dist/cjs/mcp/prompts/query-syntax.d.cts +19 -0
  89. package/dist/cjs/mcp/prompts/query-syntax.d.ts +19 -0
  90. package/dist/cjs/mcp/prompts/query-syntax.js +169 -0
  91. package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -0
  92. package/dist/cjs/mcp/resources/email.d.cts +11 -0
  93. package/dist/cjs/mcp/resources/email.d.ts +11 -0
  94. package/dist/cjs/mcp/resources/email.js +256 -0
  95. package/dist/cjs/mcp/resources/email.js.map +1 -0
  96. package/dist/cjs/mcp/resources/index.d.cts +1 -0
  97. package/dist/cjs/mcp/resources/index.d.ts +1 -0
  98. package/dist/cjs/mcp/resources/index.js +17 -0
  99. package/dist/cjs/mcp/resources/index.js.map +1 -0
  100. package/dist/cjs/mcp/tools/categories-list.d.cts +58 -0
  101. package/dist/cjs/mcp/tools/categories-list.d.ts +58 -0
  102. package/dist/cjs/mcp/tools/categories-list.js +298 -0
  103. package/dist/cjs/mcp/tools/categories-list.js.map +1 -0
  104. package/dist/cjs/mcp/tools/index.d.cts +11 -0
  105. package/dist/cjs/mcp/tools/index.d.ts +11 -0
  106. package/dist/cjs/mcp/tools/index.js +62 -0
  107. package/dist/cjs/mcp/tools/index.js.map +1 -0
  108. package/dist/cjs/mcp/tools/label-add.d.cts +61 -0
  109. package/dist/cjs/mcp/tools/label-add.d.ts +61 -0
  110. package/dist/cjs/mcp/tools/label-add.js +280 -0
  111. package/dist/cjs/mcp/tools/label-add.js.map +1 -0
  112. package/dist/cjs/mcp/tools/label-delete.d.cts +71 -0
  113. package/dist/cjs/mcp/tools/label-delete.d.ts +71 -0
  114. package/dist/cjs/mcp/tools/label-delete.js +476 -0
  115. package/dist/cjs/mcp/tools/label-delete.js.map +1 -0
  116. package/dist/cjs/mcp/tools/labels-list.d.cts +75 -0
  117. package/dist/cjs/mcp/tools/labels-list.d.ts +75 -0
  118. package/dist/cjs/mcp/tools/labels-list.js +298 -0
  119. package/dist/cjs/mcp/tools/labels-list.js.map +1 -0
  120. package/dist/cjs/mcp/tools/message-get.d.cts +146 -0
  121. package/dist/cjs/mcp/tools/message-get.d.ts +146 -0
  122. package/dist/cjs/mcp/tools/message-get.js +317 -0
  123. package/dist/cjs/mcp/tools/message-get.js.map +1 -0
  124. package/dist/cjs/mcp/tools/message-mark-read.d.cts +50 -0
  125. package/dist/cjs/mcp/tools/message-mark-read.d.ts +50 -0
  126. package/dist/cjs/mcp/tools/message-mark-read.js +254 -0
  127. package/dist/cjs/mcp/tools/message-mark-read.js.map +1 -0
  128. package/dist/cjs/mcp/tools/message-move-to-trash.d.cts +71 -0
  129. package/dist/cjs/mcp/tools/message-move-to-trash.d.ts +71 -0
  130. package/dist/cjs/mcp/tools/message-move-to-trash.js +450 -0
  131. package/dist/cjs/mcp/tools/message-move-to-trash.js.map +1 -0
  132. package/dist/cjs/mcp/tools/message-respond.d.cts +60 -0
  133. package/dist/cjs/mcp/tools/message-respond.d.ts +60 -0
  134. package/dist/cjs/mcp/tools/message-respond.js +367 -0
  135. package/dist/cjs/mcp/tools/message-respond.js.map +1 -0
  136. package/dist/cjs/mcp/tools/message-search.d.cts +182 -0
  137. package/dist/cjs/mcp/tools/message-search.d.ts +182 -0
  138. package/dist/cjs/mcp/tools/message-search.js +405 -0
  139. package/dist/cjs/mcp/tools/message-search.js.map +1 -0
  140. package/dist/cjs/mcp/tools/message-send.d.cts +87 -0
  141. package/dist/cjs/mcp/tools/message-send.d.ts +87 -0
  142. package/dist/cjs/mcp/tools/message-send.js +288 -0
  143. package/dist/cjs/mcp/tools/message-send.js.map +1 -0
  144. package/dist/cjs/mcp/tools/messages-export-csv.d.cts +84 -0
  145. package/dist/cjs/mcp/tools/messages-export-csv.d.ts +84 -0
  146. package/dist/cjs/mcp/tools/messages-export-csv.js +530 -0
  147. package/dist/cjs/mcp/tools/messages-export-csv.js.map +1 -0
  148. package/dist/cjs/package.json +1 -0
  149. package/dist/cjs/schemas/gmail-query-schema.d.cts +36 -0
  150. package/dist/cjs/schemas/gmail-query-schema.d.ts +36 -0
  151. package/dist/cjs/schemas/gmail-query-schema.js +117 -0
  152. package/dist/cjs/schemas/gmail-query-schema.js.map +1 -0
  153. package/dist/cjs/schemas/index.d.cts +1 -0
  154. package/dist/cjs/schemas/index.d.ts +1 -0
  155. package/dist/cjs/schemas/index.js +19 -0
  156. package/dist/cjs/schemas/index.js.map +1 -0
  157. package/dist/cjs/setup/config.d.cts +48 -0
  158. package/dist/cjs/setup/config.d.ts +48 -0
  159. package/dist/cjs/setup/config.js +217 -0
  160. package/dist/cjs/setup/config.js.map +1 -0
  161. package/dist/cjs/setup/http.d.cts +8 -0
  162. package/dist/cjs/setup/http.d.ts +8 -0
  163. package/dist/cjs/setup/http.js +267 -0
  164. package/dist/cjs/setup/http.js.map +1 -0
  165. package/dist/cjs/setup/index.d.cts +5 -0
  166. package/dist/cjs/setup/index.d.ts +5 -0
  167. package/dist/cjs/setup/index.js +46 -0
  168. package/dist/cjs/setup/index.js.map +1 -0
  169. package/dist/cjs/setup/oauth-google.d.cts +54 -0
  170. package/dist/cjs/setup/oauth-google.d.ts +54 -0
  171. package/dist/cjs/setup/oauth-google.js +332 -0
  172. package/dist/cjs/setup/oauth-google.js.map +1 -0
  173. package/dist/cjs/setup/runtime.d.cts +12 -0
  174. package/dist/cjs/setup/runtime.d.ts +12 -0
  175. package/dist/cjs/setup/runtime.js +489 -0
  176. package/dist/cjs/setup/runtime.js.map +1 -0
  177. package/dist/cjs/setup/stdio.d.cts +7 -0
  178. package/dist/cjs/setup/stdio.d.ts +7 -0
  179. package/dist/cjs/setup/stdio.js +239 -0
  180. package/dist/cjs/setup/stdio.js.map +1 -0
  181. package/dist/cjs/types.d.cts +54 -0
  182. package/dist/cjs/types.d.ts +54 -0
  183. package/dist/cjs/types.js +5 -0
  184. package/dist/cjs/types.js.map +1 -0
  185. package/dist/esm/constants.d.ts +11 -0
  186. package/dist/esm/constants.js +14 -0
  187. package/dist/esm/constants.js.map +1 -0
  188. package/dist/esm/email/composition/rfc822-builder.d.ts +11 -0
  189. package/dist/esm/email/composition/rfc822-builder.js +13 -0
  190. package/dist/esm/email/composition/rfc822-builder.js.map +1 -0
  191. package/dist/esm/email/messages/fetch-message.d.ts +24 -0
  192. package/dist/esm/email/messages/fetch-message.js +123 -0
  193. package/dist/esm/email/messages/fetch-message.js.map +1 -0
  194. package/dist/esm/email/messages/messages.d.ts +7 -0
  195. package/dist/esm/email/messages/messages.js +91 -0
  196. package/dist/esm/email/messages/messages.js.map +1 -0
  197. package/dist/esm/email/parsing/header-parsing.d.ts +1 -0
  198. package/dist/esm/email/parsing/header-parsing.js +1 -0
  199. package/dist/esm/email/parsing/header-parsing.js.map +1 -0
  200. package/dist/esm/email/parsing/headers-utils.d.ts +5 -0
  201. package/dist/esm/email/parsing/headers-utils.js +25 -0
  202. package/dist/esm/email/parsing/headers-utils.js.map +1 -0
  203. package/dist/esm/email/parsing/html-processing.d.ts +8 -0
  204. package/dist/esm/email/parsing/html-processing.js +39 -0
  205. package/dist/esm/email/parsing/html-processing.js.map +1 -0
  206. package/dist/esm/email/parsing/message-extraction.d.ts +2 -0
  207. package/dist/esm/email/parsing/message-extraction.js +3 -0
  208. package/dist/esm/email/parsing/message-extraction.js.map +1 -0
  209. package/dist/esm/email/querying/execute-query.d.ts +17 -0
  210. package/dist/esm/email/querying/execute-query.js +45 -0
  211. package/dist/esm/email/querying/execute-query.js.map +1 -0
  212. package/dist/esm/email/querying/pagination.d.ts +27 -0
  213. package/dist/esm/email/querying/pagination.js +152 -0
  214. package/dist/esm/email/querying/pagination.js.map +1 -0
  215. package/dist/esm/email/querying/query-builder.d.ts +47 -0
  216. package/dist/esm/email/querying/query-builder.js +306 -0
  217. package/dist/esm/email/querying/query-builder.js.map +1 -0
  218. package/dist/esm/email/querying/search-execution.d.ts +29 -0
  219. package/dist/esm/email/querying/search-execution.js +35 -0
  220. package/dist/esm/email/querying/search-execution.js.map +1 -0
  221. package/dist/esm/index.d.ts +8 -0
  222. package/dist/esm/index.js +34 -0
  223. package/dist/esm/index.js.map +1 -0
  224. package/dist/esm/labels/gmail-labels.d.ts +2 -0
  225. package/dist/esm/labels/gmail-labels.js +43 -0
  226. package/dist/esm/labels/gmail-labels.js.map +1 -0
  227. package/dist/esm/lib/base64-encoding.d.ts +2 -0
  228. package/dist/esm/lib/base64-encoding.js +13 -0
  229. package/dist/esm/lib/base64-encoding.js.map +1 -0
  230. package/dist/esm/lib/create-store.d.ts +2 -0
  231. package/dist/esm/lib/create-store.js +6 -0
  232. package/dist/esm/lib/create-store.js.map +1 -0
  233. package/dist/esm/lib/date-conversion.d.ts +1 -0
  234. package/dist/esm/lib/date-conversion.js +5 -0
  235. package/dist/esm/lib/date-conversion.js.map +1 -0
  236. package/dist/esm/lib/messages-to-row.d.ts +61 -0
  237. package/dist/esm/lib/messages-to-row.js +188 -0
  238. package/dist/esm/lib/messages-to-row.js.map +1 -0
  239. package/dist/esm/mcp/index.d.ts +3 -0
  240. package/dist/esm/mcp/index.js +6 -0
  241. package/dist/esm/mcp/index.js.map +1 -0
  242. package/dist/esm/mcp/prompts/draft-email.d.ts +30 -0
  243. package/dist/esm/mcp/prompts/draft-email.js +37 -0
  244. package/dist/esm/mcp/prompts/draft-email.js.map +1 -0
  245. package/dist/esm/mcp/prompts/index.d.ts +2 -0
  246. package/dist/esm/mcp/prompts/index.js +2 -0
  247. package/dist/esm/mcp/prompts/index.js.map +1 -0
  248. package/dist/esm/mcp/prompts/query-syntax.d.ts +19 -0
  249. package/dist/esm/mcp/prompts/query-syntax.js +74 -0
  250. package/dist/esm/mcp/prompts/query-syntax.js.map +1 -0
  251. package/dist/esm/mcp/resources/email.d.ts +11 -0
  252. package/dist/esm/mcp/resources/email.js +92 -0
  253. package/dist/esm/mcp/resources/email.js.map +1 -0
  254. package/dist/esm/mcp/resources/index.d.ts +1 -0
  255. package/dist/esm/mcp/resources/index.js +1 -0
  256. package/dist/esm/mcp/resources/index.js.map +1 -0
  257. package/dist/esm/mcp/tools/categories-list.d.ts +58 -0
  258. package/dist/esm/mcp/tools/categories-list.js +124 -0
  259. package/dist/esm/mcp/tools/categories-list.js.map +1 -0
  260. package/dist/esm/mcp/tools/index.d.ts +11 -0
  261. package/dist/esm/mcp/tools/index.js +11 -0
  262. package/dist/esm/mcp/tools/index.js.map +1 -0
  263. package/dist/esm/mcp/tools/label-add.d.ts +61 -0
  264. package/dist/esm/mcp/tools/label-add.js +101 -0
  265. package/dist/esm/mcp/tools/label-add.js.map +1 -0
  266. package/dist/esm/mcp/tools/label-delete.d.ts +71 -0
  267. package/dist/esm/mcp/tools/label-delete.js +186 -0
  268. package/dist/esm/mcp/tools/label-delete.js.map +1 -0
  269. package/dist/esm/mcp/tools/labels-list.d.ts +75 -0
  270. package/dist/esm/mcp/tools/labels-list.js +122 -0
  271. package/dist/esm/mcp/tools/labels-list.js.map +1 -0
  272. package/dist/esm/mcp/tools/message-get.d.ts +146 -0
  273. package/dist/esm/mcp/tools/message-get.js +145 -0
  274. package/dist/esm/mcp/tools/message-get.js.map +1 -0
  275. package/dist/esm/mcp/tools/message-mark-read.d.ts +50 -0
  276. package/dist/esm/mcp/tools/message-mark-read.js +80 -0
  277. package/dist/esm/mcp/tools/message-mark-read.js.map +1 -0
  278. package/dist/esm/mcp/tools/message-move-to-trash.d.ts +71 -0
  279. package/dist/esm/mcp/tools/message-move-to-trash.js +167 -0
  280. package/dist/esm/mcp/tools/message-move-to-trash.js.map +1 -0
  281. package/dist/esm/mcp/tools/message-respond.d.ts +60 -0
  282. package/dist/esm/mcp/tools/message-respond.js +152 -0
  283. package/dist/esm/mcp/tools/message-respond.js.map +1 -0
  284. package/dist/esm/mcp/tools/message-search.d.ts +182 -0
  285. package/dist/esm/mcp/tools/message-search.js +180 -0
  286. package/dist/esm/mcp/tools/message-search.js.map +1 -0
  287. package/dist/esm/mcp/tools/message-send.d.ts +87 -0
  288. package/dist/esm/mcp/tools/message-send.js +115 -0
  289. package/dist/esm/mcp/tools/message-send.js.map +1 -0
  290. package/dist/esm/mcp/tools/messages-export-csv.d.ts +84 -0
  291. package/dist/esm/mcp/tools/messages-export-csv.js +261 -0
  292. package/dist/esm/mcp/tools/messages-export-csv.js.map +1 -0
  293. package/dist/esm/package.json +1 -0
  294. package/dist/esm/schemas/gmail-query-schema.d.ts +36 -0
  295. package/dist/esm/schemas/gmail-query-schema.js +72 -0
  296. package/dist/esm/schemas/gmail-query-schema.js.map +1 -0
  297. package/dist/esm/schemas/index.d.ts +1 -0
  298. package/dist/esm/schemas/index.js +1 -0
  299. package/dist/esm/schemas/index.js.map +1 -0
  300. package/dist/esm/setup/config.d.ts +48 -0
  301. package/dist/esm/setup/config.js +175 -0
  302. package/dist/esm/setup/config.js.map +1 -0
  303. package/dist/esm/setup/http.d.ts +8 -0
  304. package/dist/esm/setup/http.js +61 -0
  305. package/dist/esm/setup/http.js.map +1 -0
  306. package/dist/esm/setup/index.d.ts +5 -0
  307. package/dist/esm/setup/index.js +5 -0
  308. package/dist/esm/setup/index.js.map +1 -0
  309. package/dist/esm/setup/oauth-google.d.ts +54 -0
  310. package/dist/esm/setup/oauth-google.js +142 -0
  311. package/dist/esm/setup/oauth-google.js.map +1 -0
  312. package/dist/esm/setup/runtime.d.ts +12 -0
  313. package/dist/esm/setup/runtime.js +115 -0
  314. package/dist/esm/setup/runtime.js.map +1 -0
  315. package/dist/esm/setup/stdio.d.ts +7 -0
  316. package/dist/esm/setup/stdio.js +38 -0
  317. package/dist/esm/setup/stdio.js.map +1 -0
  318. package/dist/esm/types.d.ts +54 -0
  319. package/dist/esm/types.js +1 -0
  320. package/dist/esm/types.js.map +1 -0
  321. package/package.json +110 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Kevin Malakoff
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,167 @@
1
+ # @mcp-z/mcp-gmail
2
+
3
+ Docs: https://mcp-z.github.io/mcp-gmail
4
+ Gmail MCP server for searching, reading, and sending mail over MCP.
5
+
6
+ ## Common uses
7
+
8
+ - Search and read messages
9
+ - Send and reply to emails
10
+ - Manage labels and export messages to CSV
11
+
12
+ ## Transports
13
+
14
+ MCP supports stdio and HTTP.
15
+
16
+ **Stdio**
17
+ ```json
18
+ {
19
+ "mcpServers": {
20
+ "gmail": {
21
+ "command": "npx",
22
+ "args": ["-y", "@mcp-z/mcp-gmail"]
23
+ }
24
+ }
25
+ }
26
+ ```
27
+
28
+ **HTTP**
29
+ ```json
30
+ {
31
+ "mcpServers": {
32
+ "gmail": {
33
+ "type": "http",
34
+ "url": "http://localhost:9002/mcp",
35
+ "start": {
36
+ "command": "npx",
37
+ "args": ["-y", "@mcp-z/mcp-gmail", "--port=9002"]
38
+ }
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+ `start` is an extension used by `npx @mcp-z/cli up` to launch HTTP servers for you.
45
+
46
+ ## Create a Google Cloud app
47
+
48
+ 1. Go to [Google Cloud Console](https://console.cloud.google.com/).
49
+ 2. Create or select a project.
50
+ 3. Enable the Gmail API.
51
+ 4. Create OAuth 2.0 credentials (Desktop app).
52
+ 5. Copy the Client ID and Client Secret.
53
+
54
+ ## OAuth modes
55
+
56
+ Configure via environment variables or the `env` block in `.mcp.json`. See `server.json` for the full list of options.
57
+
58
+ ### Loopback OAuth (default)
59
+
60
+ Environment variables:
61
+
62
+ ```bash
63
+ GOOGLE_CLIENT_ID=your-client-id
64
+ GOOGLE_CLIENT_SECRET=your-client-secret
65
+ ```
66
+
67
+ Example:
68
+ ```json
69
+ {
70
+ "mcpServers": {
71
+ "gmail": {
72
+ "command": "npx",
73
+ "args": ["-y", "@mcp-z/mcp-gmail"],
74
+ "env": {
75
+ "GOOGLE_CLIENT_ID": "your-client-id",
76
+ "GOOGLE_CLIENT_SECRET": "your-client-secret"
77
+ }
78
+ }
79
+ }
80
+ }
81
+ ```
82
+
83
+ ### Service account
84
+
85
+ Environment variables:
86
+
87
+ ```bash
88
+ AUTH_MODE=service-account
89
+ GOOGLE_SERVICE_ACCOUNT_KEY_FILE=/path/to/service-account.json
90
+ ```
91
+
92
+ Example:
93
+ ```json
94
+ {
95
+ "mcpServers": {
96
+ "gmail": {
97
+ "command": "npx",
98
+ "args": ["-y", "@mcp-z/mcp-gmail", "--auth=service-account"],
99
+ "env": {
100
+ "GOOGLE_SERVICE_ACCOUNT_KEY_FILE": "/path/to/service-account.json"
101
+ }
102
+ }
103
+ }
104
+ }
105
+ ```
106
+
107
+ ### DCR (self-hosted)
108
+
109
+ HTTP only. Requires a public base URL.
110
+
111
+ ```json
112
+ {
113
+ "mcpServers": {
114
+ "gmail-dcr": {
115
+ "command": "npx",
116
+ "args": [
117
+ "-y",
118
+ "@mcp-z/mcp-gmail",
119
+ "--auth=dcr",
120
+ "--port=3456",
121
+ "--base-url=https://oauth.example.com"
122
+ ],
123
+ "env": {
124
+ "GOOGLE_CLIENT_ID": "your-client-id",
125
+ "GOOGLE_CLIENT_SECRET": "your-client-secret"
126
+ }
127
+ }
128
+ }
129
+ }
130
+ ```
131
+
132
+ ## How to use
133
+
134
+ ```bash
135
+ # List tools
136
+ mcp-z inspect --servers gmail --tools
137
+
138
+ # Call a tool
139
+ mcp-z call gmail message-search '{"query":"from:alice@example.com"}'
140
+ ```
141
+
142
+ ## Tools
143
+
144
+ 1. categories-list
145
+ 2. label-add
146
+ 3. label-delete
147
+ 4. labels-list
148
+ 5. message-get
149
+ 6. message-mark-read
150
+ 7. message-move-to-trash
151
+ 8. message-respond
152
+ 9. message-search
153
+ 10. message-send
154
+ 11. messages-export-csv
155
+
156
+ ## Resources
157
+
158
+ 1. email
159
+
160
+ ## Prompts
161
+
162
+ 1. draft-email
163
+ 2. query-syntax
164
+
165
+ ## Configuration reference
166
+
167
+ See `server.json` for all supported environment variables, CLI arguments, and defaults.
package/bin/server.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ // biome-ignore lint/security/noGlobalEval: dual esm and cjs
4
+ if (typeof require === 'undefined') eval("import('../dist/esm/index.js').then((cli) => cli.default(process.argv.slice(2), 'mcp-gmail')).catch((err) => { console.log(err); process.exit(-1); });");
5
+ else require('../dist/cjs/index.js')(process.argv.slice(2), 'mcp-gmail');
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Gmail MCP Server Constants
3
+ *
4
+ * These scopes are required for Gmail functionality and are hardcoded
5
+ * rather than externally configured since this server knows its own requirements.
6
+ */
7
+ export declare const GOOGLE_SCOPE = "openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://mail.google.com/";
8
+ export declare const CHUNK_SIZE = 10;
9
+ export declare const MAX_BATCH_SIZE = 500;
10
+ export declare const DEFAULT_PAGE_SIZE = 50;
11
+ export declare const MAX_PAGE_SIZE = 1000;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Gmail MCP Server Constants
3
+ *
4
+ * These scopes are required for Gmail functionality and are hardcoded
5
+ * rather than externally configured since this server knows its own requirements.
6
+ */
7
+ export declare const GOOGLE_SCOPE = "openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://mail.google.com/";
8
+ export declare const CHUNK_SIZE = 10;
9
+ export declare const MAX_BATCH_SIZE = 500;
10
+ export declare const DEFAULT_PAGE_SIZE = 50;
11
+ export declare const MAX_PAGE_SIZE = 1000;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Gmail MCP Server Constants
3
+ *
4
+ * These scopes are required for Gmail functionality and are hardcoded
5
+ * rather than externally configured since this server knows its own requirements.
6
+ */ "use strict";
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ function _export(target, all) {
11
+ for(var name in all)Object.defineProperty(target, name, {
12
+ enumerable: true,
13
+ get: Object.getOwnPropertyDescriptor(all, name).get
14
+ });
15
+ }
16
+ _export(exports, {
17
+ get CHUNK_SIZE () {
18
+ return CHUNK_SIZE;
19
+ },
20
+ get DEFAULT_PAGE_SIZE () {
21
+ return DEFAULT_PAGE_SIZE;
22
+ },
23
+ get GOOGLE_SCOPE () {
24
+ return GOOGLE_SCOPE;
25
+ },
26
+ get MAX_BATCH_SIZE () {
27
+ return MAX_BATCH_SIZE;
28
+ },
29
+ get MAX_PAGE_SIZE () {
30
+ return MAX_PAGE_SIZE;
31
+ }
32
+ });
33
+ var _email = require("@mcp-z/email");
34
+ var GOOGLE_SCOPE = 'openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://mail.google.com/';
35
+ var CHUNK_SIZE = _email.EMAIL_CHUNK_SIZE;
36
+ var MAX_BATCH_SIZE = _email.EMAIL_MAX_BATCH_SIZE;
37
+ var DEFAULT_PAGE_SIZE = 50; // Default number of items per page
38
+ var MAX_PAGE_SIZE = 1000; // Maximum number of items per page
39
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-gmail/src/constants.ts"],"sourcesContent":["/**\n * Gmail MCP Server Constants\n *\n * These scopes are required for Gmail functionality and are hardcoded\n * rather than externally configured since this server knows its own requirements.\n */\n\nimport { EMAIL_CHUNK_SIZE, EMAIL_MAX_BATCH_SIZE } from '@mcp-z/email';\n\n// Google OAuth scopes required for Gmail operations\nexport const GOOGLE_SCOPE = 'openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://mail.google.com/';\n\n// Batch processing configuration (from shared email constants)\nexport const CHUNK_SIZE = EMAIL_CHUNK_SIZE;\nexport const MAX_BATCH_SIZE = EMAIL_MAX_BATCH_SIZE;\n\n// Pagination configuration\nexport const DEFAULT_PAGE_SIZE = 50; // Default number of items per page\nexport const MAX_PAGE_SIZE = 1000; // Maximum number of items per page\n"],"names":["CHUNK_SIZE","DEFAULT_PAGE_SIZE","GOOGLE_SCOPE","MAX_BATCH_SIZE","MAX_PAGE_SIZE","EMAIL_CHUNK_SIZE","EMAIL_MAX_BATCH_SIZE"],"mappings":"AAAA;;;;;CAKC;;;;;;;;;;;QAQYA;eAAAA;;QAIAC;eAAAA;;QAPAC;eAAAA;;QAIAC;eAAAA;;QAIAC;eAAAA;;;qBAX0C;AAGhD,IAAMF,eAAe;AAGrB,IAAMF,aAAaK,uBAAgB;AACnC,IAAMF,iBAAiBG,2BAAoB;AAG3C,IAAML,oBAAoB,IAAI,mCAAmC;AACjE,IAAMG,gBAAgB,MAAM,mCAAmC"}
@@ -0,0 +1,11 @@
1
+ export interface Rfc822Args {
2
+ to?: string | string[];
3
+ cc?: string | string[];
4
+ bcc?: string | string[];
5
+ subject?: string;
6
+ body?: string;
7
+ from?: string;
8
+ /** Content type for the email body */
9
+ contentType?: 'text' | 'html';
10
+ }
11
+ export declare function buildRfc822FromArgs(args: Rfc822Args): string;
@@ -0,0 +1,11 @@
1
+ export interface Rfc822Args {
2
+ to?: string | string[];
3
+ cc?: string | string[];
4
+ bcc?: string | string[];
5
+ subject?: string;
6
+ body?: string;
7
+ from?: string;
8
+ /** Content type for the email body */
9
+ contentType?: 'text' | 'html';
10
+ }
11
+ export declare function buildRfc822FromArgs(args: Rfc822Args): string;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "buildRfc822FromArgs", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return buildRfc822FromArgs;
9
+ }
10
+ });
11
+ function buildRfc822FromArgs(args) {
12
+ var _args_to = args.to, to = _args_to === void 0 ? [] : _args_to, _args_cc = args.cc, cc = _args_cc === void 0 ? [] : _args_cc, _args_bcc = args.bcc, bcc = _args_bcc === void 0 ? [] : _args_bcc, _args_subject = args.subject, subject = _args_subject === void 0 ? '' : _args_subject, _args_body = args.body, body = _args_body === void 0 ? '' : _args_body, _args_from = args.from, from = _args_from === void 0 ? '' : _args_from, _args_contentType = args.contentType, contentType = _args_contentType === void 0 ? 'text' : _args_contentType;
13
+ var headers = [];
14
+ if (from) headers.push("From: ".concat(from));
15
+ if (to && to.length) headers.push("To: ".concat(Array.isArray(to) ? to.join(', ') : to));
16
+ if (cc && cc.length) headers.push("Cc: ".concat(Array.isArray(cc) ? cc.join(', ') : cc));
17
+ if (bcc && bcc.length) headers.push("Bcc: ".concat(Array.isArray(bcc) ? bcc.join(', ') : bcc));
18
+ if (subject) headers.push("Subject: ".concat(subject));
19
+ headers.push('MIME-Version: 1.0');
20
+ var mimeType = contentType === 'html' ? 'text/html' : 'text/plain';
21
+ headers.push("Content-Type: ".concat(mimeType, "; charset=utf-8"));
22
+ return "".concat(headers.join('\r\n'), "\r\n\r\n").concat(body);
23
+ }
24
+ /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/Users/kevin/Dev/Projects/ai/mcp-z/servers/mcp-gmail/src/email/composition/rfc822-builder.ts"],"sourcesContent":["export interface Rfc822Args {\n to?: string | string[];\n cc?: string | string[];\n bcc?: string | string[];\n subject?: string;\n body?: string;\n from?: string;\n /** Content type for the email body */\n contentType?: 'text' | 'html';\n}\n\nexport function buildRfc822FromArgs(args: Rfc822Args): string {\n const { to = [], cc = [], bcc = [], subject = '', body = '', from = '', contentType = 'text' } = args;\n\n const headers: string[] = [];\n\n if (from) headers.push(`From: ${from}`);\n if (to && to.length) headers.push(`To: ${Array.isArray(to) ? to.join(', ') : to}`);\n if (cc && cc.length) headers.push(`Cc: ${Array.isArray(cc) ? cc.join(', ') : cc}`);\n if (bcc && bcc.length) headers.push(`Bcc: ${Array.isArray(bcc) ? bcc.join(', ') : bcc}`);\n if (subject) headers.push(`Subject: ${subject}`);\n\n headers.push('MIME-Version: 1.0');\n const mimeType = contentType === 'html' ? 'text/html' : 'text/plain';\n headers.push(`Content-Type: ${mimeType}; charset=utf-8`);\n\n return `${headers.join('\\r\\n')}\\r\\n\\r\\n${body}`;\n}\n"],"names":["buildRfc822FromArgs","args","to","cc","bcc","subject","body","from","contentType","headers","push","length","Array","isArray","join","mimeType"],"mappings":";;;;+BAWgBA;;;eAAAA;;;AAAT,SAASA,oBAAoBC,IAAgB;IAClD,eAAiGA,KAAzFC,IAAAA,2BAAK,EAAE,wBAAkFD,KAAhFE,IAAAA,2BAAK,EAAE,yBAAyEF,KAAvEG,KAAAA,6BAAM,EAAE,8BAA+DH,KAA7DI,SAAAA,qCAAU,iCAAmDJ,KAA/CK,MAAAA,+BAAO,8BAAwCL,KAApCM,MAAAA,+BAAO,qCAA6BN,KAAzBO,aAAAA,6CAAc;IAEtF,IAAMC,UAAoB,EAAE;IAE5B,IAAIF,MAAME,QAAQC,IAAI,CAAC,AAAC,SAAa,OAALH;IAChC,IAAIL,MAAMA,GAAGS,MAAM,EAAEF,QAAQC,IAAI,CAAC,AAAC,OAA6C,OAAvCE,MAAMC,OAAO,CAACX,MAAMA,GAAGY,IAAI,CAAC,QAAQZ;IAC7E,IAAIC,MAAMA,GAAGQ,MAAM,EAAEF,QAAQC,IAAI,CAAC,AAAC,OAA6C,OAAvCE,MAAMC,OAAO,CAACV,MAAMA,GAAGW,IAAI,CAAC,QAAQX;IAC7E,IAAIC,OAAOA,IAAIO,MAAM,EAAEF,QAAQC,IAAI,CAAC,AAAC,QAAiD,OAA1CE,MAAMC,OAAO,CAACT,OAAOA,IAAIU,IAAI,CAAC,QAAQV;IAClF,IAAIC,SAASI,QAAQC,IAAI,CAAC,AAAC,YAAmB,OAARL;IAEtCI,QAAQC,IAAI,CAAC;IACb,IAAMK,WAAWP,gBAAgB,SAAS,cAAc;IACxDC,QAAQC,IAAI,CAAC,AAAC,iBAAyB,OAATK,UAAS;IAEvC,OAAO,AAAC,GAAiCT,OAA/BG,QAAQK,IAAI,CAAC,SAAQ,YAAe,OAALR;AAC3C"}
@@ -0,0 +1,24 @@
1
+ import type { gmail_v1 } from 'googleapis';
2
+ export type FetchMode = 'metadata' | 'full';
3
+ export interface NormalizedAddress {
4
+ address?: string | undefined;
5
+ name?: string | undefined;
6
+ }
7
+ export interface NormalizedMessage {
8
+ id: string;
9
+ threadId?: string | undefined;
10
+ date?: string | undefined;
11
+ subject?: string | undefined;
12
+ from?: NormalizedAddress | undefined;
13
+ to?: string[] | undefined;
14
+ cc?: string[] | undefined;
15
+ bcc?: string[] | undefined;
16
+ snippet?: string | undefined;
17
+ labels?: string[] | undefined;
18
+ body?: string | undefined;
19
+ }
20
+ export interface GmailDeps {
21
+ /** googleapis Gmail client created via createGmailClient(provider). */
22
+ gmail: gmail_v1.Gmail;
23
+ }
24
+ export declare function fetchMessage(deps: GmailDeps, id: string, mode: FetchMode): Promise<NormalizedMessage>;
@@ -0,0 +1,24 @@
1
+ import type { gmail_v1 } from 'googleapis';
2
+ export type FetchMode = 'metadata' | 'full';
3
+ export interface NormalizedAddress {
4
+ address?: string | undefined;
5
+ name?: string | undefined;
6
+ }
7
+ export interface NormalizedMessage {
8
+ id: string;
9
+ threadId?: string | undefined;
10
+ date?: string | undefined;
11
+ subject?: string | undefined;
12
+ from?: NormalizedAddress | undefined;
13
+ to?: string[] | undefined;
14
+ cc?: string[] | undefined;
15
+ bcc?: string[] | undefined;
16
+ snippet?: string | undefined;
17
+ labels?: string[] | undefined;
18
+ body?: string | undefined;
19
+ }
20
+ export interface GmailDeps {
21
+ /** googleapis Gmail client created via createGmailClient(provider). */
22
+ gmail: gmail_v1.Gmail;
23
+ }
24
+ export declare function fetchMessage(deps: GmailDeps, id: string, mode: FetchMode): Promise<NormalizedMessage>;