| name | gmail-chrome |
| description | Automate Gmail actions using Chrome DevTools MCP - search, read, compose, reply, and manage emails |
| license | MIT |
| compatibility | opencode |
| metadata | [object Object] |
What I Do
- Search and read emails in Gmail
- Compose and send new emails
- Reply to existing threads
- Archive, delete, and label emails
- Navigate Gmail efficiently using keyboard shortcuts
Prerequisites
- Chrome browser open with Gmail tab
- Chrome DevTools MCP server running (configured in opencode.json)
- Logged into Gmail in the browser
Context Management Strategy
IMPORTANT: Gmail's DOM is complex. To prevent context overflow:
- Take snapshots sparingly - Only snapshot when you need to find elements
- Use keyboard shortcuts when possible (faster than clicking)
- Work in batches - Complete one action fully before starting next
- Clear context between major operations
Core Gmail Operations
1. Navigate to Gmail
chrome_navigate_page(url: "https://mail.google.com")
chrome_wait_for(text: "Inbox")
2. Search for Emails
Gmail search is the fastest way to find emails:
# Take snapshot to find search box
chrome_take_snapshot()
# Find the search input (usually has placeholder "Search mail")
chrome_fill(uid: "<search-input-uid>", value: "from:sender@example.com")
chrome_press_key(key: "Enter")
chrome_wait_for(text: "results")
Common search operators:
from:email@example.com- From specific senderto:email@example.com- To specific recipientsubject:keyword- Subject contains keywordis:unread- Unread emails onlyis:starred- Starred emailshas:attachment- Has attachmentsafter:2024/01/01- After datebefore:2024/12/31- Before datelabel:important- Has label
3. Read an Email
# After search results appear, take snapshot
chrome_take_snapshot()
# Click on email row to open it
chrome_click(uid: "<email-row-uid>")
# Wait for email to load
chrome_wait_for(text: "Reply")
# Take snapshot to read content
chrome_take_snapshot()
4. Compose New Email
Using keyboard shortcut (preferred):
# Press 'c' to compose (Gmail shortcut)
chrome_press_key(key: "c")
chrome_wait_for(text: "New Message")
# Take snapshot to find compose fields
chrome_take_snapshot()
# Fill in the compose form
chrome_fill(uid: "<to-field-uid>", value: "recipient@example.com")
chrome_press_key(key: "Tab")
chrome_fill(uid: "<subject-field-uid>", value: "Email Subject")
chrome_press_key(key: "Tab")
chrome_fill(uid: "<body-field-uid>", value: "Email body content here...")
# Send with Ctrl+Enter or click Send
chrome_press_key(key: "Control+Enter")
5. Reply to Email
# With email open, press 'r' to reply
chrome_press_key(key: "r")
chrome_wait_for(text: "Send")
# Take snapshot to find reply box
chrome_take_snapshot()
# Type reply
chrome_fill(uid: "<reply-body-uid>", value: "Your reply here...")
# Send
chrome_press_key(key: "Control+Enter")
6. Archive Email
# With email open or selected, press 'e' to archive
chrome_press_key(key: "e")
7. Delete Email
# With email open or selected, press '#' to delete
chrome_press_key(key: "Shift+3") # '#' key
8. Star/Unstar Email
# Press 's' to star/unstar
chrome_press_key(key: "s")
9. Mark as Read/Unread
# Press 'Shift+i' to mark as read
chrome_press_key(key: "Shift+i")
# Press 'Shift+u' to mark as unread
chrome_press_key(key: "Shift+u")
10. Navigate Between Emails
# Press 'j' for next email
chrome_press_key(key: "j")
# Press 'k' for previous email
chrome_press_key(key: "k")
# Press 'u' to go back to list
chrome_press_key(key: "u")
Gmail Keyboard Shortcuts Reference
| Action | Shortcut | Notes |
|---|---|---|
| Compose | c |
Opens new compose window |
| Reply | r |
Reply to current email |
| Reply all | a |
Reply to all recipients |
| Forward | f |
Forward email |
| Send | Ctrl+Enter |
Sends composed email |
| Archive | e |
Archives selected/open email |
| Delete | # (Shift+3) |
Moves to trash |
| Star | s |
Toggle star |
| Mark read | Shift+i |
Mark as read |
| Mark unread | Shift+u |
Mark as unread |
| Next email | j |
Move to next in list |
| Previous email | k |
Move to previous |
| Back to list | u |
Return to inbox view |
| Search | / |
Focus search box |
| Select all | *+a |
Select all visible |
| Deselect all | *+n |
Deselect all |
Element Identification Tips
Gmail elements can be identified by:
Aria labels: Most buttons have descriptive aria-labels
- "Compose" button
- "Send" button
- "Archive" button
Placeholder text: Input fields often have placeholders
- "Search mail"
- "To"
- "Subject"
Content text: Email subjects and sender names
Example: Find and Reply to Specific Email
# 1. Navigate to Gmail
chrome_navigate_page(url: "https://mail.google.com")
chrome_wait_for(text: "Inbox")
# 2. Search for the email
chrome_take_snapshot() # Find search box
chrome_fill(uid: "<search-uid>", value: "from:important@client.com subject:urgent")
chrome_press_key(key: "Enter")
chrome_wait_for(text: "results")
# 3. Open the email
chrome_take_snapshot() # Find email row
chrome_click(uid: "<email-row-uid>")
chrome_wait_for(text: "Reply")
# 4. Read the email content
chrome_take_snapshot()
# ... process the email content from snapshot ...
# 5. Reply
chrome_press_key(key: "r")
chrome_wait_for(text: "Send")
chrome_take_snapshot() # Find reply body
chrome_fill(uid: "<reply-body-uid>", value: "Thank you for your email...")
chrome_press_key(key: "Control+Enter")
Example: Bulk Archive Emails
# 1. Search for emails to archive
chrome_fill(uid: "<search-uid>", value: "is:read before:2024/01/01")
chrome_press_key(key: "Enter")
chrome_wait_for(text: "results")
# 2. Select all visible emails
chrome_press_key(key: "*") # Open selection menu
chrome_press_key(key: "a") # Select all
# 3. Archive all selected
chrome_press_key(key: "e")
Troubleshooting
Gmail Not Loading
- Check if logged in
- Try refreshing:
chrome_navigate_page(type: "reload")
Compose Window Not Opening
- Ensure keyboard shortcuts are enabled in Gmail settings
- Try clicking compose button instead of 'c' key
Elements Not Found
- Gmail DOM is dynamic; take a fresh snapshot
- Wait for page to fully load
- Try scrolling to make elements visible
Slow Response
- Gmail is heavy; allow extra time for actions
- Use
chrome_wait_for()between major operations
When to Use This Skill
- Automating email workflows
- Bulk email operations
- Reading and responding to emails programmatically
- Email search and analysis
- Testing email-related features