@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.
- package/LICENSE +21 -0
- package/README.md +167 -0
- package/bin/server.js +5 -0
- package/dist/cjs/constants.d.cts +11 -0
- package/dist/cjs/constants.d.ts +11 -0
- package/dist/cjs/constants.js +39 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/email/composition/rfc822-builder.d.cts +11 -0
- package/dist/cjs/email/composition/rfc822-builder.d.ts +11 -0
- package/dist/cjs/email/composition/rfc822-builder.js +24 -0
- package/dist/cjs/email/composition/rfc822-builder.js.map +1 -0
- package/dist/cjs/email/messages/fetch-message.d.cts +24 -0
- package/dist/cjs/email/messages/fetch-message.d.ts +24 -0
- package/dist/cjs/email/messages/fetch-message.js +367 -0
- package/dist/cjs/email/messages/fetch-message.js.map +1 -0
- package/dist/cjs/email/messages/messages.d.cts +7 -0
- package/dist/cjs/email/messages/messages.d.ts +7 -0
- package/dist/cjs/email/messages/messages.js +146 -0
- package/dist/cjs/email/messages/messages.js.map +1 -0
- package/dist/cjs/email/parsing/header-parsing.d.cts +1 -0
- package/dist/cjs/email/parsing/header-parsing.d.ts +1 -0
- package/dist/cjs/email/parsing/header-parsing.js +20 -0
- package/dist/cjs/email/parsing/header-parsing.js.map +1 -0
- package/dist/cjs/email/parsing/headers-utils.d.cts +5 -0
- package/dist/cjs/email/parsing/headers-utils.d.ts +5 -0
- package/dist/cjs/email/parsing/headers-utils.js +46 -0
- package/dist/cjs/email/parsing/headers-utils.js.map +1 -0
- package/dist/cjs/email/parsing/html-processing.d.cts +8 -0
- package/dist/cjs/email/parsing/html-processing.d.ts +8 -0
- package/dist/cjs/email/parsing/html-processing.js +72 -0
- package/dist/cjs/email/parsing/html-processing.js.map +1 -0
- package/dist/cjs/email/parsing/message-extraction.d.cts +2 -0
- package/dist/cjs/email/parsing/message-extraction.d.ts +2 -0
- package/dist/cjs/email/parsing/message-extraction.js +25 -0
- package/dist/cjs/email/parsing/message-extraction.js.map +1 -0
- package/dist/cjs/email/querying/execute-query.d.cts +17 -0
- package/dist/cjs/email/querying/execute-query.d.ts +17 -0
- package/dist/cjs/email/querying/execute-query.js +265 -0
- package/dist/cjs/email/querying/execute-query.js.map +1 -0
- package/dist/cjs/email/querying/pagination.d.cts +27 -0
- package/dist/cjs/email/querying/pagination.d.ts +27 -0
- package/dist/cjs/email/querying/pagination.js +533 -0
- package/dist/cjs/email/querying/pagination.js.map +1 -0
- package/dist/cjs/email/querying/query-builder.d.cts +47 -0
- package/dist/cjs/email/querying/query-builder.d.ts +47 -0
- package/dist/cjs/email/querying/query-builder.js +387 -0
- package/dist/cjs/email/querying/query-builder.js.map +1 -0
- package/dist/cjs/email/querying/search-execution.d.cts +29 -0
- package/dist/cjs/email/querying/search-execution.d.ts +29 -0
- package/dist/cjs/email/querying/search-execution.js +190 -0
- package/dist/cjs/email/querying/search-execution.js.map +1 -0
- package/dist/cjs/index.d.cts +8 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.js +314 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/labels/gmail-labels.d.cts +2 -0
- package/dist/cjs/labels/gmail-labels.d.ts +2 -0
- package/dist/cjs/labels/gmail-labels.js +206 -0
- package/dist/cjs/labels/gmail-labels.js.map +1 -0
- package/dist/cjs/lib/base64-encoding.d.cts +2 -0
- package/dist/cjs/lib/base64-encoding.d.ts +2 -0
- package/dist/cjs/lib/base64-encoding.js +32 -0
- package/dist/cjs/lib/base64-encoding.js.map +1 -0
- package/dist/cjs/lib/create-store.d.cts +2 -0
- package/dist/cjs/lib/create-store.d.ts +2 -0
- package/dist/cjs/lib/create-store.js +166 -0
- package/dist/cjs/lib/create-store.js.map +1 -0
- package/dist/cjs/lib/date-conversion.d.cts +1 -0
- package/dist/cjs/lib/date-conversion.d.ts +1 -0
- package/dist/cjs/lib/date-conversion.js +16 -0
- package/dist/cjs/lib/date-conversion.js.map +1 -0
- package/dist/cjs/lib/messages-to-row.d.cts +61 -0
- package/dist/cjs/lib/messages-to-row.d.ts +61 -0
- package/dist/cjs/lib/messages-to-row.js +243 -0
- package/dist/cjs/lib/messages-to-row.js.map +1 -0
- package/dist/cjs/mcp/index.d.cts +3 -0
- package/dist/cjs/mcp/index.d.ts +3 -0
- package/dist/cjs/mcp/index.js +66 -0
- package/dist/cjs/mcp/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/draft-email.d.cts +30 -0
- package/dist/cjs/mcp/prompts/draft-email.d.ts +30 -0
- package/dist/cjs/mcp/prompts/draft-email.js +184 -0
- package/dist/cjs/mcp/prompts/draft-email.js.map +1 -0
- package/dist/cjs/mcp/prompts/index.d.cts +2 -0
- package/dist/cjs/mcp/prompts/index.d.ts +2 -0
- package/dist/cjs/mcp/prompts/index.js +26 -0
- package/dist/cjs/mcp/prompts/index.js.map +1 -0
- package/dist/cjs/mcp/prompts/query-syntax.d.cts +19 -0
- package/dist/cjs/mcp/prompts/query-syntax.d.ts +19 -0
- package/dist/cjs/mcp/prompts/query-syntax.js +169 -0
- package/dist/cjs/mcp/prompts/query-syntax.js.map +1 -0
- package/dist/cjs/mcp/resources/email.d.cts +11 -0
- package/dist/cjs/mcp/resources/email.d.ts +11 -0
- package/dist/cjs/mcp/resources/email.js +256 -0
- package/dist/cjs/mcp/resources/email.js.map +1 -0
- package/dist/cjs/mcp/resources/index.d.cts +1 -0
- package/dist/cjs/mcp/resources/index.d.ts +1 -0
- package/dist/cjs/mcp/resources/index.js +17 -0
- package/dist/cjs/mcp/resources/index.js.map +1 -0
- package/dist/cjs/mcp/tools/categories-list.d.cts +58 -0
- package/dist/cjs/mcp/tools/categories-list.d.ts +58 -0
- package/dist/cjs/mcp/tools/categories-list.js +298 -0
- package/dist/cjs/mcp/tools/categories-list.js.map +1 -0
- package/dist/cjs/mcp/tools/index.d.cts +11 -0
- package/dist/cjs/mcp/tools/index.d.ts +11 -0
- package/dist/cjs/mcp/tools/index.js +62 -0
- package/dist/cjs/mcp/tools/index.js.map +1 -0
- package/dist/cjs/mcp/tools/label-add.d.cts +61 -0
- package/dist/cjs/mcp/tools/label-add.d.ts +61 -0
- package/dist/cjs/mcp/tools/label-add.js +280 -0
- package/dist/cjs/mcp/tools/label-add.js.map +1 -0
- package/dist/cjs/mcp/tools/label-delete.d.cts +71 -0
- package/dist/cjs/mcp/tools/label-delete.d.ts +71 -0
- package/dist/cjs/mcp/tools/label-delete.js +476 -0
- package/dist/cjs/mcp/tools/label-delete.js.map +1 -0
- package/dist/cjs/mcp/tools/labels-list.d.cts +75 -0
- package/dist/cjs/mcp/tools/labels-list.d.ts +75 -0
- package/dist/cjs/mcp/tools/labels-list.js +298 -0
- package/dist/cjs/mcp/tools/labels-list.js.map +1 -0
- package/dist/cjs/mcp/tools/message-get.d.cts +146 -0
- package/dist/cjs/mcp/tools/message-get.d.ts +146 -0
- package/dist/cjs/mcp/tools/message-get.js +317 -0
- package/dist/cjs/mcp/tools/message-get.js.map +1 -0
- package/dist/cjs/mcp/tools/message-mark-read.d.cts +50 -0
- package/dist/cjs/mcp/tools/message-mark-read.d.ts +50 -0
- package/dist/cjs/mcp/tools/message-mark-read.js +254 -0
- package/dist/cjs/mcp/tools/message-mark-read.js.map +1 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.d.cts +71 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.d.ts +71 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.js +450 -0
- package/dist/cjs/mcp/tools/message-move-to-trash.js.map +1 -0
- package/dist/cjs/mcp/tools/message-respond.d.cts +60 -0
- package/dist/cjs/mcp/tools/message-respond.d.ts +60 -0
- package/dist/cjs/mcp/tools/message-respond.js +367 -0
- package/dist/cjs/mcp/tools/message-respond.js.map +1 -0
- package/dist/cjs/mcp/tools/message-search.d.cts +182 -0
- package/dist/cjs/mcp/tools/message-search.d.ts +182 -0
- package/dist/cjs/mcp/tools/message-search.js +405 -0
- package/dist/cjs/mcp/tools/message-search.js.map +1 -0
- package/dist/cjs/mcp/tools/message-send.d.cts +87 -0
- package/dist/cjs/mcp/tools/message-send.d.ts +87 -0
- package/dist/cjs/mcp/tools/message-send.js +288 -0
- package/dist/cjs/mcp/tools/message-send.js.map +1 -0
- package/dist/cjs/mcp/tools/messages-export-csv.d.cts +84 -0
- package/dist/cjs/mcp/tools/messages-export-csv.d.ts +84 -0
- package/dist/cjs/mcp/tools/messages-export-csv.js +530 -0
- package/dist/cjs/mcp/tools/messages-export-csv.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/schemas/gmail-query-schema.d.cts +36 -0
- package/dist/cjs/schemas/gmail-query-schema.d.ts +36 -0
- package/dist/cjs/schemas/gmail-query-schema.js +117 -0
- package/dist/cjs/schemas/gmail-query-schema.js.map +1 -0
- package/dist/cjs/schemas/index.d.cts +1 -0
- package/dist/cjs/schemas/index.d.ts +1 -0
- package/dist/cjs/schemas/index.js +19 -0
- package/dist/cjs/schemas/index.js.map +1 -0
- package/dist/cjs/setup/config.d.cts +48 -0
- package/dist/cjs/setup/config.d.ts +48 -0
- package/dist/cjs/setup/config.js +217 -0
- package/dist/cjs/setup/config.js.map +1 -0
- package/dist/cjs/setup/http.d.cts +8 -0
- package/dist/cjs/setup/http.d.ts +8 -0
- package/dist/cjs/setup/http.js +267 -0
- package/dist/cjs/setup/http.js.map +1 -0
- package/dist/cjs/setup/index.d.cts +5 -0
- package/dist/cjs/setup/index.d.ts +5 -0
- package/dist/cjs/setup/index.js +46 -0
- package/dist/cjs/setup/index.js.map +1 -0
- package/dist/cjs/setup/oauth-google.d.cts +54 -0
- package/dist/cjs/setup/oauth-google.d.ts +54 -0
- package/dist/cjs/setup/oauth-google.js +332 -0
- package/dist/cjs/setup/oauth-google.js.map +1 -0
- package/dist/cjs/setup/runtime.d.cts +12 -0
- package/dist/cjs/setup/runtime.d.ts +12 -0
- package/dist/cjs/setup/runtime.js +489 -0
- package/dist/cjs/setup/runtime.js.map +1 -0
- package/dist/cjs/setup/stdio.d.cts +7 -0
- package/dist/cjs/setup/stdio.d.ts +7 -0
- package/dist/cjs/setup/stdio.js +239 -0
- package/dist/cjs/setup/stdio.js.map +1 -0
- package/dist/cjs/types.d.cts +54 -0
- package/dist/cjs/types.d.ts +54 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/constants.d.ts +11 -0
- package/dist/esm/constants.js +14 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/email/composition/rfc822-builder.d.ts +11 -0
- package/dist/esm/email/composition/rfc822-builder.js +13 -0
- package/dist/esm/email/composition/rfc822-builder.js.map +1 -0
- package/dist/esm/email/messages/fetch-message.d.ts +24 -0
- package/dist/esm/email/messages/fetch-message.js +123 -0
- package/dist/esm/email/messages/fetch-message.js.map +1 -0
- package/dist/esm/email/messages/messages.d.ts +7 -0
- package/dist/esm/email/messages/messages.js +91 -0
- package/dist/esm/email/messages/messages.js.map +1 -0
- package/dist/esm/email/parsing/header-parsing.d.ts +1 -0
- package/dist/esm/email/parsing/header-parsing.js +1 -0
- package/dist/esm/email/parsing/header-parsing.js.map +1 -0
- package/dist/esm/email/parsing/headers-utils.d.ts +5 -0
- package/dist/esm/email/parsing/headers-utils.js +25 -0
- package/dist/esm/email/parsing/headers-utils.js.map +1 -0
- package/dist/esm/email/parsing/html-processing.d.ts +8 -0
- package/dist/esm/email/parsing/html-processing.js +39 -0
- package/dist/esm/email/parsing/html-processing.js.map +1 -0
- package/dist/esm/email/parsing/message-extraction.d.ts +2 -0
- package/dist/esm/email/parsing/message-extraction.js +3 -0
- package/dist/esm/email/parsing/message-extraction.js.map +1 -0
- package/dist/esm/email/querying/execute-query.d.ts +17 -0
- package/dist/esm/email/querying/execute-query.js +45 -0
- package/dist/esm/email/querying/execute-query.js.map +1 -0
- package/dist/esm/email/querying/pagination.d.ts +27 -0
- package/dist/esm/email/querying/pagination.js +152 -0
- package/dist/esm/email/querying/pagination.js.map +1 -0
- package/dist/esm/email/querying/query-builder.d.ts +47 -0
- package/dist/esm/email/querying/query-builder.js +306 -0
- package/dist/esm/email/querying/query-builder.js.map +1 -0
- package/dist/esm/email/querying/search-execution.d.ts +29 -0
- package/dist/esm/email/querying/search-execution.js +35 -0
- package/dist/esm/email/querying/search-execution.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.js +34 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/labels/gmail-labels.d.ts +2 -0
- package/dist/esm/labels/gmail-labels.js +43 -0
- package/dist/esm/labels/gmail-labels.js.map +1 -0
- package/dist/esm/lib/base64-encoding.d.ts +2 -0
- package/dist/esm/lib/base64-encoding.js +13 -0
- package/dist/esm/lib/base64-encoding.js.map +1 -0
- package/dist/esm/lib/create-store.d.ts +2 -0
- package/dist/esm/lib/create-store.js +6 -0
- package/dist/esm/lib/create-store.js.map +1 -0
- package/dist/esm/lib/date-conversion.d.ts +1 -0
- package/dist/esm/lib/date-conversion.js +5 -0
- package/dist/esm/lib/date-conversion.js.map +1 -0
- package/dist/esm/lib/messages-to-row.d.ts +61 -0
- package/dist/esm/lib/messages-to-row.js +188 -0
- package/dist/esm/lib/messages-to-row.js.map +1 -0
- package/dist/esm/mcp/index.d.ts +3 -0
- package/dist/esm/mcp/index.js +6 -0
- package/dist/esm/mcp/index.js.map +1 -0
- package/dist/esm/mcp/prompts/draft-email.d.ts +30 -0
- package/dist/esm/mcp/prompts/draft-email.js +37 -0
- package/dist/esm/mcp/prompts/draft-email.js.map +1 -0
- package/dist/esm/mcp/prompts/index.d.ts +2 -0
- package/dist/esm/mcp/prompts/index.js +2 -0
- package/dist/esm/mcp/prompts/index.js.map +1 -0
- package/dist/esm/mcp/prompts/query-syntax.d.ts +19 -0
- package/dist/esm/mcp/prompts/query-syntax.js +74 -0
- package/dist/esm/mcp/prompts/query-syntax.js.map +1 -0
- package/dist/esm/mcp/resources/email.d.ts +11 -0
- package/dist/esm/mcp/resources/email.js +92 -0
- package/dist/esm/mcp/resources/email.js.map +1 -0
- package/dist/esm/mcp/resources/index.d.ts +1 -0
- package/dist/esm/mcp/resources/index.js +1 -0
- package/dist/esm/mcp/resources/index.js.map +1 -0
- package/dist/esm/mcp/tools/categories-list.d.ts +58 -0
- package/dist/esm/mcp/tools/categories-list.js +124 -0
- package/dist/esm/mcp/tools/categories-list.js.map +1 -0
- package/dist/esm/mcp/tools/index.d.ts +11 -0
- package/dist/esm/mcp/tools/index.js +11 -0
- package/dist/esm/mcp/tools/index.js.map +1 -0
- package/dist/esm/mcp/tools/label-add.d.ts +61 -0
- package/dist/esm/mcp/tools/label-add.js +101 -0
- package/dist/esm/mcp/tools/label-add.js.map +1 -0
- package/dist/esm/mcp/tools/label-delete.d.ts +71 -0
- package/dist/esm/mcp/tools/label-delete.js +186 -0
- package/dist/esm/mcp/tools/label-delete.js.map +1 -0
- package/dist/esm/mcp/tools/labels-list.d.ts +75 -0
- package/dist/esm/mcp/tools/labels-list.js +122 -0
- package/dist/esm/mcp/tools/labels-list.js.map +1 -0
- package/dist/esm/mcp/tools/message-get.d.ts +146 -0
- package/dist/esm/mcp/tools/message-get.js +145 -0
- package/dist/esm/mcp/tools/message-get.js.map +1 -0
- package/dist/esm/mcp/tools/message-mark-read.d.ts +50 -0
- package/dist/esm/mcp/tools/message-mark-read.js +80 -0
- package/dist/esm/mcp/tools/message-mark-read.js.map +1 -0
- package/dist/esm/mcp/tools/message-move-to-trash.d.ts +71 -0
- package/dist/esm/mcp/tools/message-move-to-trash.js +167 -0
- package/dist/esm/mcp/tools/message-move-to-trash.js.map +1 -0
- package/dist/esm/mcp/tools/message-respond.d.ts +60 -0
- package/dist/esm/mcp/tools/message-respond.js +152 -0
- package/dist/esm/mcp/tools/message-respond.js.map +1 -0
- package/dist/esm/mcp/tools/message-search.d.ts +182 -0
- package/dist/esm/mcp/tools/message-search.js +180 -0
- package/dist/esm/mcp/tools/message-search.js.map +1 -0
- package/dist/esm/mcp/tools/message-send.d.ts +87 -0
- package/dist/esm/mcp/tools/message-send.js +115 -0
- package/dist/esm/mcp/tools/message-send.js.map +1 -0
- package/dist/esm/mcp/tools/messages-export-csv.d.ts +84 -0
- package/dist/esm/mcp/tools/messages-export-csv.js +261 -0
- package/dist/esm/mcp/tools/messages-export-csv.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/schemas/gmail-query-schema.d.ts +36 -0
- package/dist/esm/schemas/gmail-query-schema.js +72 -0
- package/dist/esm/schemas/gmail-query-schema.js.map +1 -0
- package/dist/esm/schemas/index.d.ts +1 -0
- package/dist/esm/schemas/index.js +1 -0
- package/dist/esm/schemas/index.js.map +1 -0
- package/dist/esm/setup/config.d.ts +48 -0
- package/dist/esm/setup/config.js +175 -0
- package/dist/esm/setup/config.js.map +1 -0
- package/dist/esm/setup/http.d.ts +8 -0
- package/dist/esm/setup/http.js +61 -0
- package/dist/esm/setup/http.js.map +1 -0
- package/dist/esm/setup/index.d.ts +5 -0
- package/dist/esm/setup/index.js +5 -0
- package/dist/esm/setup/index.js.map +1 -0
- package/dist/esm/setup/oauth-google.d.ts +54 -0
- package/dist/esm/setup/oauth-google.js +142 -0
- package/dist/esm/setup/oauth-google.js.map +1 -0
- package/dist/esm/setup/runtime.d.ts +12 -0
- package/dist/esm/setup/runtime.js +115 -0
- package/dist/esm/setup/runtime.js.map +1 -0
- package/dist/esm/setup/stdio.d.ts +7 -0
- package/dist/esm/setup/stdio.js +38 -0
- package/dist/esm/setup/stdio.js.map +1 -0
- package/dist/esm/types.d.ts +54 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +1 -0
- 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>;
|