Google Docs & Gmail MCP Server
README.md
# Google Docs & Gmail MCP Server
An MCP (Model Context Protocol) server that enables AI agents (e.g., Claude Desktop) to interact with **Google Docs** and **Gmail** — creating documents, appending content, replacing placeholders, and drafting emails.
---
## Project Structure
```
MCP/
├── src/
│ ├── index.ts # MCP server entry point (all tool handlers)
│ ├── auth.ts # One-time OAuth 2.0 token generation script
│ ├── googleClient.ts # Centralized authenticated Google API clients
│ └── tools/
│ ├── docsTools.ts # Google Docs & Drive tool implementations
│ └── gmailTools.ts # Gmail draft tool implementations
├── credentials.json # ← You must download this from Google Cloud Console
├── token.json # ← Generated automatically by: npm run auth
├── claude_desktop_config.json # Claude Desktop MCP server configuration
├── package.json
├── tsconfig.json
├── .env.example
└── .gitignore
```
---
## Getting Started
### Prerequisites
- Node.js v18+
- A Google account with access to Google Workspace (Docs + Gmail)
---
### Step 1: Google Cloud Console Setup
1. Go to [https://console.cloud.google.com/](https://console.cloud.google.com/)
2. Create a new project (e.g., `MCP-Server`)
3. Enable the following APIs:
- **Google Docs API**
- **Google Drive API**
- **Gmail API**
4. Go to **APIs & Services → Credentials**
5. Click **Create Credentials → OAuth 2.0 Client ID**
- Application Type: **Desktop App**
- Name: `MCP Server`
6. Download the JSON file and **rename it to `credentials.json`**
7. Place `credentials.json` in the project root: `C:\Users\Vaibhav Singh\Desktop\MCP\`
---
### Step 2: Authorize the Application (one-time)
```bash
powershell -ExecutionPolicy Bypass -Command "npm run auth"
```
This will:
- Print a Google authorization URL
- You open the URL, log in, and paste the authorization code back
- `token.json` is saved automatically
---
### Step 3: Test the MCP Server
```bash
# Start the server directly
powershell -ExecutionPolicy Bypass -Command "npm run dev"
# Or launch the MCP Inspector UI for testing
powershell -ExecutionPolicy Bypass -Command "npm run inspect"
```
---
### Step 4: Connect to Claude Desktop (Phase 5)
Copy the contents of `claude_desktop_config.json` into your Claude Desktop configuration file, located at:
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
Then restart Claude Desktop. You should see **7 tools** available from this MCP server.
---
## Available Tools
| Tool | Description |
|---|---|
| `create_document` | Creates a new Google Doc and returns ID + URL |
| `search_documents` | Searches Google Drive for Docs by name |
| `append_text` | Appends text to the end of a document |
| `insert_at_placeholder` | Replaces `{{placeholder}}` text in a document |
| `read_document` | Returns the full text content of a document |
| `create_gmail_draft` | Creates a Gmail draft email (To, Subject, Body, CC) |
| `list_gmail_drafts` | Lists recent Gmail drafts |
---
## Example Prompts for Claude
> "Create a new Google Doc titled 'Q3 Report' and append a summary of our meeting."
> "Search for a document called 'Meeting Notes' and append today's agenda."
> "Create a Gmail draft to john@example.com with subject 'Project Update' and a professional body."
> "Find the document 'Email Log' and replace the placeholder `{{latest_draft}}` with the email I just dictated."
TDQS
A3.9/5.0
Scored across 7 tools
Disambiguation5/5
All tools have clear, distinct purposes. Google Docs tools (create, read, append, insert at placeholder, search) and Gmail tools (create draft, list drafts) are easily distinguishable with no overlap.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern in snake_case, e.g., create_document, list_gmail_drafts. Naming is predictable and clear.
Tool Count5/5
7 tools is well-scoped for covering core operations of two services. Each tool earns its place without being excessive or insufficient.
Completeness3/5
Missing key operations like sending a Gmail draft and deleting a document. While the set covers basic CRUD for Docs and draft creation for Gmail, the lack of send creates a workflow gap.
Maintenance
ActivityStale
ResponsivenessNo issues