Skip to main content
Glama
README.md
# AVA MCP Server – Gmail Draft Tool

This project implements a minimal Model Context Protocol (MCP) server named **AVA**, exposing a single tool: `write_email_draft`.

The tool creates **Gmail drafts** from structured input, allowing AI agents like Claude to generate email content safely — without sending anything. This enables reviewable automation for follow-ups, summaries, or outreach.

It integrates with the Gmail API using OAuth2 authentication, ensuring secure access and user control. The server responds with metadata including the draft ID, making it ideal for real-world AI workflows.

---

## Architecture Overview


Claude AI → MCP Tool Call → AVA Server → Gmail API → Draft Created

```plaintext
┌────────────────────────────┐
│        Claude AI           │
│       (MCP client)         │
└────────────┬───────────────┘
             │  Tool Call: write_email_draft
             ▼
┌────────────────────────────┐
│      MCP Server (AVA)      │
│  mcp-server-draft.py       │
│  └── gmail.py              │
│  └── .env config           │
└────────────┬───────────────┘
             │  Uses credentials from .env
             ▼
┌────────────────────────────┐
│  Gmail API (OAuth2 Auth)   │
│  via Google Cloud Console  │
│  Project: ava-mcp-475222   │
└────────────┬───────────────┘
             │  Creates draft
             ▼
┌────────────────────────────┐
│     Gmail Draft Created    │
│                            │
└────────────────────────────┘
```

- **Claude AI**: Sends structured tool calls via MCP
- **AVA Server**: Receives calls, loads credentials from `.env`, and handles logic via `gmail.py`
- **Google Cloud Console**: Hosts OAuth2 credentials (`credentials.json`)
- **Gmail API**: Creates draft and returns metadata

---

## Features

- MCP-compliant server using `FastMCP`
- Gmail API integration via OAuth2
- Secure credential handling via `.env`
- Compatible with Claude and MCP Inspector

---

## Project Structure

```
mcp-email-draft/
├── .env                    # Gmail credentials and sender email
├── mcp-server-draft.py     # MCP server exposing the tool
├── gmail.py               # Gmail API logic
├── pyproject.toml         # Project metadata and dependencies
├── credentials.json       # OAuth2 client credentials
├── token.json             # Gmail API token
├── README.md              # Documentation
```

---

## Setup Instructions

### 1. Create project folder

```bash
cd C:/Users/carll/Desktop
mkdir mcp-email-draft
cd mcp-email-draft
```

### 2. Install [uv](https://docs.astral.sh/uv/getting-started/installation/)

```bash
curl -Ls https://astral.sh/uv/install.sh | sh
```

### 3. Install dependencies

```bash
uv pip install -r pyproject.toml
```

Or manually:

```bash
uv pip install google-api-python-client google-auth-oauthlib python-dotenv mcp[cli]
```

---

## Gmail API Setup

1. Go to [Google Cloud Console](https://console.cloud.google.com/auth/audience?project=ava-mcp-475222)
2. Create OAuth credentials for a desktop app
3. Download `credentials.json` and place it in the project root
4. Run the server once to trigger OAuth flow and generate `token.json`

---

## .env File

```env
USER_EMAIL=carlloswattsnogueira@gmail.com
GOOGLE_CREDENTIALS_PATH=C:/Users/carll/Desktop/mcp-email-draft/credentials.json
GOOGLE_TOKEN_PATH=C:/Users/carll/Desktop/mcp-email-draft/token.json
```

---

## Claude Integration

Go to [Claude Connectors](https://claude.ai/settings/connectors) and use:

```json
{
  "mcpServers": {
    "AVA": {
      "command": "C:/Users/carll/.local/bin/uv.exe",
      "args": [
        "--directory",
        "C:/Users/carll/Desktop/mcp-email-draft",
        "run",
        "mcp-server-draft.py"
      ]
    }
  }
}
```

---

## Usage Example

```json
{
  "recipient_email": "carllos@example.com",
  "subject": "Follow-up on our meeting",
  "body": "Hi Carllos, thank you again for your time today. Looking forward to the next steps!"
}
```

Claude will return the Gmail draft ID and metadata.
Next: Using Discord

---

## License

This project is for demonstration and evaluation purposes only.  
No affiliation with Google or Anthropic.
```



TDQS

C2.8/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap. The purpose is uniquely defined.

Naming Consistency5/5

The single tool name 'write_email_draft' follows a clear verb_noun pattern, demonstrating internal consistency.

Tool Count3/5

A single tool is borderline; while it performs a concrete task, the server feels overly thin for anything beyond a very narrow use case.

Completeness2/5

The tool only creates a draft with no support for listing, updating, deleting, or sending, leaving significant gaps in email management.

Maintenance

ActivityInactive
ResponsivenessNo issues