Enables sending and receiving emails through Gmail using SMTP and IMAP/POP3 protocols, with support for attachments, HTML content, and filtering unread messages.
Email Send/Receive MCP Server
A Model Context Protocol (MCP) server for sending and receiving emails via SMTP, POP3, and IMAP. Built with FastMCP 2.0, this server enables AI assistants like Claude to interact with email services, making it easy to automate email workflows, check inboxes, and send messages programmatically.
🎯 What is MCP?
The Model Context Protocol (MCP) is an open standard that enables AI applications to securely connect to external data sources and tools. This server implements MCP to give AI assistants the ability to:
Send emails with attachments, CC/BCC support
Receive and read emails from IMAP/POP3 servers
Search and filter email messages
Work with multiple email providers (Gmail, Outlook, Yahoo, etc.)
Perfect for integration with AI assistants like Claude Desktop, this server acts as a bridge between conversational AI and your email infrastructure.
✨ Features
📤 Email Sending (SMTP)
✅ Send emails with validated recipient addresses
✅ Support for CC (Carbon Copy) and BCC (Blind Carbon Copy)
✅ HTML and plain text email bodies
✅ File attachments support with size validation
✅ Configurable sender information (name and email)
✅ Batch email validation for multiple recipients
✅ Smart TLS/SSL connection handling
📥 Email Receiving (IMAP/POP3)
✅ Retrieve emails from IMAP servers with full folder support
✅ POP3 protocol support for simple email retrieval
✅ Filter by mailbox/folder (INBOX, Sent, Drafts, etc.)
✅ Unread emails filtering
✅ Attachment information extraction
✅ Email metadata parsing (sender, subject, date, etc.)
✅ Body preview with length limiting
🔒 Email Validation & Security
✅ RFC-compliant email address validation
✅ Automatic email normalization
✅ Batch validation for multiple recipients
✅ App Password support for major providers
✅ TLS/SSL encryption for all connections
✅ Secure credential management via environment variables
📋 Table of Contents
🚀 Quick Start
Get started in 5 minutes! Follow these steps:
For detailed quick start instructions, see QUICKSTART.md.
📦 Installation
Prerequisites
Python 3.11 or higher - Download Python
Email account with SMTP/IMAP access (Gmail, Outlook, Yahoo, etc.)
App Password for your email provider (for Gmail, Outlook, Yahoo)
Method 1: Using uv (Recommended)
uv is a fast Python package manager that simplifies dependency management.
Method 2: Using pip
Verify Installation
⚙️ Configuration
Step 1: Create Environment File
Copy the example environment file:
Edit
.envwith your email server credentials:
Step 2: Email Provider Setup
Gmail Setup (Most Common)
For Gmail, you'll need to:
Enable 2-Factor Authentication
Go to Google Account Security
Enable 2-Step Verification
Generate an App Password
Visit App Passwords
Select "Mail" and your device
Copy the generated 16-character password
Use this password in your
.envfile
Enable IMAP Access (for receiving emails)
Open Gmail → Settings → See all settings
Go to "Forwarding and POP/IMAP" tab
Enable IMAP
Save Changes
Gmail Configuration:
Other Email Providers
For configuration details for Outlook, Yahoo, ProtonMail, iCloud, and custom SMTP servers, see EMAIL_PROVIDERS.md.
Configuration Parameters Explained
Parameter | Description | Default | Required |
| SMTP server hostname | smtp.gmail.com | Yes (for sending) |
| SMTP server port (587 for TLS, 465 for SSL) | 587 | Yes (for sending) |
| SMTP authentication username (usually email) | - | Yes (for sending) |
| SMTP authentication password (use app password) | - | Yes (for sending) |
| Use STARTTLS for SMTP (recommended for port 587) | true | No |
| IMAP server hostname | imap.gmail.com | Yes (for receiving) |
| IMAP server port (993 for SSL) | 993 | Yes (for receiving) |
| IMAP authentication username | - | Yes (for receiving) |
| IMAP authentication password | - | Yes (for receiving) |
| Use SSL for IMAP | true | No |
| POP3 server hostname | pop.gmail.com | No |
| POP3 server port (995 for SSL) | 995 | No |
| POP3 authentication username | - | No |
| POP3 authentication password | - | No |
| Use SSL for POP3 | true | No |
| Default sender email address | - | Yes |
| Default sender display name | MCP Email Server | No |
| Maximum attachment size in MB | 25 | No |
| Logging level (DEBUG, INFO, WARNING, ERROR) | INFO | No |
| Enable debug mode | false | No |
Security Best Practices
⚠️ Important Security Notes:
Never commit with real credentials to version control
Always use App Passwords instead of your main account password
Enable 2-Factor Authentication on your email account
Use TLS/SSL for all email connections
Store secrets securely in production (Azure Key Vault, AWS Secrets Manager, etc.)
Rotate passwords regularly and revoke unused app passwords
Limit permissions to only what's necessary
🛠️ MCP Tools (Functions)
This server exposes 3 powerful MCP tools that AI assistants can use to interact with email services. Each tool is thoroughly documented below.
1. send_email - Send Emails via SMTP
Send emails with full support for attachments, CC/BCC, and HTML formatting.
Function Signature:
Parameters:
Parameter | Type | Required | Description |
|
| ✅ Yes | Primary recipient email address (validated against RFC standards) |
|
| ✅ Yes | Email subject line |
|
| ✅ Yes | Email body content (plain text or HTML) |
|
| ❌ No | List of absolute file paths to attach (validates size and existence) |
|
| ❌ No | List of carbon copy recipient email addresses |
|
| ❌ No | List of blind carbon copy recipient email addresses |
|
| ❌ No | Set to
for HTML-formatted emails (default:
for plain text) |
Returns:
Success: Formatted confirmation message with delivery details
Error: Error message explaining what went wrong
Example Usage in Claude:
Example Response:
Features:
✅ Automatic email address validation and normalization
✅ File attachment with size validation (default max: 25MB)
✅ Support for multiple CC and BCC recipients
✅ HTML email support with proper MIME encoding
✅ Smart SMTP connection handling (TLS/SSL)
✅ Detailed error messages for troubleshooting
2. receive_emails_imap - Retrieve Emails via IMAP
Retrieve and read emails from IMAP servers with advanced filtering options.
Function Signature:
Parameters:
Parameter | Type | Required | Default | Description |
|
| ❌ No |
| Mailbox/folder name (INBOX, Sent, Drafts, etc.) |
|
| ❌ No |
| Maximum number of emails to retrieve (1-100) |
|
| ❌ No |
| Only retrieve unread messages |
Returns:
Formatted list of emails with metadata and body previews
Each email includes: ID, From, To, Subject, Date, Body Preview, Attachments
Example Usage in Claude:
Example Response:
Features:
✅ Support for all IMAP folders (INBOX, Sent, Drafts, custom folders)
✅ Unread-only filtering
✅ Attachment detection and metadata extraction
✅ Email body preview (first 200 characters)
✅ Full metadata parsing (sender, recipient, date, subject)
✅ Handles multiple encodings and international characters
✅ Secure SSL/TLS connection
Supported Mailbox Names:
INBOX- Primary inboxSent- Sent emailsDrafts- Draft messagesTrash- Deleted itemsSpamorJunk- Spam folderCustom folders created by the user
3. receive_emails_pop3 - Retrieve Emails via POP3
Retrieve emails using the simpler POP3 protocol (note: POP3 is less feature-rich than IMAP).
Function Signature:
Parameters:
Parameter | Type | Required | Default | Description |
|
| ❌ No |
| Maximum number of emails to retrieve |
Returns:
Formatted list of emails (similar to IMAP output)
Example Usage in Claude:
Features:
✅ Simple email retrieval
✅ Attachment detection
✅ Email metadata parsing
✅ SSL/TLS support
Note: POP3 has limitations compared to IMAP:
❌ No folder support (only retrieves from main inbox)
❌ No unread filtering
❌ Less efficient for large mailboxes
✅ Use IMAP when possible for better features
Tool Comparison
Feature |
|
|
|
Primary Function | Send emails | Receive emails | Receive emails |
Protocol | SMTP | IMAP | POP3 |
Attachments Support | ✅ Send | ✅ Detect | ✅ Detect |
HTML Support | ✅ Yes | ✅ Yes | ✅ Yes |
Folder Support | N/A | ✅ Yes | ❌ No |
Unread Filtering | N/A | ✅ Yes | ❌ No |
CC/BCC Support | ✅ Yes | N/A | N/A |
Use Case | Sending automated emails | Full email management | Simple email retrieval |
💡 Usage Examples
Running the MCP Server
Start the server in HTTP mode (for MCP client connections):
The server will:
Load configuration from
.envfileInitialize SMTP, IMAP, and POP3 services
Start listening on
http://0.0.0.0:8888/mcpExpose MCP tools for AI assistants to use
Log all activities to console and log files
Server Output:
Example 1: Send a Simple Text Email
Natural Language Request (via Claude):
What Happens:
Claude uses the
send_emailtoolEmail address is validated
Email is sent via configured SMTP server
Confirmation is returned
MCP Tool Call (Behind the Scenes):
Response:
Example 2: Send HTML Email with Attachments
Natural Language Request:
MCP Tool Call:
Example 3: Send Email with CC and BCC
Natural Language Request:
MCP Tool Call:
Example 4: Check Unread Emails
Natural Language Request:
MCP Tool Call:
Response:
Example 5: Check Specific Email Folder
Natural Language Request:
MCP Tool Call:
Example 6: Retrieve Emails with Attachments
Natural Language Request:
MCP Tool Call:
Response (showing attachment info):
Example 7: Using POP3 for Simple Retrieval
Natural Language Request:
MCP Tool Call:
Programmatic Usage (Python)
If you want to use the email services directly in Python (without MCP):
For more examples, see examples.py in the repository.
🧪 Testing
This project includes comprehensive test coverage for validators, configuration, and core functionality.
Running Tests
Run All Tests
Run Specific Test Files
Test Coverage
The project includes tests for:
✅ Email Validation (tests/test_validators.py)
Valid email address validation
Invalid email detection (missing @, invalid domain, etc.)
Email normalization
Batch email validation
Email formatting with names
✅ Configuration Management (tests/test_config.py)
Settings loading from environment
Default value validation
Port number validation
Field type validation
✅ SMTP Testing (test_smtp.py, test_smtp_variations.py)
SMTP connection testing
Email sending variations
Different provider configurations
✅ Integration Tests (test_kakao_specific.py)
Provider-specific testing
Real-world scenarios
Example Test Output
Writing New Tests
When adding new features, include tests following this pattern:
Integration Testing
For testing with real email servers:
Create a test email account (don't use your primary account)
Set up test credentials in
.env.test:SMTP_SERVER=smtp.gmail.com SMTP_PORT=587 SMTP_USERNAME=test-account@gmail.com SMTP_PASSWORD=test-app-passwordRun integration tests (not included in default test suite):
pytest tests/integration/ -v --env-file=.env.test
Manual Testing
You can test the MCP server manually:
Start the server:
python main.pyTest with curl (health check):
curl http://localhost:8888/api/health # Expected: {"status":"ok"}Test email sending (using examples.py):
python examples.py
Testing Checklist
Before submitting code:
All existing tests pass (
pytest tests/ -v)New tests added for new features
Code coverage maintained or improved
Tests follow naming conventions (
test_*.py,Test*classes)Async tests use
@pytest.mark.asynciodecoratorIntegration tests are marked separately
Continuous Integration
This project is ready for CI/CD integration. Example GitHub Actions workflow:
🔌 Integration with MCP Clients
This server is compatible with any MCP client. Below are detailed instructions for popular clients.
Claude Desktop Integration
Claude Desktop is Anthropic's official desktop app that supports MCP servers.
Setup Instructions
Locate Claude Desktop Configuration File
The configuration file location varies by operating system:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add Email MCP Server to Configuration
Option A: Using Environment Variables (Recommended)
{ "mcpServers": { "email": { "command": "python", "args": ["/absolute/path/to/email-send-mcp/main.py"], "env": { "SMTP_SERVER": "smtp.gmail.com", "SMTP_PORT": "587", "SMTP_USERNAME": "your-email@gmail.com", "SMTP_PASSWORD": "your-app-password", "IMAP_SERVER": "imap.gmail.com", "IMAP_PORT": "993", "IMAP_USERNAME": "your-email@gmail.com", "IMAP_PASSWORD": "your-app-password", "DEFAULT_FROM_EMAIL": "your-email@gmail.com" } } } }Option B: Using .env File (Simpler)
{ "mcpServers": { "email": { "command": "python", "args": ["/absolute/path/to/email-send-mcp/main.py"], "cwd": "/absolute/path/to/email-send-mcp" } } }This option assumes you have a
.envfile in the project directory.Restart Claude Desktop
After updating the configuration, fully quit and restart Claude Desktop.
Verify Integration
In Claude Desktop, you should see email tools available. Try asking:
Can you help me send an email?Claude should recognize it has access to the
send_emailtool.
Using Email Tools in Claude Desktop
Once configured, you can use natural language to interact with emails:
Sending Emails:
"Send an email to john@example.com with subject 'Meeting' and tell him about tomorrow's meeting"
"Email the team about the project update"
"Send an email with the quarterly report attached"
Receiving Emails:
"Check my inbox for unread emails"
"Show me the last 10 emails I received"
"What emails with attachments do I have?"
"Check my Sent folder"
Other MCP Clients
This server works with any MCP-compatible client:
Custom MCP Client
HTTP MCP Client
The server also supports HTTP transport for web-based integrations:
Environment Variable Reference for MCP Clients
When configuring MCP clients, these environment variables are required:
Minimum Required Variables:
For Email Receiving (Optional):
Troubleshooting MCP Integration
Issue: Tools not appearing in Claude Desktop
Solution: Verify the config file path is correct
Solution: Check that the Python path is absolute
Solution: Restart Claude Desktop after configuration changes
Issue: "Module not found" errors
Solution: Ensure dependencies are installed (
pip install -e .)Solution: Use the full Python path (e.g.,
/usr/local/bin/python3)
Issue: Authentication errors
Solution: Verify environment variables are set correctly
Solution: Check that app passwords are used (not regular passwords)
Solution: Verify SMTP/IMAP credentials are correct
Issue: Server not starting
Solution: Check logs in the
logs/directorySolution: Verify
.envfile exists and is readableSolution: Test server manually:
python main.py
🐳 Docker Deployment
Docker provides a containerized way to run the Email MCP Server, ensuring consistency across different environments.
Prerequisites
Docker installed (Get Docker)
Docker Compose (optional, for multi-container setups)
Quick Start with Docker
Step 1: Build the Docker Image
This creates a Docker image with all dependencies installed.
Step 2: Run the Container
Option A: Using Environment Variables
Option B: Using .env File (Recommended)
Step 3: Verify Container is Running
Docker Compose Setup
For easier management, use Docker Compose:
docker-compose.yml
Start with Docker Compose:
Docker Management Commands
Production Docker Best Practices
Use Multi-Stage Builds (already in Dockerfile)
Run as Non-Root User (already configured)
Use Health Checks (see Docker Compose example)
Mount Logs as Volumes for persistence
Use Secrets Management for production credentials
Set Resource Limits:
☁️ Azure Container Apps Deployment
Deploy the Email MCP Server to Azure Container Apps for scalable, serverless hosting.
Prerequisites
Azure account with active subscription
Azure CLI installed (Install Azure CLI)
Docker installed
Deployment Steps
Step 1: Login to Azure
Step 2: Create Resource Group
Step 3: Create Azure Container Registry (ACR)
Step 4: Build and Push Image to ACR
Step 5: Create Container Apps Environment
Step 6: Deploy Container App
Step 7: Get Application URL
Azure Container Apps Features
✅ Auto-scaling: Automatically scales based on HTTP traffic ✅ Zero Downtime: Seamless deployments with rolling updates ✅ Built-in Load Balancing: Distributes traffic across replicas ✅ HTTPS by Default: Automatic SSL/TLS certificates ✅ Secrets Management: Secure credential storage ✅ Monitoring: Integrated with Azure Monitor and Application Insights
Update Deployment
Monitoring and Logs
Cost Optimization
Use consumption plan (pay only for what you use)
Set appropriate min/max replicas
Configure scale rules based on metrics
Use reserved capacity for predictable workloads
Security Best Practices
Use Azure Key Vault for secrets
Enable Managed Identity for ACR authentication
Use Private Endpoints for internal-only access
Configure CORS policies
Enable Azure AD authentication for API access
Use VNet integration for enhanced security
🏗️ Architecture
System Architecture
Project Structure
Component Details
1. main.py - Application Entry Point
Loads environment variables from
.envConfigures logging (console + file)
Initializes FastMCP server
Sets up SMTP, IMAP, POP3 services
Starts HTTP server on port 8888
2. src/config.py - Configuration Management
Uses Pydantic Settings for type-safe configuration
Loads settings from environment variables
Validates port numbers and required fields
Provides singleton pattern for settings access
Supports multiple email providers
3. src/server.py - MCP Server
Defines MCP tools using
@mcp.tool()decoratorIntegrates EmailSender and EmailReceiver services
Handles tool parameter validation
Formats responses for AI assistants
Provides health check endpoint
4. src/services/email_sender.py - SMTP Service
Async SMTP client using
aiosmtplibSupports TLS (port 587) and SSL (port 465)
Validates all email addresses before sending
Handles file attachments with size limits
Supports CC, BCC, and HTML emails
Smart MIME message construction
5. src/services/email_receiver.py - IMAP/POP3 Service
Async IMAP client using
aioimaplibSync POP3 client using
poplibFolder/mailbox support (IMAP)
Unread filtering (IMAP)
Email parsing with proper encoding handling
Attachment metadata extraction
6. src/utils/validators.py - Email Utilities
RFC-compliant email validation using
email-validatorEmail normalization and formatting
Batch email validation
Display name formatting
Technology Stack
Component | Technology | Purpose |
MCP Framework | FastMCP 2.0 | Model Context Protocol server implementation |
SMTP Client | aiosmtplib | Async SMTP email sending |
IMAP Client | aioimaplib | Async IMAP email receiving |
POP3 Client | poplib (stdlib) | Sync POP3 email receiving |
Email Validation | email-validator | RFC-compliant email address validation |
Settings Management | Pydantic Settings | Type-safe configuration |
Environment Vars | python-dotenv | .env file support |
HTTP Server | FastAPI (via FastMCP) | HTTP transport for MCP |
Package Manager | uv | Fast Python package management |
Testing | pytest, pytest-asyncio | Test framework |
Code Quality | black, isort, mypy, ruff | Code formatting and linting |
Data Flow
Sending an Email
Receiving Emails
Logging and Monitoring
Log Location:
logs/email-send-mcp_YYYYMMDD.logLog Rotation: Daily (midnight)
Log Format:
YYYY-MM-DD HH:MM:SS - logger_name - LEVEL - messageLog Levels: DEBUG, INFO, WARNING, ERROR
Console Output: Enabled for development
Structured Logging: JSON-compatible format for cloud environments
Security Architecture
Credential Storage: Environment variables (never hardcoded)
TLS/SSL: Enforced for all email connections
Input Validation: All emails validated before processing
Attachment Validation: File size and existence checks
Error Handling: Sensitive data not exposed in errors
Logging: Passwords and secrets never logged
🔧 Troubleshooting
Common Issues and Solutions
Issue: "Authentication failed" or "Invalid credentials"
Symptoms:
Error message: "535 Authentication failed" or similar
Cannot connect to SMTP/IMAP server
Solutions:
Use App Password instead of regular password
For Gmail: Create App Password
For Yahoo: Account Security → Generate app password
For Outlook: May need app-specific password or OAuth
Verify credentials in
# Check your .env file cat .env | grep -E "USERNAME|PASSWORD"Ensure 2FA is enabled (required for app passwords)
Check IMAP/SMTP access is enabled
Gmail: Settings → See all settings → Forwarding and POP/IMAP → Enable IMAP
Outlook: Settings → Sync email → POP and IMAP
Issue: "Connection timeout" or "Connection refused"
Symptoms:
Server doesn't respond
Timeout errors after 60+ seconds
Solutions:
Check firewall settings
# Test SMTP connectivity telnet smtp.gmail.com 587 # Test IMAP connectivity telnet imap.gmail.com 993Verify server addresses and ports
SMTP: Usually port 587 (TLS) or 465 (SSL)
IMAP: Usually port 993 (SSL)
POP3: Usually port 995 (SSL)
Check if your ISP blocks SMTP/IMAP ports
Some ISPs block port 25, 587
Try using VPN or alternative network
Verify TLS/SSL settings match your provider
# For port 587, use: SMTP_USE_TLS=true # For port 465, use: SMTP_USE_TLS=true # aiosmtplib handles this automatically
Issue: Gmail "Less secure app access" error
Symptoms:
"Please log in via your web browser" error
Account access blocked
Solutions:
Enable 2-Factor Authentication
Go to Google Account Security
Turn on 2-Step Verification
Generate and use App Password
Visit App Passwords
Select "Mail" and your device
Copy the 16-character password
Use in
.envfile (remove spaces)
Never use "Less secure app access" (deprecated and insecure)
Issue: "Module not found" errors
Symptoms:
Solutions:
Issue: "Permission denied" or "File not found" (attachments)
Symptoms:
"Attachment file not found: /path/to/file.pdf"
Permission errors when reading attachment files
Solutions:
Use absolute paths for attachments
# ✅ Good attachments=["/home/user/documents/report.pdf"] # ❌ Bad attachments=["report.pdf"]Verify file exists and is readable
ls -la /path/to/file.pdf # Should show readable permissionsCheck file size
# Default max is 25MB du -h /path/to/file.pdf
Issue: "Tools not appearing in Claude Desktop"
Symptoms:
MCP server configured but tools don't show up
Claude doesn't recognize email commands
Solutions:
Verify config file path is correct
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Use absolute paths in configuration
{ "mcpServers": { "email": { "command": "python", "args": ["/absolute/path/to/email-send-mcp/main.py"] } } }Restart Claude Desktop completely
Quit application (not just close window)
Restart from Applications/Start Menu
Check server logs
# View logs to see if server started tail -f logs/email-send-mcp_*.log
Issue: Email sends but recipient doesn't receive it
Symptoms:
"Email sent successfully" message
But recipient never receives the email
Solutions:
Check recipient's spam/junk folder
Verify sender email is correct
DEFAULT_FROM_EMAIL=your-actual-email@gmail.comCheck email provider's sent folder
Verify recipient email address is valid
# Test email validation from src.utils.validators import validate_email_address is_valid, result = validate_email_address("recipient@example.com") print(f"Valid: {is_valid}, Result: {result}")Check for bounce-back emails in your inbox
Issue: "Maximum attachment size exceeded"
Symptoms:
Error about attachment size limit
Solutions:
Check file size
du -h attachment.pdfIncrease limit in
MAX_ATTACHMENT_SIZE_MB=50 # Default is 25Compress large files before attaching
Use cloud storage links for very large files
Issue: Cannot receive emails / Empty inbox
Symptoms:
"No emails found" message
IMAP returns empty results
Solutions:
Verify IMAP credentials are correct
IMAP_USERNAME=your-email@gmail.com IMAP_PASSWORD=your-app-passwordCheck mailbox name is correct
# Common mailbox names receive_emails_imap(mailbox="INBOX") # ✅ receive_emails_imap(mailbox="Sent") # ✅ receive_emails_imap(mailbox="inbox") # ❌ Case-sensitiveVerify emails exist in that folder
Check via web interface
Try different folder: "Sent", "Drafts", etc.
Increase limit parameter
receive_emails_imap(limit=50) # Default is 10
Debugging Tips
Enable Debug Logging
Add to .env:
Restart server and check logs:
Test SMTP Connection Manually
Test IMAP Connection Manually
Check Environment Variables
Getting Help
If you're still experiencing issues:
Check existing issues: GitHub Issues
Search discussions: GitHub Discussions
Open a new issue:
Include error messages
Include relevant logs (remove sensitive data)
Include your configuration (without passwords)
Include steps to reproduce
👥 Contributing
We welcome contributions! Here's how you can help:
Quick Start for Contributors
Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/email-send-mcp.git cd email-send-mcpInstall development dependencies
pip install -e ".[dev]"Create a branch
git checkout -b feature/your-feature-nameMake your changes and add tests
Run tests and linting
# Run tests pytest tests/ -v # Format code black src/ tests/ main.py isort src/ tests/ main.py # Type checking mypy src/ # Linting ruff check src/ tests/Commit and push
git commit -m "Add feature: description" git push origin feature/your-feature-nameCreate Pull Request
Contribution Guidelines
Code Style: Follow PEP 8, use Black formatter
Tests: Add tests for new features
Documentation: Update README and docstrings
Commits: Write clear commit messages
Issues: Link PRs to related issues
For detailed guidelines, see CONTRIBUTING.md.
📚 Additional Resources
QUICKSTART.md - Get started in 5 minutes
EMAIL_PROVIDERS.md - Provider-specific configurations
CONTRIBUTING.md - Contribution guidelines
examples.py - Code examples
FastMCP Documentation - MCP framework docs
Model Context Protocol - MCP specification
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
FastMCP - Excellent MCP framework by @jlowin
Anthropic - Model Context Protocol specification
Contributors - Thank you to all contributors!
📞 Support
Issues: GitHub Issues
Discussions: GitHub Discussions
Email: For private inquiries only
⭐ Star this repo if you find it useful!
Made with ❤️ for the MCP community