Email MCP Server: Send Emails from Claude, Cursor & AI Assistants
Connect your AI assistant to email with the SendPigeon MCP server. Send emails, manage templates, and check delivery status — all through natural language.
Your AI assistant can now send emails. One config change, and Claude, Cursor, or any MCP-compatible client gets access to your entire email workflow: sending, templates, contacts, and delivery tracking.
Quickest setup:
npx @sendpigeon/mcp init
Paste your API key, pick a client, done. Config written automatically.
What is MCP?
The Model Context Protocol (MCP) is an open standard that lets AI assistants call external tools. Instead of pasting API keys into prompts or writing one-off scripts, you configure an MCP server once and your AI can use it natively. Think of it as USB-C for AI — one plug, any device.
Setup
Step 1: Get an API key
Sign up at sendpigeon.com and grab an API key from the dashboard. Use a test-mode key (sk_test_...) while setting up — emails won't actually deliver.
Step 2: Run the init command
npx @sendpigeon/mcp init
Paste your API key, pick your client (Claude Desktop, Cursor, or Claude Code), and the config file is written for you. Merges with existing MCP servers automatically.
Step 3: Restart and use
Restart your AI client. You should see SendPigeon's tools available. Try asking:
"Send a test email to me@example.com with subject 'Hello from AI'"
Manual setup
Or configure manually. Add the server block to your client's config file:
Claude Desktop
Open ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"sendpigeon": {
"command": "npx",
"args": ["-y", "@sendpigeon/mcp"],
"env": {
"SENDPIGEON_API_KEY": "sk_test_your_key_here"
}
}
}
}
Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"sendpigeon": {
"command": "npx",
"args": ["-y", "@sendpigeon/mcp"],
"env": {
"SENDPIGEON_API_KEY": "sk_test_your_key_here"
}
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"sendpigeon": {
"command": "npx",
"args": ["-y", "@sendpigeon/mcp"],
"env": {
"SENDPIGEON_API_KEY": "sk_test_your_key_here"
}
}
}
}
Claude Code
Add to .mcp.json in your project root:
{
"mcpServers": {
"sendpigeon": {
"command": "npx",
"args": ["-y", "@sendpigeon/mcp"],
"env": {
"SENDPIGEON_API_KEY": "sk_test_your_key_here"
}
}
}
}
What you can do
Once connected, your AI assistant can:
Send emails — "Send a welcome email to john@acme.com from hello@myapp.com"
Use templates — "Send the password-reset template to the user, with their name set to Sarah"
Check delivery — "What's the status of email em_abc123?"
Manage templates — "Create a welcome template with name and company variables"
Manage contacts — "Add jane@example.com to my audience with the newsletter tag"
Send broadcasts — "Create a newsletter broadcast and send it to everyone tagged as subscriber"
Configure webhooks — "Set up a webhook to https://myapp.com/hooks for delivery events"
View domains — "List my sending domains and their verification status"
All through natural conversation. No code, no dashboard, no context switching.
Example conversation
Here's a realistic workflow — an AI assistant sending a welcome email via template:
You: Send the welcome email template to sarah@acme.com from hello@myapp.com. Set the name variable to Sarah and company to Acme Corp.
AI: I'll send that using your welcome template. Let me look it up first.
[AI calls
get_templatewith templateId "welcome"]The template uses variables
nameandcompany. Sending now.[AI calls
send_template_emailwith the parameters]Done! Email sent (ID:
em_x7k9m2). It's queued for delivery. Want me to check the status in a minute?
Use test-mode API keys during development. Keys starting with sk_test_ send emails through the local dev server instead of delivering them. Switch to sk_live_ when you're ready for production.
Tools reference
Sending — send_email, send_template_email, send_batch_emails, get_email_status, cancel_email
Templates — list_templates, get_template, create_template, update_template, publish_template, delete_template
Domains — list_domains, create_domain, get_domain, verify_domain, delete_domain
Contacts — list_contacts, create_contact, update_contact, delete_contact, batch_contacts, get_audience_stats
Broadcasts — create_broadcast, send_broadcast, schedule_broadcast, get_broadcast_analytics, list_broadcast_recipients
Webhooks — get_webhook_config, enable_webhook, update_webhook, disable_webhook, test_webhook, list_webhook_deliveries
Tracking — get_tracking_defaults, update_tracking_defaults
Suppressions — list_suppressions, delete_suppression
Over 40 tools total. See the full reference for details.
Next Steps
- Full MCP reference: MCP Server Docs — config paths, all tools, examples
- Send emails from code: How to Send Email in Node.js
- CLI for your terminal: SendPigeon CLI
- Compare email APIs: Best Email API for Developers