gmail-mcp
Allows connecting to a Gmail account with read-only access via OAuth 2.0, including status checks, filter management, and thread preview.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gmail-mcpcheck my Gmail connection status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Gmail MCP
Lokalna, rozwijana w Pythonie usługa MCP do prywatnej pracy z Gmailem. Projekt portfolio pokazuje integrację OAuth 2.0, architekturę heksagonalną i bezpieczne przygotowanie pod analizę GenAI (OpenAI lub Claude).
Status: MVP ukończone. Usługa lokalnie odczytuje Gmail, tworzy Digesty, udostępnia FastMCP przez
stdiooraz wykonuje wyłącznie potwierdzone analizy AI.
Co działa
Lokalny flow OAuth 2.0 dla jednego aktywnego konta Gmail naraz, uruchamiany w przeglądarce; docelowo lokalne filtry są odseparowane per konto.
Wyłącznie scope
https://www.googleapis.com/auth/gmail.readonly.Polecenia do połączenia, sprawdzenia statusu i lokalnego odłączenia konta.
Token OAuth poza repozytorium, w prywatnym katalogu danych użytkownika.
Ochrona przed symlinkami dla pliku credentials i tokenu oraz ograniczone uprawnienia tokenu (
0600na systemach POSIX).Digest wątków Gmail z deduplikacją, lokalnym harmonogramem i retencją danych.
Serwer FastMCP z dokładnie trzema narzędziami: odczyt Digestu, potwierdzona analiza ad hoc oraz świadome porównanie OpenAI i Claude.
Trzyfazowe potwierdzenie (
preview→confirm→execute) przed odczytem body wiadomości lub wywołaniem AI; tokeny są krótkotrwałe, opaque i single-use.OpenAI lub Claude jako lokalnie wybrany dostawca analizy; porównanie wymaga konfiguracji obu dostawców i przekazuje im ten sam oczyszczony tekst.
Related MCP server: gmail-mcp-local
Wymagania
Python 3.12
Konto Google oraz projekt Google Cloud z włączonym Gmail API
Instalacja
git clone git@github.com:under34/mcp-gmail.git
cd mcp-gmail
uv sync --locked
cp .env.example .envUruchomienie kontroli jakości:
uv run pytest -q
uv run ruff check .Konfiguracja Google OAuth
W Google Cloud utwórz lub wybierz projekt.
Włącz Gmail API.
Skonfiguruj ekran zgody OAuth. Dla trybu testowego dodaj własny adres jako test user.
Utwórz OAuth Client ID typu Desktop app i pobierz plik JSON.
Zapisz go poza checkoutem, np.
~/secure/gmail-credentials.json.Ustaw w lokalnym
.envjego bezwzględną ścieżkę:
GMAIL_CREDENTIALS_PATH=/absolute/path/to/gmail-credentials.jsonPlik credentials musi być zwykłym plikiem, bez symlinków i poza repozytorium. Nie dodawaj go do Git.
Polecenia Gmail
# Przy braku używalnego tokenu otwiera przeglądarkę i wykonuje lokalny flow OAuth.
uv run gmail-mcp connect-gmail
# Sprawdza zapisane połączenie; nie otwiera przeglądarki.
uv run gmail-mcp gmail-status
# Usuwa wyłącznie lokalny token OAuth. Nie cofa dostępu w Google i nie zmienia maili.
uv run gmail-mcp disconnect-gmail
# Pokazuje liczbę wątków przed zapisem filtra.
uv run gmail-mcp preview-gmail-filter --query 'from:boss@example.com'
# Ponownie sprawdza i zapisuje filtr wyłącznie po jawnym potwierdzeniu.
uv run gmail-mcp set-gmail-filter --query 'label:work' --confirm
# Pokazuje filtr aktywny dla bieżącego konta i stan lokalnego dostawcy AI.
uv run gmail-mcp gmail-filter-status
uv run gmail-mcp ai-provider-status
# Uruchamia ten sam Digest, którego wywołuje lokalny cron.
uv run gmail-mcp run-daily-digest
# Usuwa lokalne wyniki starsze niż 30 dni.
uv run gmail-mcp cleanup-local-data
# Nieodwracalnie usuwa lokalne wyniki aktywnego konta; opcjonalnie także token OAuth.
uv run gmail-mcp delete-local-data --confirm --include-oauth-token
# Uruchamia lokalny serwer MCP wyłącznie przez stdio.
uv run gmail-mcp-serverPo poprawnym połączeniu pierwsze polecenie wyświetli adres połączonego konta.
Jeżeli token jest nieważny lub cofnięty, narzędzie zwróci bezpieczny komunikat z
instrukcją ponownego połączenia. disconnect-gmail działa także wtedy, gdy
oryginalny plik credentials nie jest już dostępny.
Zmienne środowiskowe
Zmienna | Cel |
| Wymagany wyłącznie dla |
| Opcjonalne lokalne nadpisanie katalogu danych; musi znajdować się poza checkoutem. |
| Dostawca podsumowań: |
| Klucz wymagany, gdy wybrano |
| Klucz wymagany, gdy wybrano |
|
|
| Godzina lokalnego crona w formacie |
| Opcjonalna strefa IANA, np. |
Zmienne procesu mają pierwszeństwo przed .env. OAuth nie wymaga żadnego klucza
OpenAI ani Anthropic. Analiza ad hoc wymaga klucza wybranego dostawcy, a
porównanie modeli wymaga obu kluczy.
Lokalny harmonogram
Aplikacja nie zmienia systemowego crontaba. Dodaj lokalnie wpis uruchamiający
CLI zgodnie z DIGEST_SCHEDULE_TIME, np. dla 08:00: 0 8 * * * cd /ścieżka/do/mcp-gmail && uv run gmail-mcp run-daily-digest --scheduled.
Cron powinien mieć dostęp do tych samych zmiennych środowiskowych lub lokalnego
pliku .env; zmiana dostawcy albo harmonogramu działa przy następnym uruchomieniu.
Przed każdym rzeczywistym Digestem aplikacja wykonuje lokalną retencję wyników
starszych niż 30 dni.
Lokalny serwer MCP
uv run gmail-mcp-server uruchamia serwer wyłącznie przez transport stdio.
Nie otwiera portu HTTP ani nie wykonuje operacji modyfikujących Gmaila.
Narzędzie | Działanie |
| Zwraca ostatni lokalny Digest aktywnego konta. |
| Wykonuje potwierdzoną analizę wątków z Aktywnego Filtru lub jednorazowego query. |
| Porównuje OpenAI i Claude dla jednego wątku z Aktywnego Filtru. |
Narzędzia analityczne działają w trzech fazach: preview pokazuje wyłącznie
metadata, confirm pobiera i hashuje oczyszczone body po jawnej zgodzie, a execute
wywołuje AI przy użyciu jednorazowego tokenu. Wszystkie odpowiedzi stosują
envelope status, data, reason, next_action.
Bezpieczeństwo i prywatność
Aplikacja nie wysyła, nie usuwa ani nie modyfikuje wiadomości Gmail.
Nie loguje tokenów, kodów OAuth, treści maili ani załączników.
Token, przyszła baza SQLite i digesty pozostają w lokalnym katalogu danych użytkownika (
platformdirs), poza checkoutem.disconnect-gmailusuwa tylko lokalny token. Jeśli chcesz cofnąć dostęp po stronie Google, zrób to w ustawieniach bezpieczeństwa konta Google.Retencja i
delete-local-datausuwają wyłącznie lokalne dane aplikacji; nie zmieniają wiadomości, etykiet ani innych danych w Gmailu. Ręczne usunięcie zachowuje aktywny filtr i plik credentials OAuth.Usunięcie danych blokuje nowe potwierdzone operacje i bezpiecznie synchronizuje się z już aktywnym odczytem; body, prompty i klucze API nie są zapisywane w SQLite.
Architektura i roadmapa
Kod jest podzielony na warstwy domain, application, adapters i bootstrap.
Szczegóły decyzji oraz plan prac znajdują się w
_bmad-output/planning-artifacts.
MVP obejmuje Epiki 1–3 i jest ukończone. Następny etap to zaplanowanie Epiku 4 na podstawie potrzeb użytkowników lub rozszerzeń portfolio.
Licencja
Projekt hobbystyczny/portfolio. Licencja zostanie dodana przed publiczną dystrybucją.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/under34/mcp-gmail'
If you have feedback or need assistance with the MCP directory API, please join our Discord server