Skip to main content
Glama
gvbigdata

Gmail Drive MCP

by gvbigdata
README.md
# ⚔ Quick Start Guide - Gmail & Drive MCP

## šŸŽÆ Goal
Access your Gmail and Google Drive data through a beautiful Streamlit interface.

---

## šŸ“¦ Step 1: Install (2 minutes)

```bash
# Install dependencies
pip install -r requirements.txt
```

---

## šŸ” Step 2: Get Google Credentials (5 minutes)

### A. Create Project
1. Go to https://console.cloud.google.com/
2. Click "New Project" → Name: `gmail-drive-mcp` → Create

### B. Enable APIs
1. Go to "APIs & Services" → "Library"
2. Search and **Enable**:
   - Gmail API
   - Google Drive API

### C. Create OAuth Credentials
1. "APIs & Services" → "Credentials"
2. "Create Credentials" → "OAuth client ID"
3. First time? Click "Configure Consent Screen":
   - User Type: **External**
   - App name: `Gmail Drive MCP`
   - Add your email twice (support + developer)
   - Scopes: Add these URLs:
     ```
     https://www.googleapis.com/auth/gmail.readonly
     https://www.googleapis.com/auth/drive.readonly
     ```
   - Test users: Add your Gmail
   - Save

4. Now "Create Credentials" → "OAuth client ID":
   - Type: **Desktop app**
   - Name: `Gmail Drive Desktop`
   - **Download JSON**

5. **Rename downloaded file to `credentials.json`**
6. **Put it in your project folder**

---

## šŸš€ Step 3: First Run & Authentication (2 minutes)

```bash
# This will open browser for authentication
python gmail_drive_rest.py
```

**What happens:**
1. āœ… Browser opens automatically
2. āœ… Sign in with your Google account
3. āœ… Click "Allow" 
4. āœ… `token.json` created (your access token)
5. āœ… Server starts on port 8000

Keep this terminal running!

---

## šŸŽØ Step 4: Open Streamlit UI (1 minute)

**New terminal:**
```bash
streamlit run gmail_drive_ui.py
```

**Access:** http://localhost:8501

---

## šŸŽ‰ You're Done!

### What you can do now:

**šŸ“Š Dashboard Tab:**
- See inbox count
- See spam count  
- See total Drive files
- View storage usage
- Recent emails & files

**šŸ“§ Gmail Manager Tab:**
- Count emails by label
- List recent emails
- Search emails (e.g., `from:boss@company.com`)

**šŸ“ Drive Manager Tab:**
- Count all files
- List recent files
- Search files by name
- Check storage quota

---

## šŸ”§ Troubleshooting

### "credentials.json not found"
→ Download it from Google Cloud Console, rename it, put it in project folder

### "Access blocked"
→ Make sure you enabled both Gmail API and Drive API

### Browser doesn't open
→ Copy the URL from terminal and paste in browser

### "Invalid grant"
→ Delete `token.json` and run again to re-authenticate

### Connection error in Streamlit
→ Make sure `gmail_drive_rest.py` is still running in another terminal

---

## šŸ“ File Structure

```
your-project/
ā”œā”€ā”€ credentials.json          ← Download from Google
ā”œā”€ā”€ token.json               ← Auto-generated after auth
ā”œā”€ā”€ requirements.txt
ā”œā”€ā”€ gmail_drive_mcp.py       ← MCP Server (for Claude)
ā”œā”€ā”€ gmail_drive_rest.py      ← REST API (run this!)
ā”œā”€ā”€ gmail_drive_ui.py        ← Streamlit UI (run this!)
└── .gitignore
```

---

## šŸŽ“ Next Steps

### Use with Claude Desktop:

1. Run MCP server:
   ```bash
   python gmail_drive_mcp.py
   ```

2. Add to Claude config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
   ```json
   {
     "mcpServers": {
       "gmail-drive": {
         "command": "python",
         "args": ["/full/path/to/gmail_drive_mcp.py"]
       }
     }
   }
   ```

3. Restart Claude Desktop

4. Ask Claude:
   - "How many emails do I have?"
   - "Search my emails for messages from John"
   - "How many files are in my Drive?"

---

## ⚔ Quick Commands Reference

```bash
# Install
pip install -r requirements.txt

# Run REST API (Terminal 1)
python gmail_drive_rest.py

# Run Streamlit (Terminal 2)
streamlit run gmail_drive_ui.py

# Run MCP for Claude (Alternative)
python gmail_drive_mcp.py
```

---

## šŸ”’ Security Reminder

**NEVER commit these files to Git:**
- āŒ credentials.json
- āŒ token.json

They contain your private keys! Already added to `.gitignore` āœ…

---

## šŸŽÆ Summary

| Terminal | Command | Purpose |
|----------|---------|---------|
| 1 | `python gmail_drive_rest.py` | REST API server |
| 2 | `streamlit run gmail_drive_ui.py` | Web interface |

**Access UI:** http://localhost:8501

That's it! šŸŽ‰