MCP google gmail agent

MCP server for the Gmail API — search, read and send email, manage drafts, labels and the trash.

by A1-x-Tech·MIT license·★ 0 Stars on the repo·GitHub ↗

Inside this agent

README.md · the author's own words
# <img src="./assets/a1-logo.svg" alt="A1" width="40"> Gmail MCP

**English** | [Русский](./README.ru.md)

[![npm](https://img.shields.io/npm/v/mcp-google-gmail)](https://www.npmjs.com/package/mcp-google-gmail)
[![Glama](https://glama.ai/mcp/servers/A1-x-Tech/mcp-google-gmail/badges/score.svg)](https://glama.ai/mcp/servers/A1-x-Tech/mcp-google-gmai…
[![CI](https://github.com/A1-x-Tech/mcp-google-gmail/actions/workflows/ci.yml/badge.svg)](https://github.com/A1-x-Tech/mcp-google-gmail/act…
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)

**A1 Gmail MCP** lets an AI app work with your Gmail mailbox in plain language. Search and read mail, prepare replies as drafts, send them…

It uses the Gmail API with your Google account. It distinguishes a draft you can still edit from a sent email that cannot be recalled, and…

- **24 tools.** Search and read messages and threads, send email directly or through drafts, manage the draft lifecycle, labels and the tra…

Word-for-word excerpt, not a result. Read the full README.md ↓

Files of MCP google gmail

A1-x-Tech/main1 file
README.md
Show the full text296 lines

A1 Gmail MCP

English | Русский

npm Glama CI License: MIT

A1 Gmail MCP lets an AI app work with your Gmail mailbox in plain language. Search and read mail, prepare replies as drafts, send them when you are ready, keep labels tidy and use the trash instead of permanent deletion.

It uses the Gmail API with your Google account. It distinguishes a draft you can still edit from a sent email that cannot be recalled, and makes the limits of the Gmail API explicit instead of implying that every mail task is reversible.

  • 24 tools. Search and read messages and threads, send email directly or through drafts, manage the draft lifecycle, labels and the trash.
  • Connects from the conversation. Say "connect Gmail": the server walks you through the OAuth client, catches Google's redirect on 127.0.0.1 with PKCE and keeps the tokens itself — no config files, no restart.
  • Send deliberately. The draft → review → send path is first-class; sending is marked destructive, and the server never re-sends after an ambiguous failure — an email cannot be unsent.
  • The trash is the safety net. Removing mail goes through the reversible trash (about 30 days); there is deliberately no permanent message delete tool.
  • Bounded reading. Decoded bodies are truncated at an explicit limit and attachments come back as metadata, so a long newsletter cannot silently flood the conversation.
  • Minimal Google scope. It uses gmail.modify only — no permanent deletion and no access to Gmail settings.

Start with a read-only question:

Show my unread emails from the last week and tell me which ones need a reply.

Connect the server · Explore use cases · Open technical documentation


See it work in a minute

You: What is unread in my inbox from this week about the Acme contract?

Assistant: Searches with Gmail query syntax and shows senders, subjects, dates and snippets. Nothing changes.

You: Draft a reply to the latest one: we send the signed copy on Friday.

Assistant: Creates a draft in the same thread and shows it for review. Nothing is sent.

You: Send it.

Assistant: Sends the draft. Sending is a separate, explicitly destructive step, so your AI app can ask for confirmation first.

Contents

Quick start

You need Node.js 20+ and a Google account. Credentials are not required at install time — the server connects from the conversation.

  1. Add the server to your AI app.
  2. Say "connect Gmail": the assistant walks you through creating the OAuth client and approving access without editing config files.
  3. Ask the read-only question above.
Codex

In the app: open Settings → MCP servers, select Add server, choose STDIO, enter the command npx -y mcp-google-gmail@latest and environment variables GOOGLE_GMAIL_CLIENT_ID, GOOGLE_GMAIL_CLIENT_SECRET, GOOGLE_GMAIL_REFRESH_TOKEN, then select Save and Restart.

From the command line:

codex mcp add google-gmail \
  -- npx -y mcp-google-gmail@latest
codex mcp list

Codex MCP documentation

Claude Code
claude mcp add \
  --transport stdio --scope user google-gmail \
  -- npx -y mcp-google-gmail@latest
claude mcp list

Claude Code MCP documentation

Claude Desktop

The current official path is Settings → Extensions. For a custom desktop extension, open Advanced settings → Extension Developer → Install Extension…, select a .mcpb file and follow the prompts.

This repository currently publishes an npm stdio package and does not contain a .mcpb bundle. For Claude Desktop builds that still support local configuration, use the following JSON stdio configuration as a fallback:

{
  "mcpServers": {
    "google-gmail": {
      "command": "npx",
      "args": ["-y", "mcp-google-gmail@latest"]
    }
  }
}

In those builds, save it to ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows.

Claude Desktop MCP documentation

Cursor

Add this to ~/.cursor/mcp.json on macOS/Linux or %USERPROFILE%\.cursor\mcp.json on Windows:

{
  "mcpServers": {
    "google-gmail": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-google-gmail@latest"]
    }
  }
}

Cursor MCP documentation

VS Code

Run MCP: Open User Configuration and add:

{
  "servers": {
    "google-gmail": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-google-gmail@latest"]
    }
  }
}

Check it with MCP: List Servers.

VS Code MCP documentation

What you can ask it to do

Triage the inbox
  • Show unread messages from the last seven days and group them by sender.
  • Find the conversation with Acme about the contract and summarize it, oldest to newest.
  • Which messages have attachments waiting for me? Show subjects and file names.
Write and send email
  • Draft a reply in this thread saying the signed copy goes out on Friday.
  • Show me the draft, tighten the wording, then send it.
  • Send a short status email to the team, with the manager in CC.
Keep the mailbox organized
  • Create a label Receipts/2026 and apply it to the matching messages.
  • Mark this week's newsletters as read and archive them.
  • Move that thread to the trash — and restore it if I change my mind.

How mail changes

  1. The safe path to sending is a draft: create_draft prepares the email, get_draft shows it for review, send_draft sends it. send_message skips the draft and sends immediately.
  2. A sent email is externally irreversible. After a timeout or a 5xx error the server does not re-send; search in:sent before trying again, because a replayed send would be a double-sent email.
  3. Removing a message or thread means trashing it. manage_trash is reversible for about 30 days; there is deliberately no permanent-delete tool.
  4. Drafts are the exception: update_draft replaces the whole draft (the API has no partial edit) and delete_draft is permanent, because drafts skip the trash.

Every call works on one mailbox — the account that granted the token. Decoded bodies are truncated at a configurable limit with explicit flags, and attachments come back as metadata only; attachment content is fetched through raw_request deliberately.

What can change

Operation What happens Confirmation boundary
Search and read messages, threads, drafts, labels, the profile Reads mailbox data No change
Create or update a draft Prepares or replaces an unsent email Changes the mailbox
Change read, starred or archived state, apply or strip labels Changes how mail is organized Changes the mailbox
Create or rename a label Changes the label vocabulary Changes the mailbox
Trash or untrash a message or thread Moves mail to or from the trash; reversible for ~30 days Destructive
Send an email or a draft Delivers mail to real recipients; cannot be unsent Destructive
Delete a draft or a label Removes it permanently, skipping the trash Destructive
Raw API request Can call API methods without a dedicated tool Potentially destructive

The AI client controls confirmation prompts. The server marks reads, writes and destructive tools so the client can distinguish an inspection from a live change.

Getting access

Google Gmail requires OAuth 2.0; an API key is not enough. There are two ways in, and the first one needs no configuration files.

Say "connect Gmail" and the assistant runs the flow with you:

  1. setup_instructions prints the checklist: create or select a Google Cloud project, enable Gmail API, configure the consent screen and create a Desktop app OAuth client.
  2. Download that client's JSON ("Download JSON") and give the assistant its path — set_client stores it owner-only. The secret never goes through the conversation.
  3. start_login returns a Google consent link. Open it on this machine and approve; the code comes back to a one-shot listener on 127.0.0.1 (PKCE), never through the chat.
  4. finish_login exchanges the code and saves the tokens to ~/.config/mcp-google-gmail/credentials.json (mode 0600) and verifies them with a real Gmail API call — so an API that is still switched off is caught right there.

The tokens are re-read on every call, so the connection works immediately — no restart of the AI app. auth_status shows what is connected, logout revokes and deletes it.

Environment variables (CI, unattended installs)
  1. Create or select a Google Cloud project and enable the Gmail API.

  2. Configure the OAuth consent screen and create a Desktop app OAuth client.

  3. Authorize the Google account whose mailbox you want to connect — every call works on that one mailbox. The OAuth 2.0 Playground can obtain the refresh token when Use your own OAuth credentials is enabled.

  4. Request the scope:

    https://www.googleapis.com/auth/gmail.modify
    

    It covers search, reading, sending, drafts, labels and the trash — but not permanent deletion and not Gmail settings. Permanent deletion through raw_request additionally requires the full https://mail.google.com/ scope.

Testing-mode OAuth refresh tokens can expire after seven days. Publish the OAuth app, or use an Internal app in a Workspace domain, when you need long-lived access. Treat the client secret and refresh token as passwords.

Configuration

Every variable is optional — with none of them the server connects from the chat.

Variable Required Description
GOOGLE_GMAIL_CLIENT_ID No* OAuth client ID.
GOOGLE_GMAIL_CLIENT_SECRET No* OAuth client secret.
GOOGLE_GMAIL_REFRESH_TOKEN No* OAuth refresh token.
GOOGLE_GMAIL_ACCESS_TOKEN No* Short-lived alternative to the OAuth trio (about 1 hour).
GOOGLE_GMAIL_OAUTH_PORT No Fixed loopback port for the in-chat login; useful over SSH port forwarding.
GOOGLE_GMAIL_API_BASE No Gmail API base URL override.
GOOGLE_GMAIL_TIMEOUT_MS No Per-request timeout; default 60000 ms.
GOOGLE_GMAIL_MAX_RETRIES No Temporary-error retries; default 3.

* Provide either the OAuth trio or an access token.

Data, limits and background work

  • Requests go to Gmail. The local server refreshes Google OAuth tokens and calls the Gmail API. Its anonymous telemetry contains an installation ID, package version, AI client and platform versions, and tool names — never OAuth tokens, mail content, tool arguments or prompts. Set ASKADS_TELEMETRY=0 to opt out.
  • Google meters quota units. Gmail allows roughly 250 quota units per second per user; a send costs 100 units, a typical read 5. Consumer accounts can send about 500 emails a day, Workspace accounts about 2,000. On 429, the server uses backoff; reads also retry after network and 5xx errors, while sends and other writes are never replayed after an uncertain failure.
  • There is no background polling. The server runs only when called. If your AI app supports scheduled tasks, it can check the inbox periodically; raw_request can also reach history.list for incremental sync.

Technical documentation

Support

Found a bug or need a scenario? Create an issue or write in Telegram.


Две Моны дают пять

You made it to the end!

1# <img src="./assets/a1-logo.svg" alt="A1" width="40"> Gmail MCP
2 
3**English** | [Русский](./README.ru.md)
4 
5[![npm](https://img.shields.io/npm/v/mcp-google-gmail)](https://www.npmjs.com/package/mcp-google-gmail)
6[![Glama](https://glama.ai/mcp/servers/A1-x-Tech/mcp-google-gmail/badges/score.svg)](https://glama.ai/mcp/servers/A1-x-Tech/mcp-google-gmail)
7[![CI](https://github.com/A1-x-Tech/mcp-google-gmail/actions/workflows/ci.yml/badge.svg)](https://github.com/A1-x-Tech/mcp-google-gmail/actions/workflows/ci.yml)
8[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
9 
10**A1 Gmail MCP** lets an AI app work with your Gmail mailbox in plain language. Search and read mail, prepare replies as drafts, send them when you are ready, keep labels tidy and use the trash instead of permanent deletion.
11 
12It uses the Gmail API with your Google account. It distinguishes a draft you can still edit from a sent email that cannot be recalled, and makes the limits of the Gmail API explicit instead of implying that every mail task is reversible.
13 
14- **24 tools.** Search and read messages and threads, send email directly or through drafts, manage the draft lifecycle, labels and the trash.
15- **Connects from the conversation.** Say "connect Gmail": the server walks you through the OAuth client, catches Google's redirect on `127.0.0.1` with PKCE and keeps the tokens itself — no config files, no restart.
16- **Send deliberately.** The draft → review → send path is first-class; sending is marked destructive, and the server never re-sends after an ambiguous failure — an email cannot be unsent.
17- **The trash is the safety net.** Removing mail goes through the reversible trash (about 30 days); there is deliberately no permanent message delete tool.
18- **Bounded reading.** Decoded bodies are truncated at an explicit limit and attachments come back as metadata, so a long newsletter cannot silently flood the conversation.
19- **Minimal Google scope.** It uses `gmail.modify` only — no permanent deletion and no access to Gmail settings.
20 
21Start with a read-only question:
22 
23> Show my unread emails from the last week and tell me which ones need a reply.
24 
25[Connect the server](#quick-start) · [Explore use cases](#what-you-can-ask-it-to-do) · [Open technical documentation](#technical-documentation)
26 
27---
28 
29## See it work in a minute
30 
31> **You:** What is unread in my inbox from this week about the Acme contract?
32>
33> **Assistant:** Searches with Gmail query syntax and shows senders, subjects, dates and snippets. Nothing changes.
34>
35> **You:** Draft a reply to the latest one: we send the signed copy on Friday.
36>
37> **Assistant:** Creates a draft in the same thread and shows it for review. Nothing is sent.
38>
39> **You:** Send it.
40>
41> **Assistant:** Sends the draft. Sending is a separate, explicitly destructive step, so your AI app can ask for confirmation first.
42 
43## Contents
44 
45- [Quick start](#quick-start)
46- [What you can ask it to do](#what-you-can-ask-it-to-do)
47- [How mail changes](#how-mail-changes)
48- [What can change](#what-can-change)
49- [Getting access](#getting-access)
50- [Configuration](#configuration)
51- [Data, limits and background work](#data-limits-and-background-work)
52- [Technical documentation](#technical-documentation)
53- [Support](#support)
54 
55## Quick start
56 
57You need Node.js 20+ and a Google account. Credentials are not required at install time — the server connects from the conversation.
58 
591. Add the server to your AI app.
602. Say "connect Gmail": the assistant walks you through [creating the OAuth client and approving access](#getting-access) without editing config files.
613. Ask the read-only question above.
62 
63<details open>
64<summary><strong>Codex</strong></summary>
65 
66<br>
67 
68**In the app:** open **Settings → MCP servers**, select **Add server**, choose **STDIO**, enter the command `npx -y mcp-google-gmail@latest` and environment variables `GOOGLE_GMAIL_CLIENT_ID`, `GOOGLE_GMAIL_CLIENT_SECRET`, `GOOGLE_GMAIL_REFRESH_TOKEN`, then select **Save** and **Restart**.
69 
70**From the command line:**
71 
72```bash
73codex mcp add google-gmail \
74 -- npx -y mcp-google-gmail@latest
75```
76 
77```bash
78codex mcp list
79```
80 
81[Codex MCP documentation](https://learn.chatgpt.com/docs/extend/mcp?surface=cli)
82 
83</details>
84 
85<details>
86<summary><strong>Claude Code</strong></summary>
87 
88<br>
89 
90```bash
91claude mcp add \
92 --transport stdio --scope user google-gmail \
93 -- npx -y mcp-google-gmail@latest
94```
95 
96```bash
97claude mcp list
98```
99 
100[Claude Code MCP documentation](https://code.claude.com/docs/en/mcp)
101 
102</details>
103 
104<details>
105<summary><strong>Claude Desktop</strong></summary>
106 
107<br>
108 
109The current official path is **Settings → Extensions**. For a custom desktop extension, open **Advanced settings → Extension Developer → Install Extension…**, select a `.mcpb` file and follow the prompts.
110 
111This repository currently publishes an npm stdio package and does not contain a `.mcpb` bundle. For Claude Desktop builds that still support local configuration, use the following JSON stdio configuration as a fallback:
112 
113```json
114{
115 "mcpServers": {
116 "google-gmail": {
117 "command": "npx",
118 "args": ["-y", "mcp-google-gmail@latest"]
119 }
120 }
121}
122```
123 
124In those builds, save it to `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS or `%APPDATA%\Claude\claude_desktop_config.json` on Windows.
125 
126[Claude Desktop MCP documentation](https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop)
127 
128</details>
129 
130<details>
131<summary><strong>Cursor</strong></summary>
132 
133<br>
134 
135Add this to `~/.cursor/mcp.json` on macOS/Linux or `%USERPROFILE%\.cursor\mcp.json` on Windows:
136 
137```json
138{
139 "mcpServers": {
140 "google-gmail": {
141 "type": "stdio",
142 "command": "npx",
143 "args": ["-y", "mcp-google-gmail@latest"]
144 }
145 }
146}
147```
148 
149[Cursor MCP documentation](https://cursor.com/docs/mcp)
150 
151</details>
152 
153<details>
154<summary><strong>VS Code</strong></summary>
155 
156<br>
157 
158Run **MCP: Open User Configuration** and add:
159 
160```json
161{
162 "servers": {
163 "google-gmail": {
164 "type": "stdio",
165 "command": "npx",
166 "args": ["-y", "mcp-google-gmail@latest"]
167 }
168 }
169}
170```
171 
172Check it with **MCP: List Servers**.
173 
174[VS Code MCP documentation](https://code.visualstudio.com/docs/agent-customization/mcp-servers)
175 
176</details>
177 
178## What you can ask it to do
179 
180### Triage the inbox
181 
182- Show unread messages from the last seven days and group them by sender.
183- Find the conversation with Acme about the contract and summarize it, oldest to newest.
184- Which messages have attachments waiting for me? Show subjects and file names.
185 
186### Write and send email
187 
188- Draft a reply in this thread saying the signed copy goes out on Friday.
189- Show me the draft, tighten the wording, then send it.
190- Send a short status email to the team, with the manager in CC.
191 
192### Keep the mailbox organized
193 
194- Create a label `Receipts/2026` and apply it to the matching messages.
195- Mark this week's newsletters as read and archive them.
196- Move that thread to the trash — and restore it if I change my mind.
197 
198## How mail changes
199 
2001. The safe path to sending is a **draft**: `create_draft` prepares the email, `get_draft` shows it for review, `send_draft` sends it. `send_message` skips the draft and sends immediately.
2012. A sent email is externally irreversible. After a timeout or a `5xx` error the server does not re-send; search `in:sent` before trying again, because a replayed send would be a double-sent email.
2023. Removing a message or thread means trashing it. `manage_trash` is reversible for about 30 days; there is deliberately no permanent-delete tool.
2034. Drafts are the exception: `update_draft` replaces the whole draft (the API has no partial edit) and `delete_draft` is permanent, because drafts skip the trash.
204 
205Every call works on one mailbox — the account that granted the token. Decoded bodies are truncated at a configurable limit with explicit flags, and attachments come back as metadata only; attachment content is fetched through `raw_request` deliberately.
206 
207## What can change
208 
209| Operation | What happens | Confirmation boundary |
210|---|---|---|
211| Search and read messages, threads, drafts, labels, the profile | Reads mailbox data | No change |
212| Create or update a draft | Prepares or replaces an unsent email | Changes the mailbox |
213| Change read, starred or archived state, apply or strip labels | Changes how mail is organized | Changes the mailbox |
214| Create or rename a label | Changes the label vocabulary | Changes the mailbox |
215| Trash or untrash a message or thread | Moves mail to or from the trash; reversible for ~30 days | Destructive |
216| Send an email or a draft | Delivers mail to real recipients; cannot be unsent | Destructive |
217| Delete a draft or a label | Removes it permanently, skipping the trash | Destructive |
218| Raw API request | Can call API methods without a dedicated tool | Potentially destructive |
219 
220The AI client controls confirmation prompts. The server marks reads, writes and destructive tools so the client can distinguish an inspection from a live change.
221 
222## Getting access
223 
224Google Gmail requires OAuth 2.0; an API key is not enough. There are two ways in, and the first one needs no configuration files.
225 
226### Connect from the chat (recommended)
227 
228Say "connect Gmail" and the assistant runs the flow with you:
229 
2301. `setup_instructions` prints the checklist: create or select a Google Cloud project, enable **Gmail API**, configure the consent screen and create a **Desktop app** OAuth client.
2312. Download that client's JSON ("Download JSON") and give the assistant its **path** — `set_client` stores it owner-only. The secret never goes through the conversation.
2323. `start_login` returns a Google consent link. Open it **on this machine** and approve; the code comes back to a one-shot listener on `127.0.0.1` (PKCE), never through the chat.
2334. `finish_login` exchanges the code and saves the tokens to `~/.config/mcp-google-gmail/credentials.json` (mode 0600) and verifies them with a real Gmail API call — so an API that is still switched off is caught right there.
234 
235The tokens are re-read on every call, so the connection works immediately — no restart of the AI app. `auth_status` shows what is connected, `logout` revokes and deletes it.
236 
237### Environment variables (CI, unattended installs)
238 
2391. Create or select a Google Cloud project and enable the **Gmail API**.
2402. Configure the OAuth consent screen and create a **Desktop app** OAuth client.
2413. Authorize the Google account whose mailbox you want to connect — every call works on that one mailbox. The [OAuth 2.0 Playground](https://developers.google.com/oauthplayground) can obtain the refresh token when **Use your own OAuth credentials** is enabled.
2424. Request the scope:
243 
244 ```text
245 https://www.googleapis.com/auth/gmail.modify
246 ```
247 
248 It covers search, reading, sending, drafts, labels and the trash — but not permanent deletion and not Gmail settings. Permanent deletion through `raw_request` additionally requires the full `https://mail.google.com/` scope.
249 
250Testing-mode OAuth refresh tokens can expire after seven days. Publish the OAuth app, or use an Internal app in a Workspace domain, when you need long-lived access. Treat the client secret and refresh token as passwords.
251 
252## Configuration
253 
254Every variable is optional — with none of them the server connects [from the chat](#connect-from-the-chat-recommended).
255 
256| Variable | Required | Description |
257|---|---|---|
258| `GOOGLE_GMAIL_CLIENT_ID` | No* | OAuth client ID. |
259| `GOOGLE_GMAIL_CLIENT_SECRET` | No* | OAuth client secret. |
260| `GOOGLE_GMAIL_REFRESH_TOKEN` | No* | OAuth refresh token. |
261| `GOOGLE_GMAIL_ACCESS_TOKEN` | No* | Short-lived alternative to the OAuth trio (about 1 hour). |
262| `GOOGLE_GMAIL_OAUTH_PORT` | No | Fixed loopback port for the in-chat login; useful over SSH port forwarding. |
263| `GOOGLE_GMAIL_API_BASE` | No | Gmail API base URL override. |
264| `GOOGLE_GMAIL_TIMEOUT_MS` | No | Per-request timeout; default `60000` ms. |
265| `GOOGLE_GMAIL_MAX_RETRIES` | No | Temporary-error retries; default `3`. |
266 
267\* Provide either the OAuth trio or an access token.
268 
269## Data, limits and background work
270 
271- **Requests go to Gmail.** The local server refreshes Google OAuth tokens and calls the Gmail API. Its anonymous telemetry contains an installation ID, package version, AI client and platform versions, and tool names — never OAuth tokens, mail content, tool arguments or prompts. Set `ASKADS_TELEMETRY=0` to opt out.
272- **Google meters quota units.** Gmail allows roughly 250 quota units per second per user; a send costs 100 units, a typical read 5. Consumer accounts can send about 500 emails a day, Workspace accounts about 2,000. On `429`, the server uses backoff; reads also retry after network and `5xx` errors, while sends and other writes are never replayed after an uncertain failure.
273- **There is no background polling.** The server runs only when called. If your AI app supports scheduled tasks, it can check the inbox periodically; `raw_request` can also reach `history.list` for incremental sync.
274 
275## Technical documentation
276 
277- [MCP capability catalog](./docs/capabilities/index.md) — task-oriented pages for every tool.
278- [All tools and inputs](./docs/TOOLS.md)
279- [Development documentation](./docs/DEVELOPMENT.md)
280- [Publishing documentation](./docs/PUBLISHING.md)
281- [Gmail API reference](https://developers.google.com/gmail/api)
282 
283## Support
284 
285Found a bug or need a scenario? [Create an issue](https://github.com/A1-x-Tech/mcp-google-gmail/issues) or write in [Telegram](https://t.me/a1_mcp).
286 
287<br>
288 
289<p align="center">
290 <img src="https://github.com/ztemerbekov/a1-yandex-kit-skills/raw/main/assets/images/mona-hifive-yandex-kit-warm.gif" alt="Две Моны дают пять" width="256">
291</p>
292 
293<p align="center">
294 You made it to the end!
295</p>
296 

Discussion

Alternatives