Simba MCP Server
OfficialSimba MCP Server
Simba はベイズ型マーケティング・ミックス・モデリング(MMM)プラットフォームです。このマーケティング・ミックス・モデリング MCP サーバー を使うと、AI アシスタントがモデルと直接やり取りできます。Claude、Cursor、Claude Code で自然言語を使ってデータのアップロード、モデルの構築、結果の確認、予算最適化の実行が可能です。
インストール
pip install simba-mcpまたは、インストールせずに直接実行:
uvx simba-mcpRelated MCP server: Meta Ads MCP
クイックスタート
Cursor IDE
Cursor の MCP 設定(ワークスペース内の .cursor/mcp.json またはグローバル設定)に追加:
{
"mcpServers": {
"simba": {
"command": "uvx",
"args": ["simba-mcp"],
"env": {
"SIMBA_API_URL": "https://demo.simba-mmm.com",
"SIMBA_API_KEY": "simba_sk_..."
}
}
}
}Claude Code
Claude Code の MCP 設定に追加:
{
"mcpServers": {
"simba": {
"command": "uvx",
"args": ["simba-mcp"],
"env": {
"SIMBA_API_URL": "https://demo.simba-mmm.com",
"SIMBA_API_KEY": "simba_sk_..."
}
}
}
}Claude API(MCP コネクタ)
Anthropic MCP コネクタでリモートの Streamable HTTP トランスポートを使用:
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"],
)利用可能なツール
ツール | 説明 |
| MMM 入力ファイル用の正規 CSV スキーマを取得 |
| CSV データセットを Simba にアップロード |
| 以前にアップロードしたデータセットを一覧表示 |
| 1 つのアップロードの詳細(列スキーマを含む)を取得 |
| すべてのモデルをステータス付きで一覧表示 |
| 新しい MMM モデルを設定してフィッティングを開始 |
| モデルのメタデータ + 設定エコー(失敗を含む任意のステータスで動作) |
| FAILED モデルを完全に削除(他のステータスでは 409) |
| モデルを保存せずに名前を変更 |
| モデルをプロジェクトに登録(デフォルトの |
| 保存済みモデルのスロットを解放( |
| モデルを登録できるプロジェクト(モデルフォルダ)を一覧表示 |
| 名前付きプロジェクトを作成(オプションでチーム共有) |
| 自分が所有するプロジェクトの名前を変更 |
| モデルのフィッティング進捗をポーリング |
| 結果(ROI、貢献度、反応曲線、診断など)を取得 |
| 長期(VAR)モデルをフィッティング |
| VAR モデルを MMM に接続/解除( |
| 貢献度ビューのドライバーグループを保存/読み取り |
| 完了したモデルで予算最適化を実行 |
| オプティマイザーのステータスと結果を取得(最新、または特定の |
| シナリオ計画用の将来期間テンプレートを生成 |
| 「what-if」シナリオ予測を実行 |
| シナリオ結果を取得(最新、または特定の |
| モデルの保存済みオプティマイザー/シナリオ実行履歴を一覧表示 |
| 保存済み実行の名前変更/注釈付け(メモ、タグ) |
| 保存済み実行のピン留め/ピン留め解除 |
プロンプトの例
接続済みの AI アシスタントで試してみてください:
モデルを探索:
「Simba モデルを一覧表示して、最新の完了モデルのチャネル ROI サマリーを見せて。」
モデルを構築:
「この CSV データを Simba にアップロードして、TV、Search、Social をメディアチャネルとする新しい MMM モデルを作成して。KPI は 'revenue'、日付列は 'date' を使って。」
進捗を確認:
「モデル a1b2c3d4 のフィッティングステータスは?」
結果を取得:
「モデル a1b2c3d4 のモデル診断とチャネル貢献度を見せて。」
予算を最適化:
「モデル a1b2c3d4 で、総予算 100 万ドル、12 か月間の予算最適化を実行して。TV の範囲は 5〜40%、Search は 10〜50% に設定して。均一なレイダウンウェイトを使って。」
反応曲線:
「モデル a1b2c3d4 の反応曲線を見せて。TV はどの支出レベルで収穫逓減になる?」
シナリオ計画:
「モデル a1b2c3d4 の今後 12 週間のシナリオテンプレートを取得して。次に、TV を 20% 増やし、Search を 10% 減らすシナリオを実行して。収益はどうなる?」
完全なワークフロー:
「分析したいマーケティングデータがあります。まずスキーマを取得して必要な形式を確認し、次にデータをアップロードしてモデルを作成し、完了したらチャネル別 ROI を見せて。」
エージェントスキル
skills/ ディレクトリには、Agent Skills 形式(スキルごとに SKILL.md)のワークフロースキルが同梱されています。この MCP サーバーと一緒に、スキル対応エージェント(例: Claude Code)にインストールしてください:
スキル | 対象範囲 |
アップロード → 作成 → ポーリング → 結果の正しい読み取り(セクションの意味、チャネル命名、アトリビューション/Overlap ルール、コンテキストサイズ制御) | |
オプティマイザーのペイロード規約、収益と利益、run_id によるポーリング、決定列と比較列の意味、実行のキュレーション | |
事前分布オーバーライドのペイロード: スマートデフォルトのマージ、厳格な拒否、半飽和/半限界/半減期アンカーファミリー | |
長期(VAR)モデリング: 作成 → ポーリング → リンク → long_run_rollup |
スキルはドキュメント成果物であり、リポジトリに同梱されます。ワイヤープロトコルには含まれません。
落とし穴とヒント
AI エージェントと人間の両方がよくつまずく点:
ホスト型サーバー: ベアラートークンがそのままログイン
HTTP デプロイメントでは、各リクエストは呼び出し元自身の Authorization: Bearer simba_sk_... トークンで認証されます。サーバー側の共有キーはありません。ツール呼び出しが "No API key on this request" を返す場合、MCP クライアントがトークンを送信していません(設定の authorization_token / ヘッダー設定を確認してください)。
チャネル名は完全一致
モデル結果は、create_model に渡した channels[].name ではなく、チャネルのアクティビティ列名(例: "search_activity"、"TV_impressions")でキー付けされます。キーにはスペースを含めることができ、一致は大文字小文字とスペースに敏感です。オプティマイザーとシナリオツールはこれらを辞書キーとして使用します。
必ず最初に get_model_results を sections="channel_summary" で呼び出して正確なチャネルキーを確認し、そのキーをそのままオプティマイザー/シナリオのペイロードで使用してください。
結果セクション
get_model_results は以下のセクションを提供します(必要なものだけを sections= でリクエストしてください):
channel_summary、contributions(KPI/単位空間 — 乗数は適用されません)、coefficients(期間別・チャネル別の収益テーブル)、params、decay_curves、response_curves、marginal_curves、saturation、mroi_summary(現在の支出における限界 ROI、94% HDI 付き。#591 以降のフィットでは allperiods_unweighted / spendweighted_active 規約スカラーが追加され、#629 以降のフィットではすべての *_median の隣に *_mean が追加されます。表示されるのは中央値で、限界収益曲線と整合するのは平均値です)、mroi_periods(オプトインのみ — 期間別の限界 ROI 系列。デフォルトのペイロードには含まれず、名前でリクエストしてください)、model_stats、actual_vs_model、long_run_rollup、optimizer、predictions、posterior、financials、model_config。サーバーがこのドキュメントより新しい場合は、レスポンスの sections_available フィールドが信頼できる情報源です。
モデルは model_hash で識別
すべてのモデルエンドポイントは、create_model と list_models が返す文字列 model_hash(例: "f835671a25")を使用します。
API キー管理は意図的に公開されていません
/api/v1/keys エンドポイント(API キーの作成/一覧表示/失効)はセッション認証のみで、MCP ツールは設計上ありません。1 つのキーを保持するサーバーがキーを発行または失効できてはならないからです。キーの管理は Simba UI(プロフィール → API キー)で行ってください。
オプティマイザーは配列、スカラーではない
laydown_weights と period_cpm は配列のオブジェクトでなければならず、各配列は正確に num_periods 個の要素を持ちます:
// Wrong
"period_cpm": {"TV": 10}
// Correct
"period_cpm": {"TV": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]}同じチャネルキーが bounds、laydown_weights、period_cpm に含まれている必要があります。境界値は total_budget に対するパーセンテージ(0〜100)であり、通貨額ではありません。
シナリオテンプレートから NaN を除去
get_scenario_template のテンプレートには、履歴データのないチャネルに対して NaN/null が含まれる場合があります。run_scenario に渡す前に 0 に置き換えてください:
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] = 03 つのエンドポイントは非同期
これらは 202 を返し、ポーリングが必要です:
アクション | 開始 | ポーリング |
モデルのフィッティング |
|
|
最適化 |
|
|
シナリオ |
|
|
5〜10 秒ごとにポーリングしてください。status フィールドで "complete" または "failed" を確認します。
データアップロードの要件
CSV のみ(Excel 不可)。最大 10 MB(API で強制)。
最小行数:
get_data_schema→x-simba-constraints.min_rowsを確認。アップロードレスポンスのwarningsフィールドが信頼できる情報源です。行数が多いほど事後分布が狭くなります(週次データで 104 行以上推奨)。メディア列: チャネルごとに
{channel}_activityと{channel}_spend。非アクティブ期間は空白や NA ではなく
0を使用。大きなファイルの場合:
csv_contentの代わりにcsv_path(ローカルファイルパス)を渡してください。サーバーが会話を介さず直接読み取ります。ローカル(stdio)サーバーのみ。HTTP/SSE デプロイメントではSIMBA_MCP_ALLOW_LOCAL_FILES=1が設定されていない限り無効です。
よくあるエラー
エラー | 原因 | 修正方法 |
| APIキーがない、または期限切れ |
|
| キーに必要なスコープがない | すべてのスコープを持つキーを作成 |
| ペイロードに必須キーがない | ツールのパラメータリストを確認 |
| モデルがまだフィッティング中、または失敗した |
|
| スカラー値が配列になっていない、または長さが間違っている |
|
| CPMがゼロまたは負 | すべてのCPM値を > 0 にする |
| チャネル名の不一致 | bounds、laydown_weights、period_cpm で同じキーを使用 |
| 列名のタイポ | CSVヘッダーが完全に一致するか確認 |
| CSVが大きすぎる | ファイルサイズを削減するかデータを集約する |
直接APIアクセス
MCPサーバーはSimba REST APIをラップしています。スクリプト、CI/CD、またはMCPのない環境では、APIを直接呼び出すことができます。
MCPと直接APIの使い分け
MCP(AIアシスタント経由) | 直接API(curl / Python) | |
最適な用途 | 探索的分析、対話型ワークフロー | 自動化パイプライン、スケジュールジョブ、スクリプト |
非同期ポーリング | アシスタントが自動的に処理 | 完了までポーリングするロジックを自分で実装 |
データクリーニング | アシスタントがNaN/nullを処理し、ペイロードを構築 | データ前処理コードを自分で書く |
再現性 | 対話型 | スクリプト化可能、バージョン管理可能 |
どちらも同じスコープを持つ同じAPIキーを使用します。
クイックスタート(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}")クイックスタート(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"APIキーの設定
MCPサーバーは、Simba REST APIで使用されるものと同じAPIキーで認証します。必要なスコープを持つキーを作成してください:
Simba UIで プロフィール > APIキー に移動
キーを作成 をクリック
スコープを設定:
ingest、read:models、read:results、create:models、optimize、scenarioキーをコピー(一度だけ表示されます)
キーの指定方法は、サーバーの実行場所によって異なります:
ローカル(stdio — Cursor、Claude Code): MCP設定で
SIMBA_API_KEY環境変数として設定します(上記の例のとおり)。ホステッド(
https://demo.simba-mmm.com/mcp): HTTPAuthorization: Bearerヘッダーとして送信します — Claude MCPコネクタ設定のauthorization_tokenフィールドです。各呼び出し元は独自のキーを使用します(v0.2.2以降): サーバーは呼び出し元間でIDを共有することはなく、キーのないリクエストには ガイダンス付きの構造化された401が返され、自分のアカウントのモデルのみが表示されます。
設定
環境変数 | 説明 | デフォルト |
| Simba APIのベースURL |
|
| お使いのSimba APIキー(stdioモードのみ — HTTP呼び出し元はベアラートークンとして独自のキーを送信します) | (stdioでは必須) |
トランスポートモード
サーバーはすべての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 8100ライセンス
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