@eusend_dev/mcp
Model Context Protocol server for Eusend. 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: 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
| Emails | send_email, list_emails, get_email, cancel_email |
| Domains | list_domains, get_domain, create_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
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, …):
{
"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.
npx -y @eusend_dev/mcp --http --port 3000
npx -y @eusend_dev/mcp --http --host 0.0.0.0 --port 3000 --allowed-hosts mcp.eusend.dev
Connect a client to it:
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
--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
bun run build
bun run typecheck
bun run inspect