Gmail Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Gmail Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A local stdio MCP server that gives your local Claude clients these Gmail tools:
| Tool | What it does |
|---|---|
send_email | Send mail from your Gmail/Workspace address (plain or HTML, cc/bcc). Every send is logged. |
search_emails | Search Gmail (has:attachment from:bob newer_than:7d…) and return message summaries including attachment metadata. |
download_attachment | Pull an attachment from a message and upload it to your Google Drive, returning the Drive link. |
download_attachment_local | Pull an attachment from a message and save it to a local directory (dest_dir, expanded and created if absent), returning the saved file path. |
of your Claude client.
gmail.send, gmail.readonly, drive.file (the app only ever seesDrive files it created).
launch; nothing is written to disk. Requires AWS credentials at runtime (e.g. an AWS_PROFILE).
use; override per call with the drive_folder argument).
uv (manages Python 3.12 + deps).AWS_PROFILE,env vars, instance role). A region from your AWS config, env AWS_REGION, or GMAIL_MCP_AWS_REGION.
(Console → APIs & Services → Library).
client_secret.json(Console → APIs & Services → Credentials).
Runs a browser consent for the three scopes and stores the credentials in SSM (default param /gmail-mcp/authorized-user-json).
cd /path/to/gmail-mcp
# Using a downloaded Desktop client_secret.json:
AWS_PROFILE=<your-aws-profile> \
uv run python scripts/mint_token.py --client-secrets-file /path/to/client_secret.json
# ...or reuse an existing Google token already in SSM (its client_id/secret):
AWS_PROFILE=<your-aws-profile> \
uv run python scripts/mint_token.py --client-secrets-ssm-param /path/to/existing-tokenA browser window opens — approve access for the intended account. On success the token is written to SSM and the server can run.
Replace /path/to/gmail-mcp and <your-aws-profile> with your values.
claude mcp add gmail-mcp -s user \
-e AWS_PROFILE=<your-aws-profile> \
-- uv run --directory /path/to/gmail-mcp gmail-mcpAdd to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"gmail-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/gmail-mcp", "gmail-mcp"],
"env": { "AWS_PROFILE": "<your-aws-profile>" }
}
}
}Restart Claude Desktop after editing. The three tools appear under the gmail-mcp server.
| Variable | Default | Purpose |
|---|---|---|
AWS_PROFILE (or any AWS cred) | — | AWS credentials used to read the token from SSM |
GMAIL_MCP_AWS_REGION | standard AWS config | Region of the SSM parameter |
GMAIL_MCP_SSM_PARAM | /gmail-mcp/authorized-user-json | SSM param holding the credentials JSON |
drive_folder (tool arg) | Gmail Attachments | Destination Drive folder for downloads |
recipient allowlist by default; treat the tool as injection-sensitive.
uv sync
uv run pytest # unit tests (all mocked; no live Google/AWS calls)
uv run ruff check . # lintLayout: src/gmail_mcp/ — auth.py (SSM→credentials), gmail_client.py (send/search/attachments), drive_client.py (folder + upload), attachments.py (orchestration), server.py (FastMCP wiring), bootstrap.py (token mint).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.