Skip to main content
Glama
johndelapena168

google-workspace-alias-mcp

README.md
# Google Workspace Alias MCP

A Model Context Protocol (MCP) server for Google Workspace integration with **send-as alias support**, email templates, and scheduled send. This server enables AI assistants to manage Gmail and Google Calendar through natural language interactions.

### Why `google-workspace-alias-mcp`?
- **Unique**: Only MCP with send-as alias support
- **Unified**: Gmail + Calendar in one package
- **Full Featured**: 28 tools with complete API coverage

## ✨ Why This MCP?

| Feature | This MCP | Gmail MCP (Original) |
|---------|----------|---------------------|
| **Send-As Alias Support** | ✅ Dynamic discovery | ❌ Not supported |
| **Email Templates** | ✅ With variables | ❌ Not supported |
| **Scheduled Send** | ✅ Built-in | ❌ Not supported |
| **Gmail + Calendar** | ✅ Unified | ❌ Gmail only |
| **Multi-Account** | ✅ Planned | ❌ Not supported |
| **Free/Busy Check** | ✅ Built-in | ❌ Not supported |

## 🚀 Features

### Gmail
- ✅ **Send emails** - with subject, content, attachments, and recipients
- ✅ **Send-As Alias Support** - dynamic discovery of all configured aliases
- ✅ **Email templates** - save and reuse templates with variables
- ✅ **Scheduled send** - schedule emails for later delivery
- ✅ **Draft emails** - create drafts without sending
- ✅ **Read emails** - get full email content with enhanced attachment display
- ✅ **List emails** - view inbox, sent, or custom labels
- ✅ **Search emails** - using Gmail search syntax
- ✅ **Modify emails** - mark read/unread, move to labels/folders
- ✅ **Delete emails** - permanent deletion
- ✅ **Download attachments** - save attachments to local filesystem
- ✅ **Label management** - create, update, delete labels
- ✅ **Batch operations** - process multiple emails efficiently
- ✅ **Full attachment support** - send and receive file attachments
- ✅ **HTML emails** - multipart messages with both HTML and plain text
- ✅ **International characters** - full support in subject and content

### Google Calendar
- ✅ **Create events** - with title, time, description, location, attendees
- ✅ **Get event** - retrieve event details by ID
- ✅ **List events** - view events within specified time range
- ✅ **Update events** - modify existing events
- ✅ **Delete events** - remove events
- ✅ **Search events** - find events by query
- ✅ **Free/Busy check** - check availability across calendars
- ✅ **Multi-calendar support** - work with multiple calendars
- ✅ **Recurring events** - support for repeating events

## 📦 Installation

### Using npm (Recommended)

```bash
npm install -g google-workspace-alias-mcp
```

### Manual Installation

```bash
git clone https://github.com/johndelapena168/google-workspace-alias-mcp.git
cd google-workspace-mcp
npm install
```

## ⚙️ Setup

### 1. Create Google Cloud Project

1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Create a new project or select existing one
3. Enable the following APIs:
   - Gmail API
   - Google Calendar API

### 2. Create OAuth 2.0 Credentials

1. Go to "APIs & Services" > "Credentials"
2. Click "Create Credentials" > "OAuth client ID"
3. Select "Desktop app" as application type
4. Give it a name (e.g., "Google Workspace MCP")
5. Click "Create"
6. Download the JSON file
7. Rename it to `gcp-oauth.keys.json`

### 3. Authenticate

Place your `gcp-oauth.keys.json` in one of these locations:
- `~/.google-workspace-mcp/` (recommended)
- Current directory

Then run:

```bash
npx google-workspace-alias-mcp auth
```

This will:
1. Open your browser for Google authentication
2. Ask for permission to access Gmail and Calendar
3. Save credentials locally for future use

## 🔧 Configuration

### Claude Desktop

Add to your Claude Desktop configuration (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "google-workspace": {
      "command": "npx",
      "args": ["google-workspace-alias-mcp"]
    }
  }
}
```

### Cursor

Add to your Cursor settings:

```json
{
  "mcpServers": {
    "google-workspace": {
      "command": "npx",
      "args": ["google-workspace-alias-mcp"]
    }
  }
}
```

### Qoder

The MCP will be automatically detected when installed globally.

## 📖 Usage Examples

### Send Email with Alias

```json
{
  "tool": "send_email",
  "arguments": {
    "to": ["client@example.com"],
    "subject": "Project Update",
    "body": "Hi,\n\nHere's the latest update on the project.\n\nBest regards",
    "from": "hello@nexteraofai.com"
  }
}
```

### List Available Aliases

```json
{
  "tool": "list_aliases",
  "arguments": {}
}
```

### List Email Templates

```json
{
  "tool": "list_templates",
  "arguments": {}
}
```

### Send Email Using Template

```json
{
  "tool": "send_template_email",
  "arguments": {
    "template": "meeting-followup",
    "to": ["client@example.com"],
    "variables": {
      "name": "John",
      "meeting_name": "Project Review",
      "summary": "Discussed project timeline and milestones",
      "next_steps": "1. Finalize requirements\n2. Start development",
      "sender_name": "John Dela Pena"
    },
    "from": "hello@nexteraofai.com"
  }
}
```

### Create Custom Template

```json
{
  "tool": "create_template",
  "arguments": {
    "name": "weekly-report",
    "displayName": "Weekly Report",
    "subject": "Weekly Report: {{week_date}}",
    "body": "Hi {{name}},\n\nHere's the weekly report for {{week_date}}:\n\n{{report_content}}\n\nBest regards,\n{{sender_name}}"
  }
}
```

### Schedule Email for Later

```json
{
  "tool": "send_scheduled_email",
  "arguments": {
    "to": ["team@example.com"],
    "subject": "Weekly Update",
    "body": "Here's the weekly project update...",
    "scheduledTime": "2026-07-15T09:00:00",
    "from": "hello@nexteraofai.com"
  }
}
```

### Create Calendar Event

```json
{
  "tool": "create_event",
  "arguments": {
    "summary": "Project Kickoff Meeting",
    "description": "Initial meeting to discuss project scope and timeline",
    "location": "Zoom Meeting",
    "start": "2026-07-15T14:00:00",
    "end": "2026-07-15T15:00:00",
    "attendees": ["john@example.com", "jane@example.com"],
    "reminders": [
      { "method": "email", "minutes": 60 },
      { "method": "popup", "minutes": 10 }
    ]
  }
}
```

### Search Events

```json
{
  "tool": "search_events",
  "arguments": {
    "query": "meeting",
    "timeMin": "2026-07-01T00:00:00Z",
    "timeMax": "2026-07-31T23:59:59Z",
    "maxResults": 20
  }
}
```

### Check Free/Busy

```json
{
  "tool": "get_freebusy",
  "arguments": {
    "timeMin": "2026-07-15T09:00:00Z",
    "timeMax": "2026-07-15T17:00:00Z",
    "calendars": ["primary", "work@example.com"]
  }
}
```

### Get Event by ID

```json
{
  "tool": "get_event",
  "arguments": {
    "calendarId": "primary",
    "eventId": "abc123def456"
  }
}
```

### List Emails in Inbox

```json
{
  "tool": "list_emails",
  "arguments": {
    "labelIds": ["INBOX"],
    "maxResults": 10
  }
}
```

### Mark Email as Read

```json
{
  "tool": "modify_email",
  "arguments": {
    "messageId": "18a1b2c3d4e5f6789",
    "removeLabelIds": ["UNREAD"]
  }
}
```

### Move Email to Label

```json
{
  "tool": "modify_email",
  "arguments": {
    "messageId": "18a1b2c3d4e5f6789",
    "addLabelIds": ["Label_123"],
    "removeLabelIds": ["INBOX"]
  }
}
```

### Download Attachment

```json
{
  "tool": "download_attachment",
  "arguments": {
    "messageId": "18a1b2c3d4e5f6789",
    "attachmentId": "ANGjdJ8z7_OQ",
    "savePath": "C:/Users/Downloads"
  }
}
```

### Create New Label

```json
{
  "tool": "create_label",
  "arguments": {
    "name": "Client Projects",
    "messageListVisibility": "show",
    "labelListVisibility": "labelShow"
  }
}
```

### Batch Delete Emails

```json
{
  "tool": "batch_delete_emails",
  "arguments": {
    "messageIds": ["msg1", "msg2", "msg3"]
  }
}
```

## 🎯 Unique Selling Points

### 1. Dynamic Alias Support
No other MCP server supports Gmail send-as aliases. This MCP automatically discovers all configured aliases and lets you send from any of them.

### 2. Email Templates
Save frequently used email templates with variables:
```
"Use meeting-followup template for {{name}}"
```

### 3. Scheduled Send
Schedule emails for later delivery:
```json
{
  "scheduledTime": "2026-07-15T09:00:00"
}
```

### 4. Unified Workspace
Gmail + Calendar in one MCP server. No need to install separate servers.

## 🔐 Security

- OAuth credentials are stored locally in `~/.google-workspace-mcp/`
- Tokens are automatically refreshed when expired
- No data is sent to third-party servers
- Full control over permissions

## 🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

### Development Setup

```bash
git clone https://github.com/johndelapena168/google-workspace-alias-mcp.git
cd google-workspace-mcp
npm install
npm start
```

## 📝 License

MIT License - see [LICENSE](LICENSE) file

## 🙏 Acknowledgments

- Inspired by [Gmail-MCP-Server](https://github.com/GongRzhe/Gmail-MCP-Server) by GongRzhe
- Built with [Model Context Protocol SDK](https://github.com/modelcontextprotocol/typescript-sdk)
- Uses [Google APIs](https://github.com/googleapis/google-api-nodejs-client)

## 📧 Contact

- GitHub: [@johndelapena168](https://github.com/johndelapena168)
- Email: hello@nexteraofai.com

## ⭐ Support

If you find this MCP useful, please give it a star on GitHub!

TDQS

B3.4/5.0

Scored across 29 tools

Disambiguation5/5

Each tool targets a distinct resource and action: email operations (send, read, delete, modify, batch, labels, attachments, aliases, templates) and calendar operations (list, create, get, update, delete, search, freebusy). No overlapping purposes.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., create_event, delete_email, list_aliases). The only exception is 'authenticate' which is a setup verb, acceptable for a single bootstrap tool.

Tool Count4/5

29 tools is on the high side but reasonable given the coverage of Gmail, Calendar, and templates. Each tool has a clear purpose, though the scope might be slightly broad for a server focused on aliases.

Completeness4/5

Core CRUD operations are covered for emails, labels, events, and templates. However, alias management is limited to listing; creation or deletion of aliases is missing, which is a notable gap given the server name.

Maintenance

ActivityInactive
ResponsivenessNo issues