gmail-send
by baddif
README.md
# Gmail Send Skill - MCP Server
π **AI-Powered Email Sending Skill** with Model Context Protocol (MCP) support
Send emails via Gmail using App Password authentication with Markdown content support, specifically designed for AI agents and MCP-compatible applications.
## β¨ Features
### π§ Core Email Functionality
- **Gmail SMTP Integration** - Send emails through Gmail's secure SMTP server (Port 587, TLS)
- **App Password Authentication** - Secure authentication using Gmail App Passwords
- **Rich Error Reporting** - Detailed success/failure feedback with error types
- **Input Validation** - Comprehensive email and parameter validation
### π Enhanced Markdown Support (v1.1.0+)
- **Advanced Markdown Conversion** - Full markdown library support with extensions (BSD license)
- **Professional Email Styling** - Email-safe CSS with responsive design
- **Graceful Fallback System** - Basic Markdown converter when external library unavailable
- **Commercial License Compliance** - BSD-licensed dependencies for commercial use
- **Email Client Compatibility** - Optimized HTML for major email clients
### π€ AI Integration
- **MCP Compatible** - Full Model Context Protocol support for AI agents
- **OpenAI Function Calling** - Compatible with OpenAI Function Calling standard
- **Skill Framework** - Standalone and integrated execution modes
## π Quick Start
### 1. Installation
```bash
# Clone the repository
git clone <repository-url>
cd mcp-server-gmail-send
# Run automated installation
chmod +x install.sh
./install.sh
```
### 2. Gmail Setup
1. **Enable 2-Factor Authentication** in your Gmail account
2. **Generate App Password**:
- Go to Google Account β Security β 2-Step Verification β App Passwords
- Select "Mail" and generate password
- Save the 16-character password (e.g., `abcd efgh ijkl mnop`)
### 3. Claude Desktop Integration
```bash
# Copy configuration to Claude Desktop
cp claude_desktop_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Restart Claude Desktop
```
### 4. Test the Setup
```bash
# Test the MCP server
python3 mcp_server.py --test
# Run comprehensive tests
python3 test_gmail_skill.py
```
## π§ Usage Example
### Enhanced Markdown to HTML Conversion (v1.1.0+)
The skill now supports advanced Markdown conversion with professional email styling:
#### Supported Markdown Features
- **Headers** (H1-H6) with proper hierarchy
- **Text Formatting** - Bold, italic, strikethrough
- **Lists** - Ordered and unordered with nesting
- **Links** - Automatic link formatting
- **Code Blocks** - Syntax highlighting and inline code
- **Blockquotes** - Professional quote styling
- **Tables** - Responsive table design (with markdown library)
#### Email Styling Features
- π± **Responsive Design** - Adapts to desktop and mobile email clients
- π¨ **Professional CSS** - Clean, modern email appearance
- π§ **Email Client Compatibility** - Works with Gmail, Outlook, Apple Mail, etc.
- π§ **Graceful Fallback** - Basic conversion when advanced features unavailable
#### Markdown Content Example
```markdown
# Project Status Report
## Executive Summary
The project is **on track** with key milestones achieved:
### Completed Tasks β
1. User authentication system
2. Database schema design
3. API endpoints implementation
### In Progress π§
- Front-end development
- Integration testing
- Performance optimization
> **Note**: All deliverables are meeting quality standards.
For technical details, see: [Project Documentation](https://example.com/docs)
```python
def get_project_status():
return "Active"
```
```
This Markdown will be converted to professional HTML email format automatically.
### Basic Email Sending
```python
from gmail_send_skill import GmailSendSkill
from skill_compat import ExecutionContext
# Initialize
skill = GmailSendSkill()
ctx = ExecutionContext()
# Send email
result = skill.execute(ctx,
username="your.email@gmail.com",
app_password="abcd efgh ijkl mnop",
content="# Hello World!\n\nThis is a **test** email with *markdown*.",
to_email="recipient@example.com",
subject="Test Email from Skill"
)
print(f"Success: {result['success']}")
```
### Via AI Agent (Claude Desktop)
Simply ask Claude:
```
Can you send an email using the gmail_send function? I need to send:
- From: my.email@gmail.com
- To: colleague@company.com
- Subject: Project Update
- Content: A markdown report about our progress
I'll provide my app password when prompted.
```
## π Function Schema
### OpenAI Function Calling Format
```json
{
"name": "gmail_send",
"description": "Send email via Gmail using App Password authentication with Markdown support",
"parameters": {
"type": "object",
"properties": {
"username": {
"type": "string",
"description": "Gmail address for authentication"
},
"app_password": {
"type": "string",
"description": "16-character Gmail App Password"
},
"content": {
"type": "string",
"description": "Email content in Markdown format"
},
"to_email": {
"type": "string",
"description": "Recipient email address"
},
"subject": {
"type": "string",
"description": "Email subject line",
"default": "Email from Gmail Send Skill"
},
"from_name": {
"type": "string",
"description": "Display name for sender",
"default": null
}
},
"required": ["username", "app_password", "content", "to_email"]
}
}
```
## π Project Structure
```
mcp-server-gmail-send/
βββ π gmail_send_skill.py # Main skill implementation
βββ π§ skill_compat.py # Framework compatibility layer
βββ π₯οΈ mcp_server.py # MCP server with stdio transport
βββ π version.py # Version management
βββ π§ͺ test_gmail_skill.py # Comprehensive test suite
βββ βοΈ mcp_config.json # MCP client configuration
βββ π claude_desktop_config.json # Claude Desktop integration
βββ π¦ requirements.txt # Python dependencies
βββ π οΈ install.sh # Automated installation script
βββ π GMAIL_SEND_USAGE.md # Detailed usage guide
βββ π MCP_DEPLOYMENT.md # MCP deployment instructions
βββ π README.md # This file
```
## π§ Configuration
### MCP Server Configuration
Update paths in `mcp_config.json`:
```json
{
"mcpServers": {
"gmail-send": {
"command": "python",
"args": ["/absolute/path/to/mcp_server.py"],
"env": {
"PYTHONPATH": "/absolute/path/to/project"
}
}
}
}
```
### Claude Desktop Configuration
Update `claude_desktop_config.json` with your installation path and copy to:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Linux**: `~/.config/claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
## π§ͺ Testing
### Automated Testing
```bash
# Run all tests
python3 test_gmail_skill.py
# Test specific components
python3 test_gmail_skill.py --test TestGmailSendSkill
# Verbose output
python3 test_gmail_skill.py --verbose
```
### Manual Testing
```bash
# Test skill directly
python3 gmail_send_skill.py
# Test MCP server
python3 mcp_server.py --test
# Check version and info
python3 version.py --info
```
## βοΈ Technical Details
### Dependencies and Licensing
#### Core Dependencies (Built-in Python)
- `smtplib` - SMTP email sending
- `email.mime` - Email composition
- `ssl` - TLS encryption
- `json` - Configuration handling
- `re` - Regular expressions for fallback conversion
#### Optional Enhancement (Commercial-Friendly)
- **markdown** library (BSD 3-Clause License)
- β
Commercial use allowed
- β
Distribution allowed
- β
Modification allowed
- π§ Graceful fallback when unavailable
#### System Requirements
- Python 3.7+ (tested up to 3.12)
- Internet connection for Gmail SMTP
- Gmail account with 2FA enabled
### Architecture
```
Gmail Send Skill Architecture
βββ gmail_send_skill.py # Core skill implementation
βββ skill_compat.py # Framework compatibility layer
βββ mcp_server.py # MCP Protocol server
βββ version.py # Version management
HTML Conversion Pipeline:
Markdown Content β Advanced/Basic Converter β CSS Styling β Email HTML
```
### Conversion System Details
#### Advanced Mode (with markdown library)
- Full CommonMark specification support
- Extensions: tables, strikethrough, task lists
- Professional syntax highlighting
- Advanced table rendering
#### Fallback Mode (built-in)
- Regex-based Markdown parsing
- Core element support (headers, lists, formatting)
- Email-safe HTML generation
- Professional CSS styling maintained
## π Documentation
- π **[Usage Guide](GMAIL_SEND_USAGE.md)** - Comprehensive usage instructions and examples
- π **[MCP Deployment](MCP_DEPLOYMENT.md)** - Complete MCP integration guide
- π§ **[Installation Script](install.sh)** - Automated setup and configuration
- π§ͺ **[Test Suite](test_gmail_skill.py)** - Comprehensive testing framework
## π Security
### Best Practices
- β
**Use App Passwords** - Never use regular Gmail passwords
- β
**Enable 2FA** - Required for App Password generation
- β
**Secure Storage** - Never commit credentials to version control
- β
**Input Validation** - All parameters are validated before use
- β
**Error Handling** - Sensitive information is not exposed in errors
### Supported Authentication
- **Gmail App Passwords** (recommended)
- **G Suite/Workspace** accounts with App Passwords
- **2-Factor Authentication** required
## π Response Format
### Success Response
```json
{
"success": true,
"function_name": "gmail_send",
"result": {
"message": "Email sent successfully to recipient@example.com",
"timestamp": "2026-02-14T10:30:00",
"from": "sender@gmail.com",
"to": "recipient@example.com",
"subject": "Email Subject"
}
}
```
### Error Response
```json
{
"success": false,
"function_name": "gmail_send",
"error": {
"message": "Authentication failed. Please check your credentials.",
"type": "authentication_error",
"details": "SMTP Authentication Error: (535, 'Incorrect password')"
}
}
```
## π Version Information
Current Version: **1.0.0** (2026-02-14)
```bash
# Check version
python3 version.py --version
# Full version info
python3 version.py --info
# View changelog
python3 version.py --changelog
```
## π οΈ Requirements
### System Requirements
- **Python 3.7+** (required)
- **Internet connection** for SMTP access
- **Gmail account** with 2FA enabled
### Dependencies
- **Built-in Python libraries**: `smtplib`, `email`, `json`, `logging`
- **Optional**: `markdown>=3.4.0` (for rich formatting)
### Compatibility
- β
**MCP Protocol** 2024-11-05
- β
**OpenAI Function Calling** compatible
- β
**Claude Desktop** integration
- β
**Cross-platform** (macOS, Linux, Windows)
## π Troubleshooting
### Common Issues
#### Authentication Errors
```bash
# Verify App Password format (16 characters)
# Check 2FA is enabled
# Generate new App Password
```
#### Module Import Errors
```bash
# Check Python path
export PYTHONPATH=/path/to/mcp-server-gmail-send
# Verify file permissions
chmod 644 gmail_send_skill.py
```
#### MCP Connection Issues
```bash
# Test MCP server
python3 mcp_server.py --test
# Check Claude Desktop logs
tail -f ~/Library/Logs/Claude/claude-desktop.log
```
### Support Resources
- π **[Usage Guide](GMAIL_SEND_USAGE.md)** - Detailed troubleshooting
- π§ **[Deployment Guide](MCP_DEPLOYMENT.md)** - MCP-specific issues
- π§ͺ **Test Suite** - `python3 test_gmail_skill.py`
- π **Logs** - Check `gmail_send_mcp.log`
## π€ Contributing
1. **Fork the repository**
2. **Create feature branch**: `git checkout -b feature/amazing-feature`
3. **Commit changes**: `git commit -m 'Add amazing feature'`
4. **Push to branch**: `git push origin feature/amazing-feature`
5. **Open Pull Request**
### Development Setup
```bash
# Clone for development
git clone <repository-url>
cd mcp-server-gmail-send
# Install development dependencies
pip3 install -r requirements.txt
pip3 install pytest pytest-asyncio # For testing
# Run tests
python3 test_gmail_skill.py
# Check code style
python3 -m flake8 gmail_send_skill.py
```
## οΏ½ Version History
### v1.1.0 (2024-12-19) - Enhanced Markdown Support
- β¨ **Advanced Markdown Conversion** - Full markdown library support with extensions
- π¨ **Professional Email Styling** - Responsive CSS for email clients
- π§ **Graceful Fallback System** - Basic converter when external library unavailable
- βοΈ **Commercial License Compliance** - BSD-licensed dependencies
- π§ **Email Client Optimization** - Improved compatibility across platforms
- π§ͺ **Enhanced Testing** - Comprehensive conversion and styling tests
### v1.0.0 (2024-12-19) - Initial Release
- π§ **Gmail SMTP Integration** - Secure email sending via Gmail
- π **App Password Authentication** - Secure credential handling
- π€ **MCP Protocol Support** - Full Model Context Protocol implementation
- π **Basic Markdown Support** - Simple markdown to HTML conversion
- β
**Comprehensive Testing** - 18 unit tests with edge case coverage
- π οΈ **Local Development Tools** - Configuration templates and testing utilities
## οΏ½π License
This project is licensed under the terms specified in the [LICENSE](LICENSE) file.
### Third-Party License Compliance
- **markdown library** (Optional) - BSD 3-Clause License - Commercial use allowed
- **Python Standard Library** - Python Software Foundation License
## π Acknowledgments
- **Model Context Protocol** - For the standardized AI agent integration
- **OpenAI Function Calling** - For the function schema standard
- **Gmail SMTP** - For reliable email delivery infrastructure
- **Python Community** - For the excellent libraries and tools
- **Markdown Community** - For the BSD-licensed markdown processing library
---
**Built for AI-Powered Applications** π€ | **MCP Compatible** π | **Production Ready** π
*Gmail Send Skill v1.1.0 - Enhanced Markdown conversion with professional email styling*
Send mail through gmail.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues