Skip to main content
Glama
unosend

Unosend MCP Server

Official
by unosend
README.md
# Unosend MCP Server

Send emails from AI assistants using the Unosend API. Works with Claude Desktop, Cursor, and other MCP clients.

## Features

- âœ‰ī¸ Send plain text and HTML emails
- 📅 Schedule emails for future delivery
- đŸ‘Ĩ Add CC and BCC recipients
- â†Šī¸ Configure reply-to addresses
- 🔒 Customizable sender email (requires verified domain)
- đŸ“ĸ Create and send broadcast campaigns to contact lists
- 📄 Manage reusable email templates with `{{variable}}` interpolation

## Installation

```bash
# Clone and build
git clone https://github.com/unosend/mcp-server.git
cd mcp-server
npm install
npm run build
```

## Setup

### 1. Get your API Key

1. Go to [Unosend Dashboard](https://www.unosend.co/api-keys)
2. Create a new API key
3. Copy the key (starts with `un_`)

### 2. Verify your domain

To send emails from your own domain, [verify it first](https://www.unosend.co/domains).

## Configuration

### Cursor

Open Cursor Settings → MCP → Add new global MCP server:

```json
{
  "mcpServers": {
    "unosend": {
      "type": "command",
      "command": "node /path/to/unosend-mcp/build/index.js --key=un_YOUR_API_KEY --sender=hello@yourdomain.com"
    }
  }
}
```

### Claude Desktop

Open Claude Desktop settings → Developer → Edit Config:

```json
{
  "mcpServers": {
    "unosend": {
      "command": "node",
      "args": ["/path/to/unosend-mcp/build/index.js"],
      "env": {
        "UNOSEND_API_KEY": "un_YOUR_API_KEY",
        "SENDER_EMAIL_ADDRESS": "hello@yourdomain.com",
        "REPLY_TO_EMAIL_ADDRESS": "support@yourdomain.com"
      }
    }
  }
}
```

## Arguments

| Argument | Environment Variable | Description |
|----------|---------------------|-------------|
| `--key` | `UNOSEND_API_KEY` | Your Unosend API key (required) |
| `--sender` | `SENDER_EMAIL_ADDRESS` | Default sender email (optional) |
| `--reply-to` | `REPLY_TO_EMAIL_ADDRESS` | Default reply-to email (optional) |

## Usage

Once configured, you can ask Claude or Cursor to send emails:

> "Send an email to <john@example.com> with the subject 'Meeting Tomorrow' and let him know we're meeting at 3pm"

> "Email the team a summary of today's work"

> "Schedule an email to be sent tomorrow at 9am reminding me about the deadline"

> "Create a welcome email template with a first name variable, then send it to user@example.com"

> "Create a broadcast to my newsletter audience with this month's update, then send it"

> "List my recent broadcasts and show me the delivery stats for the last one"

## Available Tools

### Email Tools

| Tool | Description |
|------|-------------|
| `send_email` | Send an email with HTML/text, CC/BCC, scheduling |
| `get_email` | Get details and status of a sent email |
| `list_emails` | List recent emails from your account |
| `cancel_email` | Cancel a scheduled email |

### SMS Tools

| Tool | Description |
|------|-------------|
| `send_sms` | Send an SMS message ($0.0075/segment) |
| `get_sms` | Get details of an SMS message |

### Validation Tools

| Tool | Description |
|------|-------------|
| `validate_email` | Validate an email address ($0.01/validation) |

### Domain Tools

| Tool | Description |
|------|-------------|
| `list_domains` | List all verified domains |
| `get_domain` | Get domain details and DNS records |

### Audience & Contact Tools

| Tool | Description |
|------|-------------|
| `list_audiences` | List all audiences (contact lists) |
| `create_contact` | Add a contact to an audience |
| `list_contacts` | List contacts in an audience |

### Broadcast Tools

| Tool | Description |
|------|-------------|
| `list_broadcasts` | List campaigns with optional status filter and pagination |
| `get_broadcast` | Get details and delivery stats for a campaign |
| `create_broadcast` | Create a draft campaign (audience, HTML/text, scheduling) |
| `update_broadcast` | Edit a draft or scheduled campaign |
| `send_broadcast` | Trigger immediate delivery to the audience |
| `delete_broadcast` | Delete a draft campaign |

### Template Tools

| Tool | Description |
|------|-------------|
| `list_templates` | List all templates |
| `get_template` | Get full content and detected variables |
| `create_template` | Create a template with `{{variable}}` interpolation |
| `update_template` | Edit name, subject, or body |
| `delete_template` | Delete a template |

### Utility Tools

| Tool | Description |
|------|-------------|
| `check_api_status` | Verify API connectivity and key validity |

## send_email Parameters

| Parameter | Required | Description |
|-----------|----------|-------------|
| `to` | Yes | Recipient email(s), comma-separated |
| `subject` | Yes | Email subject |
| `html` | No | HTML content |
| `text` | No | Plain text content |
| `from` | No | Sender email (uses default if not provided) |
| `cc` | No | CC recipients |
| `bcc` | No | BCC recipients |
| `reply_to` | No | Reply-to address |
| `scheduled_at` | No | ISO 8601 datetime for scheduling |

## Example

Create an `email.md` file:

```markdown
to: john@example.com
subject: Weekly Report

# Weekly Report

Here's what we accomplished this week:

- Launched new feature
- Fixed 12 bugs
- Improved performance by 30%

Best,
Your Team
```

Then tell your AI: "Send this as an email"

## License

MIT

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation5/5

Each tool has a distinct purpose with no overlap: cancel_email, check_api_status, create_contact, get_domain, get_email, get_sms, list_audiences, list_contacts, list_domains, list_emails, send_email, send_sms, and validate_email all target specific resources and actions. An agent can easily differentiate between them.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern throughout, such as cancel_email, create_contact, get_domain, list_audiences, send_email, and validate_email. This uniformity makes the set predictable and easy to navigate.

Tool Count5/5

With 13 tools, the server is well-scoped for email and SMS marketing operations. Each tool serves a clear function, covering core workflows like sending, listing, getting details, and managing contacts without unnecessary bloat.

Completeness4/5

The toolset provides strong coverage for email and SMS operations, including CRUD-like actions for contacts, sending, and status checks. Minor gaps include no update or delete tools for contacts or audiences, but agents can work around this with existing tools.

Maintenance

ActivityInactive
ResponsivenessNo issues