Servidor MCP (Model Context Protocol)
El servidor MCP de Salescaling permite que agentes de IA como Claude, Cursor y otros clientes compatibles con el protocolo MCP accedan a tus datos de reuniones, transcripciones y resúmenes de forma estructurada y segura.
¿Qué es MCP?
Model Context Protocol (MCP) es un protocolo estándar que permite a los modelos de lenguaje (LLMs) interactuar con sistemas externos de forma estructurada. El servidor MCP de Salescaling implementa este protocolo para exponer tus datos de reuniones a través de herramientas que los agentes de IA pueden usar.
Características
✅ Spec-Compliant: Implementación completa del protocolo MCP oficial
✅ 11 Herramientas Disponibles: Reuniones (videollamada y presencial), llamadas telefónicas, búsqueda, listados, transcripción, resumen con action items, detalle, estadísticas y más
✅ Búsqueda Avanzada: Full Text Search con PostgreSQL para búsquedas semánticas con índices GIN optimizados
✅ Control de Payload: Límites configurables para evitar overflow de contexto
✅ Autenticación Segura: API key de Salescaling u OAuth Clients (Authorization Code + PKCE)
✅ Multi-tenant: Aislamiento automático por organización
✅ Alto Rendimiento: Optimizado para millones de filas con índices GIN y control de concurrencia
Endpoints MCP
El servidor MCP expone dos endpoints principales:
GET /api/v1/mcp - Listar Herramientas
/api/v1/mcp - Listar HerramientasRetorna la lista de herramientas disponibles con sus esquemas de entrada.
Ejemplo:
POST /api/v1/mcp - Ejecutar Herramienta
/api/v1/mcp - Ejecutar HerramientaEjecuta una herramienta específica con los argumentos proporcionados.
Ejemplo:
Conexión MCP vía OAuth Clients
Además de la API key, puedes conectar clientes MCP que soporten OAuth 2.0 (flujo Authorization Code con PKCE). Los clientes OAuth se registran de forma explícita en Salescaling (no hay registro dinámico de clientes en el servidor de autorización).
Requisitos
Cuenta con permisos para gestionar OAuth Clients (normalmente administradores de la organización).
El cliente MCP debe poder completar el flujo OAuth en el navegador y enviar
Authorization: Bearer <access_token>al servidor MCP.
Configurar el cliente en Salescaling
En la plataforma, ve a Configuración → OAuth Clients (o Settings → OAuth Clients).
Crea un nuevo cliente OAuth.
Añade las Redirect URIs permitidas. Para Claude (Anthropic) usa exactamente:
https://claude.ai/api/mcp/auth_callbackAsigna los scopes que necesite el MCP (como mínimo
meetings:readpara las herramientas actuales de reuniones).Guarda el cliente y copia el
client_id(y el secreto solo si creaste un cliente confidencial; muchos clientes MCP usan cliente público con PKCE).
Metadatos del servidor de autorización
Salescaling expone metadatos compatibles con descubrimiento OpenID en el propio endpoint MCP:
GET https://api.salescaling.com/api/v1/mcp/.well-known/openid-configuration
Ahí encontrarás issuer, authorization_endpoint, token_endpoint, revocation_endpoint y scopes soportados (sustituye el host si usas otro entorno).
Ejemplo: MCP para Claude con OAuth
Tras crear el OAuth Client con la redirect anterior, configura el cliente MCP con la URL del servidor MCP y los endpoints OAuth (ajusta dominios si tu tenant usa otra URL de app):
Resumen de URLs típicas
Servidor MCP
https://api.salescaling.com/api/v1/mcp
Autorización (login usuario)
https://app.salescaling.com/oauth/authorize
Token (intercambio código / refresh)
https://api.salescaling.com/v1/oauth/token
Redirect URI en Salescaling para Claude
https://claude.ai/api/mcp/auth_callback
Las peticiones al MCP usarán el token de acceso en el header Authorization: Bearer … en lugar de X-API-Key.
Reuniones vs llamadas telefónicas
Salescaling guarda videollamadas, reuniones presenciales y llamadas telefónicas en la misma entidad de reunión. Para que la API MCP sea clara:
Las herramientas cuyo nombre incluye
meetings(search_meetings,list_meetings,find_meetings_by_participant) solo incluyen videollamadas y presenciales (no devuelven llamadas telefónicas).Las herramientas
list_calls,search_callsyfind_calls_by_participantestán dedicadas a llamadas telefónicas y admiten filtros como dirección (INBOUND/OUTBOUND) y números de teléfono.get_meeting_transcript,get_meeting_summary,get_meeting_detailsyget_meeting_action_itemsfuncionan con cualquier ID de reunión o llamada (el mismo identificador).
Herramientas Disponibles
1. search_meetings - Búsqueda Avanzada
search_meetings - Búsqueda AvanzadaBusca videollamadas y reuniones presenciales por texto en títulos y/o transcripciones (Full Text Search). No incluye llamadas telefónicas; para eso usa search_calls.
Parámetros:
query
string
Sí
Término de búsqueda
scope
string
No
title, sentences o all (default: all)
fromDate
string
No
Fecha inicio (YYYY-MM-DD)
toDate
string
No
Fecha fin (YYYY-MM-DD)
limit
number
No
Máximo 50 (default: 20)
Nota: Solo actividades de tipo videollamada o presencial.
Ejemplo:
2. list_meetings - Listar Reuniones
list_meetings - Listar ReunionesLista videollamadas y reuniones presenciales con filtros estructurados (excluye llamadas telefónicas).
Parámetros:
keyword
string
No
Búsqueda en nombres / título
fromDate
string
No
Fecha inicio
toDate
string
No
Fecha fin
limit
number
No
Máximo 50 (default: 20)
skip
number
No
Paginación (default: 0)
sortOrder
string
No
asc o desc — orden por fecha de inicio (default: desc)
participants
string[]
No
Emails de participantes
organizers
string[]
No
Emails de organizadores
Ejemplo:
3. get_meeting_transcript - Obtener Transcripción
get_meeting_transcript - Obtener TranscripciónObtiene la transcripción detallada con atribución de speakers (reunión o llamada).
Parámetros:
transcriptId
string
Sí
ID de la reunión o llamada
language
string
No
Código de idioma (ej: "es", "en")
maxSentences
number
No
Límite de oraciones (control de payload)
Control de Payload:
Auto-trunca en 10,000 oraciones si no se especifica
maxSentencesIndica en la respuesta si se truncó el contenido
Ejemplo:
4. get_meeting_summary - Obtener Resumen
get_meeting_summary - Obtener ResumenObtiene el resumen generado por IA: texto (summaryText), action items (actionItems / next_steps), y según el tipo, topics/highlights (reuniones) o call insights (llamadas).
Parámetros:
transcriptId
string
Sí
ID de la reunión o llamada
language
string
No
Código de idioma
Ejemplo:
5. get_meeting_details - Detalles Completos
get_meeting_details - Detalles CompletosObtiene detalles completos de una reunión (metadatos + transcripción + resumen).
Parámetros:
id
string
Sí
ID de la reunión
includeTranscript
boolean
No
Incluir transcripción (default: true)
includeSummary
boolean
No
Incluir resumen (default: true)
maxSentences
number
No
Límite de oraciones en transcript
Ejemplo:
6. find_meetings_by_participant - Buscar Reuniones por Participante
find_meetings_by_participant - Buscar Reuniones por ParticipanteEncuentra reuniones donde participó una persona específica. Busca por nombre (coincidencia parcial) o email (coincidencia exacta).
Parámetros:
participant
string
Sí
Nombre o email del participante
fromDate
string
No
Fecha inicio (YYYY-MM-DD)
toDate
string
No
Fecha fin (YYYY-MM-DD)
limit
number
No
Máximo 50 (default: 20)
skip
number
No
Paginación (default: 0)
sortOrder
string
No
asc o desc por fecha de inicio (default: desc)
titleFilter
string
No
Filtro opcional sobre el título de la reunión (coincidencia parcial)
Características:
Solo videollamadas y presenciales (no llamadas telefónicas).
Búsqueda por email: Coincidencia exacta (case-insensitive)
Ejemplo:
jon@empresa.comencontrará solo ese email exacto
Búsqueda por nombre: Coincidencia parcial
Ejemplo:
Jonencontrará "Jon Smith", "Jonathan", "Jon Doe", etc.
Retorna información completa de participantes y organizador
Orden configurable con
sortOrder
Ejemplos:
Buscar por email:
Buscar por nombre:
7. list_calls - Listar llamadas telefónicas
list_calls - Listar llamadas telefónicasLista solo llamadas telefónicas (phonecall), con filtros por fechas, título, participantes, dirección y números.
titleFilter
string
No
Coincidencia parcial en el nombre/título
fromDate / toDate
string
No
Rango de fechas (YYYY-MM-DD)
limit
number
No
Máximo 50 (default: 20)
skip
number
No
Paginación
sortOrder
string
No
asc o desc (default: desc)
direction
string
No
INBOUND o OUTBOUND
participants
string[]
No
Emails de participantes
fromNumber / toNumber
string
No
Filtro parcial por número de llamante o destino
8. search_calls - Buscar en llamadas
search_calls - Buscar en llamadasBúsqueda en títulos y/o transcripciones solo para llamadas telefónicas. Parámetros similares a search_meetings, más direction, fromNumber, toNumber opcionales.
9. find_calls_by_participant - Llamadas por participante
find_calls_by_participant - Llamadas por participanteIgual que find_meetings_by_participant pero solo para llamadas telefónicas, con los mismos filtros extra que list_calls (titleFilter, sortOrder, direction, números).
10. get_meeting_action_items - Action items del resumen
get_meeting_action_items - Action items del resumenDevuelve los next steps estructurados del resumen IA para un ID de reunión o llamada.
meetingId
string
Sí
language
string
No
11. get_meetings_statistics - Estadísticas agregadas
get_meetings_statistics - Estadísticas agregadasTotales, duraciones medias por tipo de actividad, y top participantes (muestra acotada). Ámbito configurable:
fromDate / toDate
string
Rango opcional
type
string
meetings (video+presencial), calls (solo teléfono), o all (default)
Configuración en Clientes MCP
Para OAuth (incluido Claude con redirect https://claude.ai/api/mcp/auth_callback), sigue la sección Conexión MCP vía OAuth Clients.
Claude Desktop (API Key)
Localiza tu archivo de configuración:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Agrega la configuración del servidor MCP:
Reinicia Claude Desktop
Verifica que el servidor esté conectado:
Busca el ícono de herramientas en la interfaz
Deberías ver "salescaling" como servidor disponible
Las 11 herramientas deberían aparecer listadas
Cursor IDE
Abre la configuración de Cursor (
Cmd/Ctrl + ,)Busca "MCP Servers" en la configuración
Agrega el servidor de Salescaling:
Reinicia Cursor
Usa el servidor desde el chat de Cursor:
Menciona "@salescaling" en el chat
O pide directamente: "Busca reuniones sobre performance"
Otros Clientes MCP
Para cualquier cliente compatible con MCP:
URL del servidor:
https://api.salescaling.com/api/v1/mcpAutenticación: Header
X-API-Keycon tu API keyProtocolo: HTTP/HTTPS estándar
Formato: JSON
Ejemplos de Uso
Ejemplo 1: Buscar Reuniones con Claude
Ejemplo 2: Obtener Transcripción Completa
Ejemplo 3: Análisis de Múltiples Reuniones
Formato de Respuesta
Todas las herramientas retornan respuestas en formato MCP estándar:
Seguridad y Privacidad
Autenticación
Las peticiones requieren API key (
X-API-Key) o un access token OAuth (Authorization: Bearer) emitido para un OAuth Client autorizadoLas API keys se gestionan desde Configuración > API Keys; los clientes OAuth desde Configuración > OAuth Clients
Cada credencial está vinculada a tu organización (tenant)
Aislamiento de Datos
El servidor MCP respeta el aislamiento multi-tenant
Solo puedes acceder a reuniones de tu organización
Los permisos de OpenFGA se aplican automáticamente
Mejores Prácticas
Nunca compartas tu API key: Trátala como una contraseña
Usa variables de entorno: No hardcodees la key en archivos
Rota las keys periódicamente: Crea nuevas keys y elimina las antiguas
Establece fechas de expiración: Para keys temporales o de prueba
Monitorea el uso: Revisa los logs de acceso regularmente
Límites y Cuotas
Rate Limiting
El servidor MCP comparte los mismos límites de la API pública:
Corto plazo: 35 peticiones por segundo
Mediano plazo: 200 peticiones cada 10 segundos
Largo plazo: 1000 peticiones por minuto
Límites de Payload
Transcripciones: Auto-trunca en 10,000 oraciones
Búsquedas: Máximo 50 resultados por petición
Listados: Máximo 50 reuniones por petición
Usa el parámetro maxSentences para controlar el tamaño de las transcripciones.
Troubleshooting
Error: "Unauthorized - missing or invalid API key"
Causa: API key no válida o no proporcionada
Solución:
Verifica que el header
X-API-Keyesté presenteConfirma que la key sea válida en Configuración > API Keys
Verifica que la key no haya expirado
Error: "Unknown tool: xxx"
Causa: Nombre de herramienta incorrecto
Solución:
Verifica el nombre de la herramienta (case-sensitive)
Usa
GET /api/v1/mcppara ver las herramientas disponiblesNombres válidos (entre otros):
search_meetings,list_meetings,get_meeting_transcript,get_meeting_summary,get_meeting_details,find_meetings_by_participant,list_calls,search_calls,find_calls_by_participant,get_meeting_action_items,get_meetings_statistics
Error: "Meeting not found"
Causa: ID de reunión no existe o no tienes acceso
Solución:
Verifica que el ID sea correcto
Confirma que la reunión pertenezca a tu organización
Usa
list_meetingspara obtener IDs válidos
El servidor no aparece en Claude Desktop
Solución:
Verifica que el archivo de configuración esté en la ubicación correcta
Revisa que el JSON sea válido (sin errores de sintaxis)
Reinicia Claude Desktop completamente
Revisa los logs de Claude Desktop para errores
Respuestas muy largas o timeouts
Solución:
Usa
maxSentencespara limitar transcripcionesReduce el
limiten búsquedas y listadosUsa
includeTranscript: falsesi solo necesitas el resumenFiltra por fechas para reducir el conjunto de datos
Soporte
¿Necesitas ayuda con el servidor MCP?
Email: support@salescaling.com
Documentación API: https://api.salescaling.com/api/docs
Slack de la comunidad: Únete aquí
Recursos Adicionales
Última actualización: Abril 2026
Última actualización
¿Te fue útil?
