gmail-mcp-server
by luminarylane
README.md
# gmail-mcp-server
Standalone Gmail MCP Server — draft-only. Lane never sends; the single tool creates a Gmail draft the owner reviews and sends themselves.
## Tools
### `gmail_draft_compose`
Creates a Gmail draft.
| Arg | Type | Required | Notes |
| --- | --- | --- | --- |
| `accessToken` | string | no | Falls back to `GMAIL_ACCESS_TOKEN` env var |
| `to` | string | no | Leave empty if unknown — the owner fills it in when reviewing the draft |
| `subject` | string | yes | |
| `body` | string | yes | Plain text |
Returns `{ draftId, messageId, draftUrl }`.
There is no send tool, no read tool, and no label/thread management in this server — it composes drafts only.
## Install / Dev
```bash
npm install
npm run dev # run the server via tsx
npm run build # compile to dist/
npm run check # test + build
```
## Auth
Requires an OAuth 2.0 access token with the **`gmail.compose`** scope only — never `gmail.send`. Set it via `GMAIL_ACCESS_TOKEN` or pass `accessToken` per call. See `.env.example`.
TDQS
A3.6/5.0
Scored across 1 tool
Disambiguation5/5
Only one tool exists, so there is no possibility of confusion between tools. The single tool's purpose is clearly stated.
Naming Consistency4/5
The single tool name follows a clear verb_noun pattern (gmail_draft_compose), but with only one tool there is limited evidence of a broader convention. It is readable and predictable.
Tool Count1/5
A single tool for a Gmail server is far too thin to be useful. The server's apparent scope is much broader than drafting, and one tool cannot reasonably cover it.
Completeness1/5
The surface is severely incomplete. There is no send, read, list, search, or delete capability, and the tool only creates drafts, leaving the agent with a dead end after composing.
Maintenance
ActivityMaintained
ResponsivenessNo issues