Simba MCP Server
OfficialSimba MCP Server
Simba es una plataforma de modelado de mezcla de marketing (MMM) bayesiano. Este servidor MCP de modelado de mezcla de marketing permite a los asistentes de IA interactuar directamente con tus modelos: subir datos, crear modelos, comprobar resultados y ejecutar optimizaciones de presupuesto mediante lenguaje natural en Claude, Cursor o Claude Code.
Instalación
pip install simba-mcpO ejecútalo directamente sin instalarlo:
uvx simba-mcpRelated MCP server: Meta Ads MCP
Inicio rápido
Cursor IDE
Añádelo a la configuración MCP de Cursor (.cursor/mcp.json en el espacio de trabajo o en la configuración global):
{
"mcpServers": {
"simba": {
"command": "uvx",
"args": ["simba-mcp"],
"env": {
"SIMBA_API_URL": "https://demo.simba-mmm.com",
"SIMBA_API_KEY": "simba_sk_..."
}
}
}
}Claude Code
Añádelo a la configuración MCP de Claude Code:
{
"mcpServers": {
"simba": {
"command": "uvx",
"args": ["simba-mcp"],
"env": {
"SIMBA_API_URL": "https://demo.simba-mmm.com",
"SIMBA_API_KEY": "simba_sk_..."
}
}
}
}API de Claude (conector MCP)
Usa el transporte remoto Streamable HTTP con el conector MCP de Anthropic:
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
messages=[{"role": "user", "content": "List my Simba models"}],
mcp_servers=[
{
"type": "url",
"url": "https://demo.simba-mmm.com/mcp",
"name": "simba",
"authorization_token": "simba_sk_...",
}
],
tools=[{"type": "mcp_toolset", "mcp_server_name": "simba"}],
betas=["mcp-client-2025-11-20"],
)Herramientas disponibles
Herramienta | Descripción |
| Obtén el esquema CSV canónico para los archivos de entrada de MMM |
| Sube un conjunto de datos CSV a Simba |
| Lista los conjuntos de datos subidos anteriormente |
| Detalles de una subida, incluido su esquema de columnas |
| Lista todos los modelos con su estado |
| Configura y comienza a ajustar un nuevo modelo MMM |
| Metadatos del modelo + eco de configuración: funciona para cualquier estado, incl. fallido |
| Elimina permanentemente un modelo FALLIDO (409 para cualquier otro estado) |
| Renombra un modelo sin guardarlo |
| Archiva un modelo en un proyecto (lo hace visible en |
| Libera el espacio de un modelo guardado (inverso no destructivo de |
| Lista los proyectos (carpetas de modelos) en los que puedes archivar modelos |
| Crea un proyecto con nombre, opcionalmente compartido con el equipo |
| Renombra un proyecto que posees |
| Consulta el progreso de ajuste de un modelo |
| Obtén resultados (ROI, contribuciones, curvas de respuesta, diagnósticos y más) |
| Ajusta un modelo a largo plazo (VAR) |
| Adjunta/desadjunta un modelo VAR a un MMM para la sección |
| Persistir/leer las agrupaciones de controladores de la vista de contribuciones |
| Ejecuta la optimización de presupuesto en un modelo completado |
| Obtén el estado y los resultados del optimizador (los últimos, o un |
| Genera una plantilla de período futuro para la planificación de escenarios |
| Ejecuta una predicción de escenario "qué pasaría si" |
| Obtén los resultados del escenario (los últimos, o un |
| Lista el historial de ejecuciones guardadas del optimizador/escenario de un modelo |
| Renombra/anota una ejecución guardada (notas, etiquetas) |
| Fija/desfija una ejecución guardada |
Ejemplos de indicaciones
Prueba estos con cualquier asistente de IA conectado:
Explora tus modelos:
"Lista mis modelos de Simba y muéstrame el resumen de ROI por canal para el modelo completo más reciente."
Crea un modelo:
"Sube estos datos CSV a Simba y crea un nuevo modelo MMM con TV, Search y Social como canales de medios. Usa 'revenue' como KPI y 'date' como columna de fecha."
Comprueba el progreso:
"¿Cuál es el estado de ajuste del modelo a1b2c3d4?"
Obtén resultados:
"Muéstrame los diagnósticos del modelo y las contribuciones por canal para el modelo a1b2c3d4."
Optimiza el presupuesto:
"Ejecuta una optimización de presupuesto en el modelo a1b2c3d4 con un presupuesto total de $1M durante 12 meses. Establece los límites de TV en 5-40% y los de Search en 10-50%. Usa pesos de distribución uniformes."
Curvas de respuesta:
"Muéstrame las curvas de respuesta del modelo a1b2c3d4. ¿En qué nivel de gasto alcanza TV rendimientos decrecientes?"
Planificación de escenarios:
"Obtén una plantilla de escenario para el modelo a1b2c3d4 para las próximas 12 semanas. Luego ejecuta un escenario donde aumento TV en un 20% y reduzco Search en un 10%. ¿Qué sucede con los ingresos?"
Flujo de trabajo completo:
"Tengo datos de marketing que quiero analizar. Primero obtén el esquema para saber qué formato se necesita, luego sube mis datos, crea un modelo y, una vez que esté listo, muéstrame el ROI por canal."
Habilidades del agente
El directorio skills/ incluye habilidades de flujo de trabajo en el formato Agent Skills (SKILL.md por habilidad): instálalas en cualquier agente compatible con habilidades (por ejemplo, Claude Code) junto con este servidor MCP:
Habilidad | Cubre |
Subir → crear → consultar → leer resultados correctamente (semántica de secciones, nombres de canales, reglas de atribución/solapamiento, controles de tamaño de contexto) | |
Convenciones de payload del optimizador, ingresos vs. beneficios, consulta por run_id, semántica de columnas de decisión vs. comparación, curación de ejecuciones | |
Payloads de anulación de priors: fusión de valores predeterminados inteligentes, rechazo estricto, las familias de anclas de semi-saturación / semi-marginal / semi-vida | |
Modelado a largo plazo (VAR): crear → consultar → vincular → long_run_rollup |
Las habilidades son artefactos de documentación: viajan en el repositorio, no en el protocolo de red.
Advertencias y consejos
Cosas que suelen confundir tanto a los agentes de IA como a los humanos:
Servidor alojado: tu token de portador ES tu inicio de sesión
En las implementaciones HTTP, cada solicitud se autentica con el propio token Authorization: Bearer simba_sk_... del llamante; no hay una clave compartida en el servidor. Si las llamadas a herramientas devuelven "No API key on this request", tu cliente MCP no está enviando el token (revisa la configuración de authorization_token / encabezados en su configuración).
Los nombres de canal coinciden exactamente
Los resultados del modelo se indexan por el nombre de la columna de actividad del canal (por ejemplo, "search_activity", "TV_impressions"), no por el channels[].name que pasaste a create_model. Las claves pueden contener espacios y la coincidencia es sensible a mayúsculas y a espacios: el optimizador y las herramientas de escenario las usan como claves de diccionario.
Siempre llama a get_model_results con sections="channel_summary" primero para ver las claves exactas de los canales y luego úsalas textualmente en los payloads del optimizador/escenario.
Secciones de resultados
get_model_results sirve estas secciones (solicita solo lo que necesites mediante sections=):
channel_summary, contributions (espacio de KPI/unidad — el multiplicador no se aplica), coefficients (tabla de ingresos por período y por canal), params, decay_curves, response_curves, marginal_curves, saturation, mroi_summary (ROI marginal al gasto actual con HDI del 94%; los ajustes posteriores a #591 añaden los escalares de convención allperiods_unweighted / spendweighted_active, y los ajustes posteriores a #629 añaden un *_mean junto a cada *_median — la mediana se muestra, la media es la que concilia con la curva de ingresos marginales), mroi_periods (solo opt-in — la serie de ROI marginal por período; nunca en el payload predeterminado, solicítala por nombre), model_stats, actual_vs_model, long_run_rollup, optimizer, predictions, posterior, financials, model_config. El campo sections_available de la respuesta es la autoridad si el servidor es más nuevo que estos documentos.
Los modelos se identifican por model_hash
Todos los endpoints de modelos usan la cadena model_hash (por ejemplo, "f835671a25") devuelta por create_model y list_models.
La gestión de claves API está deliberadamente no expuesta
Los endpoints /api/v1/keys (crear/listar/revocar claves API) son solo de autenticación de sesión y no tienen herramientas MCP por diseño: un servidor que posee una clave no debe poder crear ni revocar claves. Gestiona las claves en la interfaz de Simba (Perfil → Claves API).
Matrices del optimizador, no escalares
laydown_weights y period_cpm deben ser objetos de matrices, cada matriz con exactamente num_periods elementos:
// Wrong
"period_cpm": {"TV": 10}
// Correct
"period_cpm": {"TV": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]}Las mismas claves de canal deben aparecer en bounds, laydown_weights y period_cpm. Los valores de bounds son porcentajes (0-100) del total_budget, no cantidades monetarias.
Limpia los NaN de las plantillas de escenario
La plantilla de get_scenario_template puede contener NaN/null para canales sin datos históricos. Reemplázalos con 0 antes de pasarlos a run_scenario:
import math
for row in scenario_data:
for key, val in row.items():
if val is None or (isinstance(val, float) and math.isnan(val)):
row[key] = 0Tres endpoints son asíncronos
Estos devuelven 202 y requieren consulta:
Acción | Inicio | Consulta |
Ajustar modelo |
|
|
Optimizar |
|
|
Escenario |
|
|
Consulta cada 5-10 segundos. Comprueba el campo status para "complete" o "failed".
Requisitos de subida de datos
Solo CSV (no Excel). Máximo 10 MB (impuesto por la API).
Mínimo de filas: consulta
get_data_schema→x-simba-constraints.min_rows; el campowarningsde la respuesta de subida es la autoridad. Más filas = posteriores más ajustados (se recomiendan 104+ filas semanales).Columnas de medios:
{channel}_activityy{channel}_spendpor canal.Usa
0para períodos inactivos, no en blanco o NA.¿Archivo grande? Pasa
csv_path(una ruta de archivo local) en lugar decsv_content— el servidor lo lee directamente en lugar de que el CSV pase por la conversación. Solo servidores locales (stdio); deshabilitado en implementaciones HTTP/SSE a menos queSIMBA_MCP_ALLOW_LOCAL_FILES=1.
Errores comunes
Error | Causa | Solución |
| Sin clave de API o clave caducada | Comprueba la variable de entorno |
| La clave no tiene el alcance necesario | Crea una clave con todos los alcances |
| Faltan claves obligatorias en el payload | Comprueba la lista de parámetros de la herramienta |
| El modelo aún se está ajustando o falló | Consulta |
| Escalar en lugar de matriz, o longitud incorrecta | Usa matrices que coincidan con |
| CPM cero o negativo | Todos los valores de CPM deben ser > 0 |
| Nombres de canal no coincidentes | Mismas claves en bounds, laydown_weights y period_cpm |
| Error tipográfico en el nombre de la columna | Comprueba que los encabezados del CSV coincidan exactamente |
| CSV demasiado grande | Reduce el tamaño del archivo o agrega datos |
Acceso directo a la API
El servidor MCP envuelve la API REST de Simba. Para scripting, CI/CD o entornos sin MCP, puedes llamar a la API directamente.
Cuándo usar MCP vs API directa
MCP (a través del asistente de IA) | API directa (curl / Python) | |
Mejor para | Análisis exploratorio, flujos de trabajo conversacionales | Pipelines automatizados, trabajos programados, scripts |
Sondeo asíncrono | El asistente lo maneja automáticamente | Tú implementas la lógica de sondeo hasta completar |
Limpieza de datos | El asistente limpia NaN/null, construye payloads | Tú escribes el código de preparación de datos |
Reproducibilidad | Conversacional | Scriptable, controlado por versiones |
Ambos usan las mismas claves de API con los mismos alcances.
Inicio rápido (Python)
import requests, time
BASE = "https://demo.simba-mmm.com"
HEADERS = {"Authorization": "Bearer simba_sk_..."}
# Upload data
with open("marketing_data.csv", "rb") as f:
r = requests.post(f"{BASE}/api/v1/ingest",
headers={**HEADERS, "Content-Type": "text/csv"},
data=f.read(), params={"name": "q1_data"})
file_id = r.json()["id"]
# Create model
r = requests.post(f"{BASE}/api/v1/models", headers=HEADERS, json={
"data_source": {"uploaded_file_id": file_id},
"date_column": "date",
"kpi_column": "revenue",
"hierarchy_column": "brand",
"channels": [
{"name": "TV", "activity_column": "tv_grps", "spend_column": "tv_spend"},
{"name": "Search", "activity_column": "search_impressions", "spend_column": "search_spend"},
],
"total_media_effect": "Retail",
})
model_hash = r.json()["model_hash"]
# Poll until complete
while True:
status = requests.get(f"{BASE}/api/v1/models/{model_hash}/status",
headers=HEADERS).json()
if status["status"] in ("complete", "failed"):
break
print(f"Fitting... {status.get('progress', '?')}%")
time.sleep(10)
# Get results
results = requests.get(f"{BASE}/api/v1/models/{model_hash}/results",
headers=HEADERS,
params={"sections": "channel_summary,model_stats"}).json()
for ch in results["results"]["channel_summary"]:
print(f"{ch['Channel']}: ROI {ch['ROI']:.1f}")Inicio rápido (curl)
API_KEY="simba_sk_..."
BASE="https://demo.simba-mmm.com"
# Upload data
curl -X POST "$BASE/api/v1/ingest?name=q1_data" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: text/csv" \
--data-binary @marketing_data.csv
# Create model (replace uploaded_file_id with id from upload)
curl -X POST "$BASE/api/v1/models" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"data_source": {"uploaded_file_id": 1}, "date_column": "date", "kpi_column": "revenue", "hierarchy_column": "brand", "channels": [{"name": "TV", "activity_column": "tv_grps", "spend_column": "tv_spend"}]}'
# Poll status (replace MODEL_HASH)
curl "$BASE/api/v1/models/MODEL_HASH/status" -H "Authorization: Bearer $API_KEY"
# Get results
curl "$BASE/api/v1/models/MODEL_HASH/results?sections=channel_summary,model_stats" \
-H "Authorization: Bearer $API_KEY"Configuración de la clave de API
El servidor MCP se autentica con las mismas claves de API utilizadas por la API REST de Simba. Crea una clave con los alcances requeridos:
Ve a Perfil > Claves de API en la interfaz de Simba
Haz clic en Crear clave
Establece los alcances:
ingest,read:models,read:results,create:models,optimize,scenarioCopia la clave (se muestra solo una vez)
Cómo se suministra la clave depende de dónde se ejecute el servidor:
Local (stdio — Cursor, Claude Code): configúrala como la variable de entorno
SIMBA_API_KEYen tu configuración de MCP (los ejemplos anteriores).Alojado (
https://demo.simba-mmm.com/mcp): envíala como el encabezado HTTPAuthorization: Bearer— el campoauthorization_tokenen la configuración del conector MCP de Claude. Cada llamador usa su propia clave (v0.2.2+): el servidor nunca comparte una identidad entre llamadores, una solicitud sin clave recibe un 401 estructurado con orientación, y solo ves los modelos de tu propia cuenta.
Configuración
Variable de Entorno | Descripción | Por defecto |
| URL base de la API de Simba |
|
| Tu clave de API de Simba (solo modo stdio — los llamadores HTTP envían su propia clave como token de portador) | (requerida para stdio) |
Modos de transporte
El servidor admite todos los modos de transporte de MCP:
# stdio (default) — for Cursor, Claude Code
simba-mcp
# Streamable HTTP — for remote deployment
simba-mcp --transport streamable-http --port 8100
# SSE — legacy transport
simba-mcp --transport sse --port 8100
# Or via uvicorn directly
uvicorn simba_mcp.server:app --host 0.0.0.0 --port 8100Licencia
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -licenseNot gradedqualityBmaintenanceConnects AI assistants to marketing mix models, enabling natural language data upload, performance modeling, budget optimization, and scenario testing.
- AlicenseAqualityBmaintenanceEnables AI assistants to manage Meta Ads (Facebook, Instagram) end-to-end through natural conversation, including launching campaigns, uploading creatives, updating budgets, and analyzing performance.42Business Source 1.1
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to create, analyze, and optimize ad campaigns across Google Ads, Meta Ads, TikTok Ads, LinkedIn Ads, Amazon Ads, and ChatGPT Ads through natural language using 400+ tools.83MIT
- FlicenseNot gradedqualityCmaintenanceEnables marketing optimization tasks such as copywriting, campaign analysis, social media planning, audience segmentation, and KPI tracking through natural language.113
Related MCP Connectors
AI marketing agent for Google Ads, Meta, GA4, TikTok, LinkedIn, Shopify, HubSpot and more.
Ask AI about your ads — query Meta, TikTok, and Google Ads performance in natural language.
Connect e-commerce and marketing data to AI assistants via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/getsimba-ai/simba-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server