gmail-multi-mcp-server
gmail-multi-mcp-server
Ein MCP-Server, der Claude mit mehreren Gmail-Konten gleichzeitig verbindet und dieselbe Tool-Oberfl?che w?e der integrierte Gmail-Konnektor bietet. Jedes Tool akzeptiert ein zustzliches account-Argument, das angibt, auf welches Postfach zugegriffen werden soll – das ist der einzige strukturelle Unterschied zum Ein-Postfach-Konnektor.
"Check my work inbox for anything from the lender, and draft the reply from my personal account."Warum es das gibt
Der integrierte Gmail-Konnektor autorisiert ein Postfach. Wenn du getrennte Konten betreibst – Arbeit, privat, einen Firmenalias – musst du st?ndig wechseln. Dieser Server speichert Anmeldedaten f?r so viele Gmail-Konten, wie du autorisierst, und leitet jeden Aufruf an das von dir genannte weiter.
Related MCP server: multiGmailMCP
Voraussetzungen
Node.js 20 oder neuer
Ein Google-Cloud-Projekt mit aktivierter Gmail-API und einem OAuth-Client vom Typ Desktop-App
1. Google-OAuth-Client erstellen
Öffne die Google Cloud Console und w?hle ein Projekt aus oder erstelle eines.
APIs & Dienste → Bibliothek → aktiviere die Gmail-API.
APIs & Dienste → OAuth-Zustimmungsbildschirm → konfiguriere ihn. Solange sich die App im Status Test befindet, füge unter Testnutzer jede Gmail-Adresse hinzu, die du verbinden möchtest.
APIs & Dienste → Anmeldedaten → Anmeldedaten erstellen → OAuth-Client-ID → als Anwendungstyp Desktop-App. Lade die JSON herunter.
Desktop-App-Clients erlauben Loopback-Umleitungen auf jedem beliebigen Port, was der add-account-Ablauf nutzt.
2. Installieren und Erstellen
git clone <this repo>
cd Gmail-MCP
npm install
npm run build3. Server auf deinen OAuth-Client ausrichten
Wähle eine Option:
# Option A — save the downloaded JSON where the server looks by default
mkdir -p ~/.gmail-mcp && cp ~/Downloads/client_secret_*.json ~/.gmail-mcp/credentials.json
# Option B — point at it explicitly
export GMAIL_MCP_CREDENTIALS=/path/to/client_secret.json
# Option C — pass the values directly
export GMAIL_MCP_CLIENT_ID=...apps.googleusercontent.com
export GMAIL_MCP_CLIENT_SECRET=...4. Jedes Postfach autorisieren
Einmal pro Gmail-Konto ausführen:
node dist/index.js add-account --alias work
node dist/index.js add-account --alias personal
node dist/index.js list-accountsJeder Durchlauf gibt eine Google-Zustimmungs-URL aus, wartet auf einem lokalen Loopback-Port auf die Weiterleitung und speichert das resultierende Refresh-Token. Auf einem headless-Rechner füge --manual hinzu und füge die weitergeleitete URL wieder ein.
Konten, die w?hrend des laufenden Servers hinzugefügt werden, werden automatisch ?bernommen – ein Neustart ist nicht erforderlich.
5. Mit Claude verbinden
Claude Code
claude mcp add gmail-multi -- node /absolute/path/to/Gmail-MCP/dist/index.jsClaude Desktop – in claude_desktop_config.json einfügen:
{
"mcpServers": {
"gmail-multi": {
"command": "node",
"args": ["/absolute/path/to/Gmail-MCP/dist/index.js"],
"env": {
"GMAIL_MCP_CREDENTIALS": "/absolute/path/to/client_secret.json"
}
}
}
}Kontoauswahl
Jedes Tool außer list_accounts akzeptiert account. Die Zuordnung erfolgt in dieser Reihenfolge:
die vollständige E-Mail-Adresse –
mikael@example.comden beim
add-account-Aufruf festgelegten Alias –workden lokalen Teil vor
@–mikaelein beliebiges eindeutiges Pr?fix
account ist optional, wenn nur ein Postfach konfiguriert ist oder wenn GMAIL_MCP_DEFAULT_ACCOUNT gesetzt ist. Andernfalls ist es erforderlich; die Fehlermeldung listet auf, was verfügbar ist.
IDs gelten pro Postfach. Eine Nachrichten-, Thread-, Entwurfs- oder Label-ID aus einem Konto ist in einem anderen bedeutungslos. Eine „not found“-Fehlermeldung bedeutet in der Regel, dass das falsche account übergeben wurde.
Tools
35 Tools – die Tool-Oberfl?che des Konnektors plus zwei für mehrere Konten.
Bereich | Tools |
Konten |
|
Threads |
|
Nachrichten |
|
Senden |
|
Entwürfe |
|
Labels |
|
Die Toolnamen entsprechen bewusst denen des Gmail-Konnektors, damit Prompts und Gewohnheiten übernommen werden können. MCP-Clients versehen Tools mit einem Namensraum pro Server, sodass beide gleichzeitig ohne Kollision aktiviert werden können.
Unterschiede zum integrierten Konnektor
Alles unten Genannte ist additiv – nichts, was der Konnektor tut, verhält sich hier anders.
accountbei jedem Tool, zustzlichlist_accountsundget_profile.response_format(markdown|json) bei jedem Tool. Markdown ist die Standardeinststellung und bleibt kompakt; die vollst?ndige strukturierte Nutzlast wird in jedem Fall alsstructuredContentzur?ckgegeben.delete_draftundget_message_attachment, die der Konnektor referenziert, aber nicht bereitstellt.replyakzeptiertquoteOriginal(Standardfalse), um das Original als zitierten Block anzuhängen.forwardakzeptiertincludeAttachments(Standardtrue); setze es auffalse, um große Dateien auszulassen.get_message_attachmentakzeptiertsavePath, um eine Datei auf die Festplatte zu schreiben, anstatt base64 einzubetten.Antworten sind auf 25.000 Zeichen begrenzt; dabei werden zuerst paginierte Listen verkleinert, und es wird genau angegeben, was entfernt wurde und wie der Rest abgerufen werden kann.
Wissenswertes Verhalten
search_threadsgibt eine Vorschau der ältesten Nachrichten jedes Threads zur?ck (~5), wie der Konnektor. Rufeget_threadauf, bevor du etwas ?ber aktuelle oder ungelesene E-Mails beantwortest.Entwürfe sind von
search_threadsausgeschlossen, sofern die Abfrage Entwürfe erw?hnt. Verwendelist_drafts.Labels werden über die ID angesprochen, nicht über den Anzeigenamen. Rufe zuerst
list_labelsauf.DRAFTundSENTsind schreibgeschützt; das Hinzufügen vonTRASH/SPAMwird an dieapply_sensitive_*-Tools weitergeleitet, sodass zerstörerische Aktionen immer explizit benannt werden.update_draftführt Felder zusammen, aber Anhänge werden ersetzt, nicht zusammengeführt – die Antwort berichtet, wie viele verworfen wurden.replysetztIn-Reply-ToundReferences, damit Clients Threads korrekt zuordnen, und adressiert die Antwort niemals an das autorisierte Postfach selbst.
Sicherheit
Refresh-Tokens liegen in
~/.gmail-mcp/accounts.json, das atomar mit0600in einem0700-Verzeichnis geschrieben wird. Jeder mit Lesezugriff auf diese Datei hat vollständigen Zugriff auf die Postf?cher.Der OAuth-Ablauf validiert den
state-Parameter und lauscht nur auf127.0.0.1.remove-accountlöscht das lokale Token. Um den Zugriff vollständig zu widerrufen, entferne die App außerdem unter myaccount.google.com/permissions.Die erteilten Berechtigungen erlauben das Lesen, Senden und Löschen von E-Mails.
send_message,replyundforwardsenden sofort – die Tool-Beschreibungen weisen das Modell an,create_draftzu bevorzugen, wenn der Benutzer nicht eindeutig darum gebeten hat, dass E-Mails versendet werden.
Entwicklung
npm run build # compile TypeScript to dist/
npm test # build, then unit tests + stdio smoke test
npm run test:unit # MIME, reply addressing, parsing, truncation — no network
npm run test:smoke # boots the server, checks all 35 tools register
npm run inspect # open the MCP Inspector against the serversrc/
index.ts CLI entry point and server bootstrap
constants.ts scopes, limits, paths
types.ts normalized message/thread/draft shapes
auth/ token store, OAuth flow, account registry
schemas/common.ts shared Zod fields (account, formats, pagination, colors)
services/ Gmail parsing, MIME building, formatting, errors
tools/ tool registration by domainFehlerbehebung
Symptom | Lösung |
„Keine Gmail-Konten autorisiert“ | Führe |
„Google hat kein Refresh-Token zur?ckgegeben“ | Widerrufe die App unter myaccount.google.com/permissions und führe dann |
„Konto ‚x‘ ist mehrdeutig“ | Verwende die vollständige E-Mail-Adresse |
403 bei jedem Aufruf | Die Gmail-API ist im Cloud-Projekt nicht aktiviert, oder die Adresse ist nicht als Testnutzer eingetragen |
„Nicht gefunden“-Fehler bei gültigen IDs | Die ID gehört zu einem anderen Postfach – prüfe |
Lizenz
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
Give AI agents secure access to your email via private aliases with dedicated mailbox storage.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables AI assistants to manage multiple Gmail accounts simultaneously with built-in OAuth authentication, supporting email reading, sending, drafts, labels, and account management.60482MIT
- FlicenseAqualityBmaintenanceConnects AI assistants to multiple Gmail accounts simultaneously, enabling search, read, draft, send, and reply operations with per-account permission controls.54
- AlicenseNot gradedqualityCmaintenanceEnables searching and summarizing emails across multiple Gmail accounts simultaneously through Claude.1MIT
- AlicenseBqualityCmaintenanceEnables multi-account Gmail and Google Calendar access through MCP, allowing operations across multiple Google accounts with a single tool call.11MIT
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/Seventhdd/Gmail-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server