@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, pipelinewrite— crear/editar/archivar leads, tareas y notasreports— 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-mcpVariables 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 leadEjemplos:
- "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 destinoEjemplos:
- "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 vendedorEjemplos:
- "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 JSONEjemplos:
- "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 leadEjemplos:
- "Archiva el lead de Pedro Sánchez"
Pipeline
get_pipelines
Lista todos los pipelines de la empresa con sus etapas ordenadas.
Sin parámetrosEjemplos:
- "¿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:
- "Busca el contacto de Ana Martínez"
- "¿Tenemos registrado el email [email protected]?"
get_contact
Devuelve el perfil completo de un contacto.
Parámetros:
contact_id string ✅ — UUID del contactoMensajes
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 tareaEjemplos:
- "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 leadEjemplos:
- "¿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 notaEjemplos:
- "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íficoRespuesta 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 finRespuesta 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ámetrosget_team_members
Lista todos los miembros del equipo con su rol.
Sin parámetrosEjemplos:
- "¿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
- Web: morna.studio
- Email: [email protected]
Licencia
MIT © Morna Studio
