Gmail Multi-Inbox MCP Server (tszaks/ghub) is an MCP server listed on the M8ven Trust Index. It scores 58 out of 100, grade D. It declares 60 tools. No publisher has claimed this listing.

D
Caution
58/100

Gmail Multi-Inbox MCP Server

Enables AI assistants to manage multiple Gmail accounts simultaneously with built-in OAuth authentication, supporting email reading, sending, drafts, labels, and account management.

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

tszaks

Source: Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
⚠️
Known vulnerabilities in dependencies: 3 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
// tools this server exposes60 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

list_accounts

List all configured Gmail inbox accounts and their authentication/health status.

read_emails

Read emails from one account or aggregate across all enabled accounts when account is omitted.

search_emails

Search Gmail using query syntax. Omitting account searches all enabled inboxes and merges results.

search_drive_files

Search Google Drive file metadata. Omitting account searches all enabled accounts and merges results.

get_email_thread

Get a full email thread for one account (account required). Each message lists attachment metadata (filename, attachment_id, size). To read attachment content — PDF text, DOCX, XLSX, images via OCR — call get_all_attachments with the Gmail message ID shown as "Gmail ID" in each message.

get_labels

List labels for one account (account required).

mark_as_read

Mark messages as read in one account (account required).

add_labels

Add labels to messages in one account (account required).

remove_labels

Remove labels from messages in one account (account required).

archive_emails

Archive messages in one account by removing INBOX label (account required).

trash_emails

Move messages to trash in one account (account required).

create_label

Create a new Gmail label in one account (account required).

delete_label

Delete a Gmail label in one account (account required).

block_sender

Block a sender by creating a Gmail filter (same mechanism as Gmail's native "Block" button). Optionally also trashes existing mail from that sender.

list_blocked_senders

List all Gmail filters for an account. Use to find filter_id for unblock_sender, or to audit what is being auto-trashed/archived/spammed.

unblock_sender

Remove a Gmail filter. Specify either filter_id (exact match) or sender (matches filters whose "from" criteria equals this value).

unsubscribe_from_email

Unsubscribe from a mailing list by invoking the List-Unsubscribe header (RFC 2369/8058). Same mechanism as Gmail's native "Unsubscribe" button. Falls back to mailto:. Returns method used.

mute_thread

Mute a conversation: archives the thread now and (with scope="subject") installs a subject-based filter so future replies auto-archive. Approximates Gmail's client-side mute.

create_draft

Create a draft email in one account (account required).

delete_drafts

Permanently delete one or more drafts in one account (account required). Draft IDs are returned by create_draft or list_drafts.

send_draft

Send an existing Gmail draft by draft ID. Returns message_id and thread_id. Use list_drafts to find draft IDs sorted oldest-first.

list_drafts

List drafts in an account sorted oldest-first by internalDate. Returns draft_id (for send_draft/delete_drafts), message_id, thread_id, subject, to, and internalDate.

search_drafts

Search drafts by Gmail query string. Returns draft_id (for send_draft/delete_drafts), message_id, thread_id, subject, to, and snippet. Use instead of search_emails when you need to delete or send a found draft.

send_email

Send an email from one account (account required).

begin_account_auth

Start OAuth onboarding for an account. Accepts credentials JSON or a path to credentials.json.

finish_account_auth

Complete OAuth onboarding by exchanging authorization code and storing token.json.

get_attachment

Fetch a single attachment by id. Use when you only need one specific file. For all attachments at once, use get_all_attachments instead. Requires the Gmail message ID ("Gmail ID" from get_email_thread) and the attachment_id. Saves to ~/Downloads/mcp-attachments/ and returns extracted text for PDF, D

get_all_attachments

Call this whenever a thread or email shows attachments. Fetches and extracts content from all attachments in one shot: PDF (text extraction), DOCX, XLSX, PPTX, images (OCR). Use the Gmail message ID ("Gmail ID" from get_email_thread output) — NOT the thread ID. Saves each file to ~/Downloads/mcp-att

list_drive_files

List Google Drive files. Omitting account aggregates across all enabled accounts. Optionally filter by folder or text query.

get_drive_file

Get full metadata for a specific Google Drive file including size, parents, export links.

get_drive_file_content

Download a Drive file and extract its text content. Google Docs/Sheets/Slides are exported to Office formats then parsed. PDFs, images, and text files are also supported.

upload_drive_file

Upload a local file to Google Drive.

create_drive_folder

Create a new folder in Google Drive.

update_drive_file

Update a Drive file — rename it, move it between folders, star/unstar, or update its description.

trash_drive_file

Move a Google Drive file to trash.

share_drive_file

Share a Google Drive file by adding a permission.

sheets_get

Get Google Sheets spreadsheet metadata: title, sheet tabs, row/column counts.

sheets_read

Read cell values from a Google Sheet range (e.g., "Sheet1!A1:D10" or "A1:D10" for the first sheet).

sheets_write

Write values to a Google Sheet range. Overwrites existing values in the specified range.

sheets_append

Append rows to a Google Sheet after the last row with data.

sheets_create

Create a new Google Sheets spreadsheet.

sheets_add_tab

Add a new sheet tab to an existing spreadsheet.

sheets_rename_tab

Rename a sheet tab in a spreadsheet.

sheets_delete_tab

Delete a sheet tab from a spreadsheet.

sheets_format

Apply formatting to a range of cells: bold, italic, font size, background/text color, alignment, number format, wrap strategy.

sheets_add_chart

Create a chart in a Google Sheet from a data range.

sheets_insert_dimension

Insert rows or columns into a sheet at a specified position.

sheets_delete_dimension

Delete rows or columns from a sheet.

docs_get

Get the full text content and title of a Google Doc.

docs_create

Create a new Google Doc.

docs_append

Append text to the end of a Google Doc. Optionally apply a heading style and bold/italic.

docs_replace_text

Find and replace all occurrences of text throughout a Google Doc.

docs_insert_table

Insert an empty table at the end of a Google Doc.

docs_apply_style

Apply a heading or paragraph style to a text range in a Google Doc by character indices.

list_calendars

List all Google Calendars for one or all enabled accounts.

list_events

List calendar events. Omitting account aggregates across all enabled accounts. Supports time range and text search.

get_event

Get full details of a single calendar event.

create_event

Create a new calendar event. Use start_date_time/end_date_time for timed events or start_date/end_date for all-day events.

update_event

Update an existing calendar event. Only provided fields are changed.

delete_event

Delete a calendar event.

// known CVEs in dependencies3 high1 low

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

high@modelcontextprotocol/sdk@1.25.2GHSA-345p-7cg4-v4c7

@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse

highxlsx@0.18.5GHSA-4r6h-8v6p-xvw6

Prototype Pollution in sheetJS

highxlsx@0.18.5GHSA-5pgg-2g8v-p4x9

SheetJS Regular Expression Denial of Service (ReDoS)

lowmammoth@1.9.0GHSA-rmjr-87wv-gf87

Mammoth is vulnerable to Directory Traversal

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configGMAILMCPCONFIG_DIR"": "/custom/path/.gmail-multi-mcp"
configGMAIL_MCP_CONFIG_DIRThe server also accepts the legacy env var.
configHOST
configMCP_ATTACHMENTS_DIR
configMCP_TRANSPORTSet =sse to force HTTP/SSE mode.
Deployment configuration, supplied by whoever hosts the server. Users are not asked for these.
deployPORT
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

60/60 tools missing one or more hints — list_accounts (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); read_emails (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); search_emails (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +57 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Tests exist

No test files found

Add tests that exercise each declared tool.

No arbitrary install scripts

Has postinstall/preinstall script — runs arbitrary code on npm install

Remove postinstall/preinstall hooks unless they’re essential.

Production dependencies are patched

0 critical, 3 high severity in production deps — @modelcontextprotocol/sdk@1.25.2 (high), xlsx@0.18.5 (high)

Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 5 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/tszaks/ghub?variant=verified)](https://m8ven.ai/mcp/tszaks/ghub)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 9594d9221dfd6e9648e3678f7aa7277b79ee4f60
code hash: 25d2f43093f2b4185ec66a245a8410aa4a3e0e2be60fd09234f97be7121bf1cd
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client