npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@mbermeo/sendia-cli

v0.1.2

Published

CLI + MCP server + REST API + Web para gestionar envíos SMS y Email via Sendia

Readme

sendia-cli

CLI + MCP server + REST API + Web para gestionar envíos SMS y Email vía Sendia.

Diseñado para ser usado por agentes IA (Claude Code, Claude Desktop, Cursor) a través del protocolo MCP, y también directamente desde la terminal o como servicio web con dashboard.


Instalación

# Sin instalar (recomendado para MCP)
npx @mbermeo/sendia-cli --help

# Instalar globalmente
npm install -g @mbermeo/sendia-cli

Requiere Node.js >= 18.


Variables de entorno

Copia .env.example a .env y rellena tus credenciales:

cp .env.example .env

| Variable | Descripción | |---|---| | SENDIA_SMS_USER | Usuario SMS de Sendia | | SENDIA_SMS_PASS | Contraseña SMS de Sendia | | SENDIA_SMS_URL | URL del servicio MT (default: https://secure.sendia.ai/Service/MT) | | SENDIA_EMAIL_USER | Usuario Email de Sendia | | SENDIA_EMAIL_PASS | Contraseña Email de Sendia | | SENDIA_EMAIL_URL | URL del servicio Email (default: https://secure.sendia.ai/Email/api) | | SENDIA_DB_PATH | Ruta al archivo SQLite (default: ~/.sendia/sendia.db) | | PORT | Puerto del servidor web (default: 47891) |


Uso como MCP server (para agentes IA)

El modo MCP es el uso principal. Permite que agentes como Claude Code o Claude Desktop envíen SMS, gestionen templates de email, consulten campañas y estadísticas de forma autónoma.

Configurar en Claude Code

Agrega esto a tu archivo de configuración MCP (~/.claude/mcp.json o en la configuración de Claude Code):

Con npx (sin instalación global):

{
  "mcpServers": {
    "sendia": {
      "command": "npx",
      "args": ["-y", "@mbermeo/sendia-cli", "mcp"],
      "env": {
        "SENDIA_SMS_USER": "tu_usuario_sms",
        "SENDIA_SMS_PASS": "tu_password_sms",
        "SENDIA_EMAIL_USER": "tu_usuario_email",
        "SENDIA_EMAIL_PASS": "tu_password_email",
        "SENDIA_DB_PATH": "/ruta/opcional/sendia.db"
      }
    }
  }
}

Con instalación global (npm install -g @mbermeo/sendia-cli):

{
  "mcpServers": {
    "sendia": {
      "command": "sendia",
      "args": ["mcp"],
      "env": {
        "SENDIA_SMS_USER": "tu_usuario_sms",
        "SENDIA_SMS_PASS": "tu_password_sms",
        "SENDIA_EMAIL_USER": "tu_usuario_email",
        "SENDIA_EMAIL_PASS": "tu_password_email",
        "SENDIA_DB_PATH": "/ruta/opcional/sendia.db"
      }
    }
  }
}

Configurar en Claude Desktop

En ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "sendia": {
      "command": "npx",
      "args": ["-y", "@mbermeo/sendia-cli", "mcp"],
      "env": {
        "SENDIA_SMS_USER": "...",
        "SENDIA_SMS_PASS": "...",
        "SENDIA_EMAIL_USER": "...",
        "SENDIA_EMAIL_PASS": "..."
      }
    }
  }
}

Verificar con el inspector MCP

npx @modelcontextprotocol/inspector sendia mcp

Tools disponibles

| Tool | Descripción | Input requerido | |---|---|---| | sms_send | Envía un SMS | phone, text | | sms_send_batch | Envía lote de SMS en secuencia (uno por uno) | messages[] | | sms_test | Envía SMS de prueba ("test") | phone | | email_token | Genera token JWT para la API Email | — | | email_template_create | Crea un template de email | name, subject, html, fromName, fromMail | | email_template_get | Obtiene info de un template | id | | email_template_edit | Edita un template existente | id, name, subject, html, fromName, fromMail | | email_send | Envía un email usando un template | template, to | | email_send_batch | Envía lote de emails en secuencia (uno por uno) | template, recipients[] | | campaign_list | Lista campañas de la BD local | status?, limit? | | campaign_status | Estado detallado con desglose de envíos | id? | | campaign_sends | Envíos individuales de una campaña | id, page?, perPage? | | stats_global | Métricas globales agregadas | — |


Uso como CLI

# Ayuda general
sendia --help

# SMS
sendia sms send --phone 56912345678 --text "Hola desde Sendia"
sendia sms test --phone 56912345678
sendia sms batch --phones 56911111111,56922222222 --text "Promo 2x1"
sendia sms batch --batch '[{"phone":"56911111111","text":"Hola A"},{"phone":"56922222222","text":"Hola B"}]'

# Email — token
sendia email token

# Email — templates
sendia email template create \
  --name "Bienvenida" \
  --subject "Bienvenido a nuestro servicio" \
  --html template.html \
  --from-name "Mi Empresa" \
  --from-mail "[email protected]" \
  --options 2

sendia email template get --id 42
sendia email template edit --id 42 --name "Bienvenida v2" \
  --subject "¡Bienvenido!" --html template_v2.html \
  --from-name "Mi Empresa" --from-mail "[email protected]"

# Email — enviar
sendia email send --template 42 --to [email protected] \
  --op1 "Juan" --op2 "Plan Pro"

# Email — envío batch (uno por uno)
sendia email batch --template 42 --to [email protected],[email protected] --op1 "Cliente"
sendia email batch --template 42 --batch '[{"to":"[email protected]","op1":"Ana"},{"to":"[email protected]","op1":"Beto"}]'

# Campañas
sendia campaign list --status active --limit 10 --json
sendia campaign status --id 5
sendia campaign status --json

# Iniciar servidor web
sendia serve --port 3000

Servidor web (sendia serve)

Inicia un servidor Express con:

  • Dashboard webhttp://localhost:3000/ — vista en tiempo real de campañas, envíos y estadísticas (SSE).
  • REST APIhttp://localhost:3000/api/ — endpoints para campañas, SMS, Email y estadísticas.
  • Webhook SendiaGET|POST http://localhost:3000/sendia/status — recibe callbacks de delivery del proveedor.
  • Health checkhttp://localhost:3000/api/health

Endpoints principales

| Método | Ruta | Descripción | |---|---|---| | GET | /api/health | Estado del servicio | | GET | /api/campaigns | Listar campañas | | GET | /api/campaigns/:id | Detalle de campaña | | GET | /api/campaigns/:id/sends | Envíos de una campaña | | GET | /api/stats | Estadísticas globales | | POST | /api/sms/send | Enviar SMS | | POST | /api/email/token | Generar token Email | | POST | /api/email/templates | Crear template | | GET | /api/email/templates/:id | Obtener template | | PUT | /api/email/templates/:id | Editar template | | POST | /api/email/send | Enviar email | | GET/POST | /sendia/status | Webhook callbacks de delivery |


Base de datos SQLite

La aplicación usa SQLite de forma autocontenida — no requiere servidor de base de datos externo.

  • Ubicación por defecto: ~/.sendia/sendia.db
  • Override: SENDIA_DB_PATH=/ruta/personalizada/sendia.db
  • Las tablas se crean automáticamente al primer uso.

Tablas:

  • campaigns — registro de campañas de envío
  • sends — envíos individuales por campaña
  • events — eventos de delivery (webhooks)
  • sendia_status_callbacks — callbacks raw de Sendia

Backup:

# Backup simple
cp ~/.sendia/sendia.db ~/backup/sendia.db

# O con sqlite3
sqlite3 ~/.sendia/sendia.db ".backup ~/backup/sendia.db"

Build y publicación en npm

El código se publica ofuscado para proteger la integración con Sendia:

# Generar dist/ con código ofuscado
npm run build

# Verificar que funciona
node dist/bin/sendia.js --help

# Publicar (primera vez: npm login)
npm run release

Licencia

ISC