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

@morna-studio/crm-mcp

v1.1.0

Published

MCP server para gestionar el CRM de Morna desde Claude

Readme

@morna-studio/crm-mcp

MCP server oficial de Morna CRM para Claude. Permite gestionar tu CRM completo desde Claude Desktop, Claude Code o cualquier cliente MCP compatible: buscar leads, mover etapas, crear tareas, ver mensajes, generar reportes y más — todo limitado a los datos de tu empresa.


Requisitos

  • Node.js 18 o superior
  • Una cuenta en Morna CRM
  • Una API Key generada desde tu CRM (Settings → API Claude)

Instalación y configuración

1. Genera tu API Key

Entra al CRM → Configuraciones → pestaña API Claude → "Nueva Key".

Elige los scopes que necesitas:

  • read — leer leads, contactos, mensajes, notas, tareas, pipeline
  • write — crear/editar/archivar leads, tareas y notas
  • reports — acceder a reportes y analíticas

La key solo se muestra una vez. Guárdala en un lugar seguro.

2. Configura tu cliente MCP

Claude Desktop — edita ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mi-crm": {
      "command": "npx",
      "args": ["-y", "@morna-studio/crm-mcp"],
      "env": {
        "MORNA_EMPRESA_ID": "tu-empresa-uuid",
        "MORNA_API_KEY": "mk_live_..."
      }
    }
  }
}

Claude Code — ejecuta en terminal:

claude mcp add mi-crm \
  -e MORNA_EMPRESA_ID=tu-empresa-uuid \
  -e MORNA_API_KEY=mk_live_... \
  -- npx -y @morna-studio/crm-mcp

Variables de entorno

| Variable | Requerida | Descripción | |---|---|---| | MORNA_EMPRESA_ID | ✅ | UUID de tu empresa en el CRM | | MORNA_API_KEY | ✅ | API Key generada en Settings | | MORNA_API_URL | ❌ | URL personalizada del endpoint (opcional, para entornos propios) |


Herramientas disponibles (21 tools)

Leads

search_leads

Busca leads con texto libre y filtros combinables.

Parámetros:
  query        string   — Texto en nombre, email, teléfono o empresa
  etapa_id     string   — UUID de la etapa
  pipeline_id  string   — UUID del pipeline
  prioridad    string   — "high" | "medium" | "low"
  tags         string[] — Lista de tags para filtrar
  asignado_a   string   — UUID del vendedor asignado
  archived     boolean  — Buscar en archivados (default: false)
  limit        number   — Máximo de resultados (default: 50, max: 200)

Ejemplos con Claude:

  • "Busca leads con prioridad alta sin asignar"
  • "Muéstrame los leads de la empresa Acme Corp"
  • "¿Qué leads tienen el tag 'interesado' en el pipeline de ventas?"

get_lead

Devuelve el detalle completo de un lead: datos de contacto, etapa, pipeline, prioridad, tags, presupuesto y campos personalizados.

Parámetros:
  lead_id  string  ✅ — UUID del lead

Ejemplos:

  • "Dame el detalle del lead con ID abc-123"
  • "¿Cuál es el presupuesto y la etapa de Juan García?"

move_lead

Mueve un lead a otra etapa del pipeline. Requiere scope write.

Parámetros:
  lead_id   string  ✅ — UUID del lead
  etapa_id  string  ✅ — UUID de la etapa destino

Ejemplos:

  • "Mueve a Juan García a la etapa 'Propuesta enviada'"
  • "Pasa todos los leads calificados a negociación"

create_lead

Crea un nuevo lead en el CRM. Requiere scope write.

Parámetros:
  nombre_completo     string    ✅ — Nombre del lead
  pipeline_id         string    ✅ — UUID del pipeline destino
  etapa_id            string       — UUID de la etapa inicial
  correo_electronico  string       — Email
  telefono            string       — Teléfono
  empresa             string       — Empresa del lead
  prioridad           string       — "high" | "medium" | "low" (default: "medium")
  presupuesto         number       — Presupuesto estimado
  tags                string[]     — Tags iniciales
  asignado_a          string       — UUID del vendedor

Ejemplos:

  • "Crea un lead para María López de la empresa TechCo con prioridad alta"
  • "Agrega este contacto al pipeline de ventas con presupuesto de $5000"

update_lead

Actualiza campos de un lead existente. Requiere scope write.

Parámetros:
  lead_id             string  ✅ — UUID del lead
  nombre_completo     string
  correo_electronico  string
  telefono            string
  empresa             string
  prioridad           string  — "high" | "medium" | "low"
  tags                string[]
  presupuesto         number
  asignado_a          string
  custom_fields       object  — Campos personalizados como JSON

Ejemplos:

  • "Actualiza el presupuesto de Juan García a $8000"
  • "Cambia la prioridad de los leads sin actividad a 'low'"

archive_lead

Archiva un lead. Requiere scope write.

Parámetros:
  lead_id  string  ✅ — UUID del lead

Ejemplos:

  • "Archiva el lead de Pedro Sánchez"

Pipeline

get_pipelines

Lista todos los pipelines de la empresa con sus etapas ordenadas.

Sin parámetros

Ejemplos:

  • "¿Qué pipelines tengo configurados?"
  • "Muéstrame las etapas del pipeline de ventas"

get_pipeline_summary

Devuelve cuántos leads activos hay en cada etapa.

Parámetros:
  pipeline_id  string  — UUID del pipeline (opcional, trae todos si se omite)

Ejemplos:

  • "¿Cómo está distribuido el pipeline de ventas?"
  • "¿Cuántos leads tengo en cada etapa?"
  • "Dame un resumen del embudo actual"

Contactos

search_contacts

Busca contactos en la base de datos.

Parámetros:
  query  string  — Texto en nombre, apellido, email o teléfono
  limit  number  — Máximo de resultados (default: 50)

Ejemplos:


get_contact

Devuelve el perfil completo de un contacto.

Parámetros:
  contact_id  string  ✅ — UUID del contacto

Mensajes

get_lead_messages

Obtiene el historial de conversación de un lead (WhatsApp, Instagram, Facebook).

Parámetros:
  lead_id  string  ✅ — UUID del lead
  limit    number     — Cantidad de mensajes (default: 50, más recientes)

Ejemplos:

  • "¿De qué habló Juan García en su último chat?"
  • "Muéstrame los últimos 20 mensajes de este lead"
  • "Resume la conversación de WhatsApp con María López"

Tareas

get_tasks

Lista tareas con filtros opcionales.

Parámetros:
  lead_id     string  — Filtrar por lead
  asignado_a  string  — Filtrar por responsable (UUID del usuario)
  estado      string  — "pendiente" | "en_progreso" | "completada"
  limit       number  — Máximo de resultados (default: 100)

Ejemplos:

  • "¿Qué tareas tengo pendientes para hoy?"
  • "Muéstrame todas las tareas del lead Juan García"
  • "¿Cuántas tareas vencidas hay en el equipo?"

create_task

Crea una tarea vinculada a un lead. Requiere scope write.

Parámetros:
  lead_id            string  ✅ — UUID del lead
  titulo             string  ✅ — Título de la tarea
  descripcion        string     — Descripción detallada
  fecha_vencimiento  string     — Fecha límite ISO 8601 (ej: "2025-06-15T10:00:00Z")
  asignado_a         string     — UUID del responsable
  prioridad          string     — "high" | "medium" | "low" (default: "medium")

Ejemplos:

  • "Crea una tarea para llamar a Juan García mañana a las 10am"
  • "Agrega una tarea de seguimiento para todos los leads en negociación"

complete_task

Marca una tarea como completada. Requiere scope write.

Parámetros:
  task_id  string  ✅ — UUID de la tarea

Ejemplos:

  • "Marca como completada la tarea de llamada a Juan García"

Notas

get_notes

Obtiene las notas internas de un lead.

Parámetros:
  lead_id  string  ✅ — UUID del lead

Ejemplos:

  • "¿Qué notas hay sobre María López?"
  • "Lee las notas del lead antes de la reunión"

add_note

Agrega una nota interna a un lead. Requiere scope write.

Parámetros:
  lead_id   string  ✅ — UUID del lead
  contenido string  ✅ — Texto de la nota

Ejemplos:

  • "Agrega una nota a Juan García: 'Interesado en el plan anual, llamar la próxima semana'"
  • "Documenta en el lead que la reunión fue exitosa"

Reportes

get_pipeline_report

Reporte del pipeline: leads por etapa, presupuesto total y distribución por prioridad.

Parámetros:
  pipeline_id  string  — UUID del pipeline (opcional, todos si se omite)
  date_from    string  — Fecha inicio ISO 8601 (ej: "2025-01-01")
  date_to      string  — Fecha fin ISO 8601 (ej: "2025-12-31")

Respuesta incluye:

  • Total de leads activos y archivados
  • Suma total de presupuestos
  • Leads por etapa con presupuesto acumulado
  • Distribución por prioridad (high/medium/low)

Ejemplos:

  • "Dame el reporte del pipeline del mes pasado"
  • "¿Cuánto presupuesto potencial hay en el pipeline de ventas?"
  • "Muéstrame cómo está distribuido el funnel este trimestre"

get_activity_report

Reporte de actividad del equipo por período.

Parámetros:
  date_from  string  — Fecha inicio
  date_to    string  — Fecha fin
  user_id    string  — Filtrar por usuario específico

Respuesta incluye:

  • Total de actividades en el período
  • Distribución por tipo de actividad
  • Actividad por usuario

Ejemplos:

  • "¿Qué actividad tuvo el equipo esta semana?"
  • "Muéstrame el reporte de actividad de abril"

get_leads_report

Reporte general de leads: canales, prioridades, tags más usados y presupuesto.

Parámetros:
  date_from  string  — Fecha inicio
  date_to    string  — Fecha fin

Respuesta incluye:

  • Total de leads activos y archivados
  • Presupuesto acumulado
  • Distribución por canal (WhatsApp, Instagram, Facebook, etc.)
  • Distribución por prioridad
  • Top 10 tags más usados

Ejemplos:

  • "¿Por qué canal entran más leads?"
  • "Dame un resumen de leads del último trimestre"
  • "¿Cuáles son los tags más usados este mes?"

General

get_company_info

Devuelve información básica de la empresa (nombre, logo, fecha de creación).

Sin parámetros

get_team_members

Lista todos los miembros del equipo con su rol.

Sin parámetros

Ejemplos:

  • "¿Quiénes son los miembros del equipo?"
  • "Muéstrame los admins del CRM"

Seguridad

  • Las API Keys se almacenan como hash SHA-256 — nunca en texto plano.
  • Cada request valida la key contra la base de datos antes de ejecutar cualquier operación.
  • Todos los datos están aislados por empresa_id — es imposible acceder a datos de otra empresa.
  • Puedes definir scopes por key para limitar lo que cada integración puede hacer.
  • Las keys se pueden revocar en cualquier momento desde el CRM.
  • Soporte de fecha de vencimiento por key.

Soporte


Licencia

MIT © Morna Studio