MCP Email Server with SendGrid
Enables programmatic email sending capabilities via SendGrid, supporting basic text or HTML emails, dynamic templates, and file attachments.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Email Server with SendGridSend a thank you email to mark@example.com for his help with the code review"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
✉️ MCP Email Server with SendGrid
A Model Context Protocol (MCP) server that provides email sending capabilities through SendGrid. This server enables AI applications like Claude Desktop, Langflow, and other MCP clients to send emails programmatically.
🚀 Features
📧 Basic Email Sending - Send text or HTML emails
🎨 Template Support - Use SendGrid dynamic templates
📎 File Attachments - Attach files to emails
👥 CC/BCC Support - Send copies to multiple recipients
🐳 Docker Ready - Containerized deployment
🔒 Secure - Environment-based configuration
Related MCP server: Cloudflare Email MCP
📋 Prerequisites
Python 3.10 or higher
SendGrid account and API key (Sign up here)
Verified sender email address in SendGrid
Docker (optional, for containerized deployment)
🛠️ Installation
Option 1: Local Python Setup
Clone or navigate to the repository:
cd d:\repos\mcp_mailCreate and activate virtual environment:
python -m venv venv .\venv\Scripts\activate # WindowsInstall dependencies:
pip install -e .Configure environment variables:
copy .env.example .envEdit
.envand add your credentials:SENDGRID_API_KEY=your_actual_sendgrid_api_key DEFAULT_FROM_EMAIL=your-verified-email@example.com DEFAULT_FROM_NAME=Your Name
Option 2: Docker Deployment
Configure environment:
copy .env.example .env # Edit .env with your credentialsBuild and run with Docker Compose:
docker-compose up -dOr build manually:
docker build -t mcp-email-server . docker run --env-file .env mcp-email-server
🔧 Configuration
SendGrid Setup
Create a SendGrid account at sendgrid.com
Generate an API key:
Go to Settings → API Keys
Click "Create API Key"
Select "Full Access" or "Restricted Access" with Mail Send permissions
Copy the API key (you'll only see it once!)
Verify sender email:
Go to Settings → Sender Authentication
Verify the email address you'll use as the sender
This is required by SendGrid to prevent spam
Environment Variables
Variable | Required | Description |
| Yes | Your SendGrid API key |
| Yes | Default sender email (must be verified in SendGrid) |
| No | Default sender name displayed to recipients |
📖 Usage
Running the Server
Local:
python server.pyDocker:
docker-compose upThe server communicates via stdio (standard input/output) using the MCP protocol.
Available MCP Tools
1. send_email
Send a basic email with text or HTML content.
Parameters:
to_email(required): Recipient email addresssubject(required): Email subject linebody(required): Email content (text or HTML)from_email(optional): Sender email (uses DEFAULT_FROM_EMAIL if not provided)from_name(optional): Sender namecc_emails(optional): List of CC recipientsbcc_emails(optional): List of BCC recipientsis_html(optional): Set to true for HTML emails (default: false)
Example:
{
"to_email": "recipient@example.com",
"subject": "Hello from MCP",
"body": "<h1>Welcome!</h1><p>This is a test email.</p>",
"is_html": true
}2. send_email_with_template
Send an email using a SendGrid dynamic template.
Parameters:
to_email(required): Recipient email addresstemplate_id(required): SendGrid template IDdynamic_data(required): Dictionary of template variablesfrom_email(optional): Sender emailfrom_name(optional): Sender namesubject(optional): Override template subject
Example:
{
"to_email": "user@example.com",
"template_id": "d-1234567890abcdef",
"dynamic_data": {
"username": "John",
"action_url": "https://example.com/verify"
}
}3. send_email_with_attachments
Send an email with file attachments.
Parameters:
to_email(required): Recipient email addresssubject(required): Email subject linebody(required): Email contentattachment_paths(required): List of file paths to attachfrom_email(optional): Sender emailfrom_name(optional): Sender nameis_html(optional): HTML email flag
Example:
{
"to_email": "recipient@example.com",
"subject": "Report Attached",
"body": "Please find the report attached.",
"attachment_paths": ["/path/to/report.pdf", "/path/to/data.csv"]
}🔌 Integration Examples
Claude Desktop
Add to your Claude Desktop config file (claude_desktop_config.json):
{
"mcpServers": {
"email": {
"command": "python",
"args": ["d:\\repos\\mcp_mail\\server.py"],
"env": {
"SENDGRID_API_KEY": "your_api_key",
"DEFAULT_FROM_EMAIL": "your-email@example.com",
"DEFAULT_FROM_NAME": "Your Name"
}
}
}
}Or using Docker:
{
"mcpServers": {
"email": {
"command": "docker",
"args": ["run", "-i", "--rm", "--env-file", "d:\\repos\\mcp_mail\\.env", "mcp-email-server"]
}
}
}Langflow Integration
Install an MCP client component in Langflow (if available) or use a custom Python component
Configure the MCP server connection with the email server's stdio transport
Call the email tools from your Langflow flows
See examples/langflow_integration.md for detailed instructions.
Python Client Example
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
server_params = StdioServerParameters(
command="python",
args=["d:/repos/mcp_mail/server.py"],
env={
"SENDGRID_API_KEY": "your_key",
"DEFAULT_FROM_EMAIL": "your@email.com"
}
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# Call the send_email tool
result = await session.call_tool("send_email", {
"to_email": "recipient@example.com",
"subject": "Test Email",
"body": "Hello from MCP!",
"is_html": False
})
print(result)🧪 Testing
Run the test script to verify functionality:
python test_server.pyThis will test the email sending functions with mocked SendGrid responses.
🐛 Troubleshooting
"SendGrid client not initialized"
Ensure
SENDGRID_API_KEYis set in your.envfileVerify the API key is valid and has Mail Send permissions
"403 Forbidden" error
Your sender email address must be verified in SendGrid
Go to SendGrid Settings → Sender Authentication
"No from_email provided"
Set
DEFAULT_FROM_EMAILin your.envfile, orProvide
from_emailparameter in each request
Attachments not working
Ensure the file paths are absolute and accessible
Check file permissions
Verify files exist at the specified paths
📚 Resources
📄 License
MIT License - feel free to use this in your projects!
🤝 Contributing
Contributions welcome! Feel free to submit issues or pull requests.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceAn MCP server that provides email sending capabilities via SMTP, featuring tools for sending standard and template-based emails. It utilizes the FastMCP Streamable HTTP transport for flexible client connectivity over HTTP without requiring stdio subprocesses.Last updated5MIT
- Alicense-qualityDmaintenanceEnables AI agents to send emails via Cloudflare's Email Service. Provides both MCP server integration for AI tools and a REST API for traditional applications with support for HTML content, attachments, and secure authentication.Last updated2MIT
- AlicenseAqualityCmaintenanceAn MCP server that enables AI assistants to send emails via SMTP, supporting simple and custom emails with attachments and CC/BCC, plus connection testing.Last updated328MIT
- Alicense-qualityDmaintenanceA production-ready MCP server that empowers AI agents to securely send emails via SMTP, supporting plain text, HTML, and attachments.Last updatedMIT
Related MCP Connectors
Shipmail MCP server for AI agent custom-domain email inboxes with REST API and webhooks.
Hosted email MCP for AI agents with inboxes, send/receive, memory, recovery, and credits.
Email for AI agents — send, receive as a webhook, manage domains, templates, routing.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wojkos/mcp_sg_mail'
If you have feedback or need assistance with the MCP directory API, please join our Discord server