Simba MCP Server
OfficialSimba MCP Server
Simba ist eine Plattform für Bayesianisches Marketing-Mix-Modelling (MMM). Dieser MCP-Server für Marketing-Mix-Modelling ermöglicht es KI-Assistenten, direkt mit Ihren Modellen zu interagieren – Daten hochladen, Modelle erstellen, Ergebnisse prüfen und Budgetoptimierungen über natürliche Sprache in Claude, Cursor oder Claude Code durchführen.
Installation
pip install simba-mcpOder direkt ohne Installation ausführen:
uvx simba-mcpRelated MCP server: Meta Ads MCP
Schnellstart
Cursor IDE
Fügen Sie dies zu Ihren Cursor-MCP-Einstellungen hinzu (.cursor/mcp.json im Arbeitsbereich oder globale Einstellungen):
{
"mcpServers": {
"simba": {
"command": "uvx",
"args": ["simba-mcp"],
"env": {
"SIMBA_API_URL": "https://demo.simba-mmm.com",
"SIMBA_API_KEY": "simba_sk_..."
}
}
}
}Claude Code
Fügen Sie dies zu Ihrer Claude-Code-MCP-Konfiguration hinzu:
{
"mcpServers": {
"simba": {
"command": "uvx",
"args": ["simba-mcp"],
"env": {
"SIMBA_API_URL": "https://demo.simba-mmm.com",
"SIMBA_API_KEY": "simba_sk_..."
}
}
}
}Claude API (MCP-Connector)
Verwenden Sie den entfernten Streamable-HTTP-Transport mit dem Anthropic-MCP-Connector:
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"],
)Verfügbare Tools
Tool | Beschreibung |
| Das kanonische CSV-Schema für MMM-Eingabedateien abrufen |
| Ein CSV-Dataset zu Simba hochladen |
| Zuvor hochgeladene Datasets auflisten |
| Details zu einem Upload, einschließlich seines Spaltenschemas |
| Alle Modelle mit ihrem Status auflisten |
| Ein neues MMM-Modell konfigurieren und das Fitting starten |
| Modellmetadaten + Konfigurations-Echo – funktioniert für jeden Status, inkl. fehlgeschlagen |
| Ein FEHLGESCHLAGENES Modell dauerhaft löschen (409 bei jedem anderen Status) |
| Ein Modell umbenennen, ohne es zu speichern |
| Ein Modell in ein Projekt einordnen (macht es für die Standard- |
| Den Platz eines gespeicherten Modells freigeben (nicht-destruktive Umkehrung von |
| Die Projekte (Modellordner) auflisten, in die Sie Modelle einordnen können |
| Ein benanntes Projekt erstellen, optional teamweit geteilt |
| Ein Projekt umbenennen, das Sie besitzen |
| Den Fitting-Fortschritt eines Modells abfragen |
| Ergebnisse abrufen (ROI, Beiträge, Response-Kurven, Diagnostik und mehr) |
| Ein langfristiges (VAR) Modell fitten |
| Ein VAR-Modell an ein MMM anhängen/lösen für den Abschnitt |
| Die Treibergruppierungen der Beitragsansicht speichern/lesen |
| Budgetoptimierung für ein abgeschlossenes Modell ausführen |
| Optimierungsstatus und -ergebnisse abrufen (neueste oder eine bestimmte |
| Eine Vorlage für zukünftige Perioden für die Szenarioplanung generieren |
| Eine „Was-wäre-wenn“-Szenariovorhersage ausführen |
| Szenarioergebnisse abrufen (neueste oder eine bestimmte |
| Den Verlauf gespeicherter Optimierungs-/Szenarioläufe eines Modells auflisten |
| Einen gespeicherten Lauf umbenennen/annotieren (Notizen, Tags) |
| Einen gespeicherten Lauf anheften/lösen |
Beispiel-Prompts
Probieren Sie diese mit einem beliebigen verbundenen KI-Assistenten aus:
Modelle erkunden:
„Listen Sie meine Simba-Modelle auf und zeigen Sie mir die Kanal-ROI-Zusammenfassung für das neueste abgeschlossene Modell.“
Ein Modell erstellen:
„Laden Sie diese CSV-Daten zu Simba hoch und erstellen Sie ein neues MMM-Modell mit TV, Search und Social als Medienkanälen. Verwenden Sie ‚revenue‘ als KPI und ‚date‘ als Datumsspalte.“
Fortschritt prüfen:
„Wie ist der Fitting-Status von Modell a1b2c3d4?“
Ergebnisse abrufen:
„Zeigen Sie mir die Modelldiagnostik und die Kanalbeiträge für Modell a1b2c3d4.“
Budget optimieren:
„Führen Sie eine Budgetoptimierung für Modell a1b2c3d4 mit einem Gesamtbudget von 1 Mio. $ über 12 Monate durch. Setzen Sie TV-Grenzen auf 5–40 % und Search auf 10–50 %. Verwenden Sie gleichmäßige Laydown-Gewichte.“
Response-Kurven:
„Zeigen Sie mir die Response-Kurven für Modell a1b2c3d4. Ab welchem Ausgabenniveau erreicht TV abnehmende Erträge?“
Szenarioplanung:
„Holen Sie eine Szenariovorlage für Modell a1b2c3d4 für die nächsten 12 Wochen. Führen Sie dann ein Szenario aus, in dem ich TV um 20 % erhöhe und Search um 10 % kürze. Was passiert mit dem Umsatz?“
Vollständiger Workflow:
„Ich habe Marketingdaten, die ich analysieren möchte. Holen Sie zuerst das Schema, damit ich weiß, welches Format benötigt wird, laden Sie dann meine Daten hoch, erstellen Sie ein Modell, und sobald es fertig ist, zeigen Sie mir den ROI nach Kanal.“
Agent-Fähigkeiten
Das Verzeichnis skills/ enthält Workflow-Fähigkeiten im
Agent Skills-Format (SKILL.md pro Fähigkeit) –
installieren Sie sie in jeden Agenten, der Fähigkeiten unterstützt (z. B. Claude Code), zusammen mit diesem
MCP-Server:
Fähigkeit | Abdeckung |
Hochladen → Erstellen → Abfragen → korrektes Lesen der Ergebnisse (Abschnittssemantik, Kanalbenennung, Attribution/Overlap-Regeln, Kontextgrößen-Steuerung) | |
Optimizer-Payload-Konventionen, Umsatz vs. Gewinn, Abfragen per run_id, Entscheidungs- vs. Vergleichsspalten-Semantik, Lauf-Kuratierung | |
Prior-Override-Payloads: Smart-Default-Zusammenführung, strikte Ablehnung, die Halbsättigungs-/Halbgrenz-/Halbwertszeit-Ankerfamilien | |
Langfristige (VAR) Modellierung: Erstellen → Abfragen → Verknüpfen → long_run_rollup |
Die Fähigkeiten sind Dokumentationsartefakte – sie reisen im Repository, nicht über das Drahtprotokoll.
Stolperfallen & Tipps
Dinge, die sowohl KI-Agenten als auch Menschen häufig ausbremsen:
Gehosteter Server: Ihr Bearer-Token IST Ihr Login
Bei HTTP-Bereitstellungen wird jede Anfrage mit dem eigenen
Authorization: Bearer simba_sk_...-Token des Aufrufers authentifiziert – es gibt keinen serverseitigen gemeinsamen
Schlüssel. Wenn Tool-Aufrufe "No API key on this request" zurückgeben, sendet Ihr MCP-Client
das Token nicht (prüfen Sie die authorization_token-/Header-Einstellung
in seiner Konfiguration).
Kanalnamen sind exakte Übereinstimmungen
Modellergebnisse sind nach dem Aktivitätsspaltennamen des Kanals verschlüsselt (z. B. "search_activity", "TV_impressions"), nicht nach dem channels[].name, den Sie an create_model übergeben haben. Schlüssel können Leerzeichen enthalten, und die Übereinstimmung ist groß-/kleinschreibungs- und leerzeichenempfindlich – der Optimizer und die Szenario-Tools verwenden sie als Wörterbuchschlüssel.
Rufen Sie immer zuerst get_model_results mit sections="channel_summary" auf, um die genauen Kanalschlüssel zu sehen, und verwenden Sie diese dann wörtlich in Optimizer-/Szenario-Payloads.
Ergebnisabschnitte
get_model_results liefert diese Abschnitte (fordern Sie nur an, was Sie benötigen, über sections=):
channel_summary, contributions (KPI-/Einheitenraum – Multiplikator nicht angewendet), coefficients (Tabelle mit Umsatz pro Periode und Kanal), params, decay_curves, response_curves, marginal_curves, saturation, mroi_summary (marginaler ROI bei aktuellem Spend mit 94 % HDI; Fits nach #591 fügen die allperiods_unweighted-/spendweighted_active-Konventionsskalare hinzu, und Fits nach #629 fügen neben jedem *_median ein *_mean hinzu – der Median wird angezeigt, der Mittelwert ist das, was mit der marginalen Umsatzkurve übereinstimmt), mroi_periods (nur auf Opt-in – die periodenweise marginale ROI-Serie; nie im Standard-Payload, fordern Sie sie namentlich an), model_stats, actual_vs_model, long_run_rollup, optimizer, predictions, posterior, financials, model_config. Das Feld sections_available der Antwort ist maßgeblich, wenn der Server neuer ist als diese Dokumentation.
Modelle werden über model_hash identifiziert
Alle Modell-Endpunkte verwenden den String model_hash (z. B. "f835671a25"), der von create_model und list_models zurückgegeben wird.
API-Schlüsselverwaltung ist bewusst nicht exponiert
Die /api/v1/keys-Endpunkte (API-Schlüssel erstellen/auflisten/widerrufen) sind nur für Sitzungsauthentifizierung gedacht und haben absichtlich keine MCP-Tools: Ein Server, der einen Schlüssel besitzt, darf keine Schlüssel erzeugen oder widerrufen können. Verwalten Sie Schlüssel in der Simba-Oberfläche (Profil → API-Schlüssel).
Optimizer-Arrays, keine Skalare
laydown_weights und period_cpm müssen Objekte aus Arrays sein, wobei jedes Array genau num_periods Elemente hat:
// Wrong
"period_cpm": {"TV": 10}
// Correct
"period_cpm": {"TV": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]}Dieselben Kanalschlüssel müssen in bounds, laydown_weights und period_cpm erscheinen. Grenzwerte sind Prozentsätze (0–100) des total_budget, keine Währungsbeträge.
NaN aus Szenariovorlagen entfernen
Die Vorlage von get_scenario_template kann NaN/null für Kanäle ohne historische Daten enthalten. Ersetzen Sie sie durch 0, bevor Sie sie an run_scenario übergeben:
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] = 0Drei Endpunkte sind asynchron
Diese geben 202 zurück und erfordern Abfragen:
Aktion | Start | Abfragen |
Modell fitten |
|
|
Optimieren |
|
|
Szenario |
|
|
Fragen Sie alle 5–10 Sekunden ab. Prüfen Sie das Feld status auf "complete" oder "failed".
Anforderungen an den Daten-Upload
Nur CSV (nicht Excel). Maximum 10 MB (API-erzwungen).
Zeilenminimum: Prüfen Sie
get_data_schema→x-simba-constraints.min_rows; das Feldwarningsder Upload-Antwort ist maßgeblich. Mehr Zeilen = engere Posterioris (104+ wöchentliche Zeilen empfohlen).Medienspalten:
{channel}_activityund{channel}_spendpro Kanal.Verwenden Sie
0für inaktive Perioden, nicht leer oder NA.Große Datei? Übergeben Sie
csv_path(einen lokalen Dateipfad) anstelle voncsv_content– der Server liest die Datei direkt, anstatt dass die CSV durch die Konversation geht. Nur für lokale (stdio) Server; auf HTTP/SSE-Bereitstellungen deaktiviert, außerSIMBA_MCP_ALLOW_LOCAL_FILES=1.
Häufige Fehler
Fehler | Ursache | Behebung |
| Kein API-Schlüssel oder abgelaufener Schlüssel | Umgebungsvariable |
| Der Schlüssel hat nicht den erforderlichen Scope | Einen Schlüssel mit allen Scopes erstellen |
| Dem Payload fehlen erforderliche Schlüssel | Die Parameterliste des Tools prüfen |
| Modell wird noch angepasst oder ist fehlgeschlagen |
|
| Skalar statt Array oder falsche Länge | Arrays verwenden, die |
| Null oder negative CPM | Alle CPM-Werte müssen > 0 sein |
| Nicht übereinstimmende Kanalnamen | Gleiche Schlüssel in bounds, laydown_weights und period_cpm |
| Tippfehler im Spaltennamen | Prüfen, dass die CSV-Header exakt übereinstimmen |
| CSV zu groß | Dateigröße reduzieren oder Daten aggregieren |
Direkter API-Zugriff
Der MCP-Server kapselt die Simba REST API. Für Skripte, CI/CD oder Umgebungen ohne MCP können Sie die API direkt aufrufen.
Wann MCP vs. direkte API verwenden
MCP (über KI-Assistent) | Direkte API (curl / Python) | |
Am besten geeignet für | Explorative Analyse, konversationelle Workflows | Automatisierte Pipelines, geplante Jobs, Skripte |
Asynchrones Polling | Der Assistent übernimmt das automatisch | Sie implementieren die Polling-Logik bis zum Abschluss |
Datenbereinigung | Der Assistent bereinigt NaN/null und erstellt Payloads | Sie schreiben den Code zur Datenaufbereitung |
Reproduzierbarkeit | Konversationell | Skriptbar, versionskontrolliert |
Beide verwenden dieselben API-Schlüssel mit denselben Scopes.
Schnellstart (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}")Schnellstart (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"Einrichtung des API-Schlüssels
Der MCP-Server authentifiziert sich mit denselben API-Schlüsseln, die auch die Simba REST API verwendet. Erstellen Sie einen Schlüssel mit den erforderlichen Scopes:
Gehen Sie in der Simba-Oberfläche zu Profil > API-Schlüssel
Klicken Sie auf Schlüssel erstellen
Legen Sie die Scopes fest:
ingest,read:models,read:results,create:models,optimize,scenarioKopieren Sie den Schlüssel (wird nur einmal angezeigt)
Wie der Schlüssel bereitgestellt wird, hängt davon ab, wo der Server läuft:
Lokal (stdio — Cursor, Claude Code): Legen Sie ihn als Umgebungsvariable
SIMBA_API_KEYin Ihrer MCP-Konfiguration fest (siehe Beispiele oben).Gehostet (
https://demo.simba-mmm.com/mcp): Senden Sie ihn als HTTP-HeaderAuthorization: Bearer— das Feldauthorization_tokenin der Claude-MCP-Connector-Konfiguration. Jeder Aufrufer verwendet seinen eigenen Schlüssel (v0.2.2+): Der Server teilt niemals eine Identität zwischen Aufrufern, eine Anfrage ohne Schlüssel erhält eine strukturierte 401-Antwort mit Hinweisen, und Sie sehen nur die Modelle Ihres eigenen Kontos.
Konfiguration
Umgebungsvariable | Beschreibung | Standard |
| Basis-URL der Simba API |
|
| Ihr Simba-API-Schlüssel (nur im stdio-Modus — HTTP-Aufrufer senden ihren eigenen Schlüssel als Bearer-Token) | (erforderlich für stdio) |
Transportmodi
Der Server unterstützt alle MCP-Transportmodi:
# 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 8100Lizenz
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