Back to the catalog

Eusend

Send transactional email and manage domains, audiences, and broadcasts from any MCP client.

Open source Open in the app JSON README (API)

About

Send transactional email and manage domains, audiences, and broadcasts from any MCP client.

Details

Kind
MCP servers
Topic
Communication
Publisher
dev.eusend
Origin
official
Category
ferramentas
Transport
http
Version
0.5.0
Added
2026-08-29 03:01:30
Updated
2026-09-05 10:00:27
Origin id
dev.eusend/eusend

README

# @eusend_dev/mcp

Model Context Protocol server for [Eusend](https://eusend.dev). Lets any MCP-compatible
AI client — Claude Code, Claude Desktop, Cursor, Windsurf, and others — send email and
manage domains, audiences, and broadcasts through your Eusend account.

It's a thin wrapper over [`@eusend_dev/sdk`](../sdk): each tool is a typed call into the
SDK. The same server runs two ways — **stdio** (local, launched by your client) and
**HTTP** (hosted/remote) — from one codebase.

## Tools

| Area                 | Tools                                                                    |
| -------------------- | ------------------------------------------------------------------------ |
| Emails               | `send_email`, `list_emails`, `get_email`, `cancel_email`                 |
| Domains              | `list_domains`, `get_domain`, `create_domain`, `verify_domain`           |
| Audiences & contacts | `list_audiences`, `create_audience`, `list_contacts`, `create_contact`   |
| Broadcasts           | `list_broadcasts`, `get_broadcast`, `create_broadcast`, `send_broadcast` |

Destructive operations (deleting domains, audiences, contacts, API keys) are intentionally
**not** exposed. `send_broadcast` is a bulk send — clients are instructed to confirm first.

## Local setup (stdio)

Get an API key at <https://eusend.dev/api-keys>.

### Claude Code

```bash
claude mcp add eusend --env EUSEND_API_KEY=eusend_live_xxx -- npx -y @eusend_dev/mcp
```

### Claude Desktop / Cursor / Windsurf

Add to the client's MCP config (`claude_desktop_config.json`, `.cursor/mcp.json`, …):

```json
{
  "mcpServers": {
    "eusend": {
      "command": "npx",
      "args": ["-y", "@eusend_dev/mcp"],
      "env": {
        "EUSEND_API_KEY": "eusend_live_xxx",
        "EUSEND_FROM": "you@yourdomain.com"
      }
    }
  }
}
```

Setting `EUSEND_FROM` pins a default sender so the agent doesn't have to guess one on
`send_email` / `create_broadcast`.

## Remote setup (HTTP)

The same binary serves Streamable HTTP. The API key is taken per-request from the
`Authorization: Bearer <key>` header, so one endpoint serves many accounts.

```bash
# run locally on :3000
npx -y @eusend_dev/mcp --http --port 3000

# behind a TLS reverse proxy at mcp.eusend.dev
npx -y @eusend_dev/mcp --http --host 0.0.0.0 --port 3000 --allowed-hosts mcp.eusend.dev
```

Connect a client to it:

```bash
claude mcp add --transport http eusend https://mcp.eusend.dev/mcp
```

DNS-rebinding protection is on by default (localhost only); pass `--allowed-hosts` with
your public host when running behind a proxy.

## Configuration

| Flag              | Env                                    | Purpose                                         |
| ----------------- | -------------------------------------- | ----------------------------------------------- |
| `--key`           | `EUSEND_API_KEY`                       | API key (stdio only; HTTP takes it per-request) |
| `--from`          | `EUSEND_FROM` / `SENDER_EMAIL_ADDRESS` | Default sender address                          |
| `--reply-to`      | `EUSEND_REPLY_TO`                      | Default Reply-To                                |
| `--base-url`      | `EUSEND_BASE_URL`                      | Override the API base URL                       |
| `--http`          | —                                      | Run the HTTP transport instead of stdio         |
| `--port`          | `MCP_PORT`                             | HTTP port (default 3000)                        |
| `--host`          | `MCP_HOST`                             | HTTP bind host (default 127.0.0.1)              |
| `--allowed-hosts` | `MCP_ALLOWED_HOSTS`                    | Comma-separated Host allowlist                  |

## Development

```bash
bun run build        # bundle to dist/ (stdio + http entries)
bun run typecheck
bun run inspect      # open the MCP Inspector against the stdio server
```

More