simba-mcp 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,5 @@
1
+ Fix CI: move dev deps to optional-dependencies for pip compatibility
2
+
3
+ pip does not support --dependency-group. Move dev dependencies from
4
+ [dependency-groups] to [project.optional-dependencies] and use
5
+ pip install -e ".[dev]" everywhere.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: Bug Report
3
+ about: Report a bug in the Simba MCP Server
4
+ labels: bug
5
+ ---
6
+
7
+ ## Description
8
+
9
+ <!-- A clear description of the bug. -->
10
+
11
+ ## Steps to Reproduce
12
+
13
+ 1.
14
+ 2.
15
+ 3.
16
+
17
+ ## Expected Behavior
18
+
19
+ <!-- What should happen? -->
20
+
21
+ ## Actual Behavior
22
+
23
+ <!-- What happens instead? Include error messages or logs if available. -->
24
+
25
+ ## Environment
26
+
27
+ - **simba-mcp version:**
28
+ - **Python version:**
29
+ - **MCP client:** (Cursor / Claude Code / Claude API / other)
30
+ - **OS:**
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: Feature Request
3
+ about: Suggest a new tool or improvement
4
+ labels: enhancement
5
+ ---
6
+
7
+ ## Problem
8
+
9
+ <!-- What problem does this solve? What's missing today? -->
10
+
11
+ ## Proposed Solution
12
+
13
+ <!-- Describe the feature or change you'd like. -->
14
+
15
+ ## Alternatives Considered
16
+
17
+ <!-- Any other approaches you've thought about. -->
@@ -0,0 +1,17 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: pip
4
+ directory: "/"
5
+ schedule:
6
+ interval: weekly
7
+ labels:
8
+ - dependencies
9
+ open-pull-requests-limit: 5
10
+
11
+ - package-ecosystem: github-actions
12
+ directory: "/"
13
+ schedule:
14
+ interval: weekly
15
+ labels:
16
+ - ci
17
+ open-pull-requests-limit: 5
@@ -0,0 +1,17 @@
1
+ ## What does this PR do?
2
+
3
+ <!-- A brief description of the change. -->
4
+
5
+ ## Why?
6
+
7
+ <!-- Why is this change needed? Link to an issue if applicable. -->
8
+
9
+ ## Testing
10
+
11
+ - [ ] `pytest -v` passes
12
+ - [ ] `ruff check src/ tests/` passes
13
+ - [ ] `ruff format --check src/ tests/` passes
14
+
15
+ ## Notes
16
+
17
+ <!-- Anything reviewers should know — breaking changes, migration steps, etc. -->
@@ -0,0 +1,36 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.11", "3.12", "3.13"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python ${{ matrix.python-version }}
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+
24
+ - name: Install dependencies
25
+ run: |
26
+ python -m pip install --upgrade pip
27
+ pip install -e ".[dev]"
28
+
29
+ - name: Lint
30
+ run: ruff check src/ tests/
31
+
32
+ - name: Format check
33
+ run: ruff format --check src/ tests/
34
+
35
+ - name: Test
36
+ run: pytest -v
@@ -0,0 +1,56 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+ id-token: write
10
+
11
+ jobs:
12
+ test:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Set up Python
18
+ uses: actions/setup-python@v5
19
+ with:
20
+ python-version: "3.12"
21
+
22
+ - name: Install dependencies
23
+ run: |
24
+ python -m pip install --upgrade pip
25
+ pip install -e ".[dev]"
26
+
27
+ - name: Lint
28
+ run: ruff check src/ tests/
29
+
30
+ - name: Format check
31
+ run: ruff format --check src/ tests/
32
+
33
+ - name: Test
34
+ run: pytest -v
35
+
36
+ publish:
37
+ needs: test
38
+ runs-on: ubuntu-latest
39
+ environment: pypi
40
+
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+
44
+ - name: Set up Python
45
+ uses: actions/setup-python@v5
46
+ with:
47
+ python-version: "3.12"
48
+
49
+ - name: Install build tools
50
+ run: pip install hatchling build
51
+
52
+ - name: Build package
53
+ run: python -m build
54
+
55
+ - name: Publish to PyPI
56
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,31 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .eggs/
8
+ *.egg
9
+
10
+ .venv/
11
+ venv/
12
+ .env
13
+
14
+ .pytest_cache/
15
+ .ruff_cache/
16
+ .mypy_cache/
17
+
18
+ # OS
19
+ .DS_Store
20
+ Thumbs.db
21
+
22
+ # IDEs
23
+ .idea/
24
+ .vscode/
25
+ .cursor/
26
+ *.swp
27
+ *.swo
28
+ *~
29
+
30
+ # Logs
31
+ *.log
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+
3
+ All notable changes to the Simba MCP Server will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
6
+
7
+ ## 0.1.0 — 2026-04-05
8
+
9
+ ### Added
10
+
11
+ - Initial release of the Simba MCP Server.
12
+ - 11 MCP tools: `get_data_schema`, `upload_data`, `list_models`, `create_model`, `get_model_status`, `get_model_results`, `run_optimizer`, `get_optimizer_results`, `get_scenario_template`, `run_scenario`, `get_scenario_results`.
13
+ - Async HTTP client (`SimbaAPIClient`) wrapping Simba API v1.
14
+ - Support for stdio, Streamable HTTP, and SSE transport modes.
15
+ - CLI entrypoint (`simba-mcp`).
16
+ - CI workflow (lint + test on Python 3.11/3.12/3.13).
17
+ - PyPI publish workflow on GitHub Release.
@@ -0,0 +1,11 @@
1
+ # Code of Conduct
2
+
3
+ This project follows the same Code of Conduct as the main Simba platform.
4
+
5
+ Please see the [Simba Code of Conduct](https://github.com/getsimba-ai/simba-mmm/blob/main/CODE_OF_CONDUCT.md) for the full text.
6
+
7
+ In summary: be respectful, be constructive, and be welcoming. Harassment, discrimination, and disruptive behavior will not be tolerated.
8
+
9
+ ## Reporting
10
+
11
+ If you experience or witness unacceptable behavior, please email **conduct@getsimba.ai**.
@@ -0,0 +1,43 @@
1
+ # Contributing to Simba MCP Server
2
+
3
+ Thanks for your interest in contributing! This guide covers the basics for getting set up and submitting changes.
4
+
5
+ For broader contribution guidelines across the Simba project, see the [main repo's contributing guide](https://github.com/getsimba-ai/simba-mmm/blob/main/CONTRIBUTING.md).
6
+
7
+ ## Development Setup
8
+
9
+ ```bash
10
+ # Clone the repo
11
+ git clone https://github.com/getsimba-ai/simba-mcp.git
12
+ cd simba-mcp
13
+
14
+ # Create a virtual environment
15
+ python -m venv .venv
16
+ source .venv/bin/activate # or .venv\Scripts\activate on Windows
17
+
18
+ # Install the package in editable mode with dev dependencies
19
+ pip install -e ".[dev]"
20
+ ```
21
+
22
+ ## Running Tests
23
+
24
+ ```bash
25
+ pytest -v
26
+ ```
27
+
28
+ ## Linting
29
+
30
+ ```bash
31
+ ruff check src/ tests/
32
+ ```
33
+
34
+ ## Submitting Changes
35
+
36
+ 1. Fork the repo and create a feature branch from `main`.
37
+ 2. Make your changes — add tests for new functionality.
38
+ 3. Ensure `pytest -v` and `ruff check src/ tests/` pass locally.
39
+ 4. Open a pull request against `main` with a clear description of the change.
40
+
41
+ ## Code Style
42
+
43
+ This project uses [Ruff](https://docs.astral.sh/ruff/) for linting, configured in `pyproject.toml` (Python 3.11+, 100-char line length). CI enforces this on every PR.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Simba
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,204 @@
1
+ Metadata-Version: 2.4
2
+ Name: simba-mcp
3
+ Version: 0.1.0
4
+ Summary: MCP server for Simba Marketing Mix Modeling — connect AI assistants to your MMM models
5
+ Project-URL: Homepage, https://getsimba.ai
6
+ Project-URL: Repository, https://github.com/getsimba-ai/simba-mcp
7
+ Project-URL: Documentation, https://github.com/getsimba-ai/simba-mmm
8
+ Author-email: Simba <hello@getsimba.ai>
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: bayesian,marketing-mix-model,mcp,mmm,simba
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Topic :: Scientific/Engineering
20
+ Requires-Python: >=3.11
21
+ Requires-Dist: httpx>=0.27
22
+ Requires-Dist: mcp>=1.1.3
23
+ Provides-Extra: dev
24
+ Requires-Dist: anyio>=4.0; extra == 'dev'
25
+ Requires-Dist: pytest-anyio>=0.0.0; extra == 'dev'
26
+ Requires-Dist: pytest>=8.0; extra == 'dev'
27
+ Requires-Dist: ruff>=0.4; extra == 'dev'
28
+ Description-Content-Type: text/markdown
29
+
30
+ # Simba MCP Server
31
+
32
+ [![PyPI](https://img.shields.io/pypi/v/simba-mcp)](https://pypi.org/project/simba-mcp/)
33
+ [![CI](https://github.com/getsimba-ai/simba-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/getsimba-ai/simba-mcp/actions/workflows/ci.yml)
34
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
35
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
36
+
37
+ [Simba](https://getsimba.ai) is a Bayesian Marketing Mix Modeling (MMM) platform. This [MCP server](https://modelcontextprotocol.io/) lets AI assistants interact with your Marketing Mix Models directly — upload data, build models, check results, and run budget optimizations through natural language in Claude, Cursor, or Claude Code.
38
+
39
+ ## See Also
40
+
41
+ - **[getsimba.ai](https://getsimba.ai)** — the main Simba website (features, pricing, demos)
42
+ - **[getsimba-ai/simba-mmm](https://github.com/getsimba-ai/simba-mmm)** — platform repo with full documentation on MMM concepts, data requirements, model configuration, optimization, and scenario planning
43
+
44
+ ## Installation
45
+
46
+ ```bash
47
+ pip install simba-mcp
48
+ ```
49
+
50
+ Or run directly without installing:
51
+
52
+ ```bash
53
+ uvx simba-mcp
54
+ ```
55
+
56
+ ## Quick Start
57
+
58
+ ### Cursor IDE
59
+
60
+ Add to your Cursor MCP settings (`.cursor/mcp.json` in the workspace or global settings):
61
+
62
+ ```json
63
+ {
64
+ "mcpServers": {
65
+ "simba": {
66
+ "command": "uvx",
67
+ "args": ["simba-mcp"],
68
+ "env": {
69
+ "SIMBA_API_URL": "https://app.getsimba.ai",
70
+ "SIMBA_API_KEY": "simba_sk_..."
71
+ }
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ ### Claude Code
78
+
79
+ Add to your Claude Code MCP config:
80
+
81
+ ```json
82
+ {
83
+ "mcpServers": {
84
+ "simba": {
85
+ "command": "uvx",
86
+ "args": ["simba-mcp"],
87
+ "env": {
88
+ "SIMBA_API_URL": "https://app.getsimba.ai",
89
+ "SIMBA_API_KEY": "simba_sk_..."
90
+ }
91
+ }
92
+ }
93
+ }
94
+ ```
95
+
96
+ ### Claude API (MCP Connector)
97
+
98
+ Use the remote Streamable HTTP transport with the Anthropic MCP connector:
99
+
100
+ ```python
101
+ import anthropic
102
+
103
+ client = anthropic.Anthropic()
104
+
105
+ response = client.beta.messages.create(
106
+ model="claude-sonnet-4-6",
107
+ max_tokens=4096,
108
+ messages=[{"role": "user", "content": "List my Simba models"}],
109
+ mcp_servers=[
110
+ {
111
+ "type": "url",
112
+ "url": "https://app.getsimba.ai/mcp",
113
+ "name": "simba",
114
+ "authorization_token": "simba_sk_...",
115
+ }
116
+ ],
117
+ tools=[{"type": "mcp_toolset", "mcp_server_name": "simba"}],
118
+ betas=["mcp-client-2025-11-20"],
119
+ )
120
+ ```
121
+
122
+ ## Available Tools
123
+
124
+ | Tool | Description |
125
+ |------|-------------|
126
+ | `get_data_schema` | Get the canonical CSV schema for MMM input files |
127
+ | `upload_data` | Upload a CSV dataset to Simba |
128
+ | `list_models` | List all models with their status |
129
+ | `create_model` | Configure and start fitting a new MMM model |
130
+ | `get_model_status` | Poll fitting progress for a model |
131
+ | `get_model_results` | Get results (ROI, contributions, response curves, diagnostics, and more) |
132
+ | `run_optimizer` | Run budget optimization on a completed model |
133
+ | `get_optimizer_results` | Get optimizer status and results |
134
+ | `get_scenario_template` | Generate a forward-period template for scenario planning |
135
+ | `run_scenario` | Run a "what-if" scenario prediction |
136
+ | `get_scenario_results` | Get scenario prediction results |
137
+
138
+ ## Example Prompts
139
+
140
+ Try these with any connected AI assistant:
141
+
142
+ **Explore your models:**
143
+ > "List my Simba models and show me the channel ROI summary for the most recent complete model."
144
+
145
+ **Build a model:**
146
+ > "Upload this CSV data to Simba and create a new MMM model with TV, Search, and Social as media channels. Use 'revenue' as the KPI and 'date' as the date column."
147
+
148
+ **Check progress:**
149
+ > "What's the fitting status of model a1b2c3d4?"
150
+
151
+ **Get results:**
152
+ > "Show me the model diagnostics and channel contributions for model a1b2c3d4."
153
+
154
+ **Optimize budget:**
155
+ > "Run a budget optimization on model a1b2c3d4 with $1M total budget over 12 months. Set TV bounds to 5-40% and Search to 10-50%. Use uniform laydown weights."
156
+
157
+ **Response curves:**
158
+ > "Show me the response curves for model a1b2c3d4. At what spend level does TV hit diminishing returns?"
159
+
160
+ **Scenario planning:**
161
+ > "Get a scenario template for model a1b2c3d4 for the next 12 weeks. Then run a scenario where I increase TV by 20% and cut Search by 10%. What happens to revenue?"
162
+
163
+ **Full workflow:**
164
+ > "I have marketing data I want to analyze. First get the schema so I know what format is needed, then upload my data, create a model, and once it's done show me the ROI by channel."
165
+
166
+ ## API Key Setup
167
+
168
+ The MCP server authenticates with the same API keys used by the Simba REST API. Create a key with the required scopes:
169
+
170
+ 1. Go to **Profile > API Keys** in the Simba UI
171
+ 2. Click **Create Key**
172
+ 3. Set scopes: `ingest`, `read:models`, `read:results`, `create:models`, `optimize`, `scenario`
173
+ 4. Copy the key (shown only once)
174
+
175
+ Set the key as the `SIMBA_API_KEY` environment variable in your MCP config.
176
+
177
+ ## Configuration
178
+
179
+ | Environment Variable | Description | Default |
180
+ |---------------------|-------------|---------|
181
+ | `SIMBA_API_URL` | Simba API base URL | `http://localhost:5005` |
182
+ | `SIMBA_API_KEY` | Your Simba API key | (required) |
183
+
184
+ ## Transport Modes
185
+
186
+ The server supports all MCP transport modes:
187
+
188
+ ```bash
189
+ # stdio (default) — for Cursor, Claude Code
190
+ simba-mcp
191
+
192
+ # Streamable HTTP — for remote deployment
193
+ simba-mcp --transport streamable-http --port 8100
194
+
195
+ # SSE — legacy transport
196
+ simba-mcp --transport sse --port 8100
197
+
198
+ # Or via uvicorn directly
199
+ uvicorn "simba_mcp.server:create_app()" --host 0.0.0.0 --port 8100
200
+ ```
201
+
202
+ ## License
203
+
204
+ MIT
@@ -0,0 +1,175 @@
1
+ # Simba MCP Server
2
+
3
+ [![PyPI](https://img.shields.io/pypi/v/simba-mcp)](https://pypi.org/project/simba-mcp/)
4
+ [![CI](https://github.com/getsimba-ai/simba-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/getsimba-ai/simba-mcp/actions/workflows/ci.yml)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
6
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
7
+
8
+ [Simba](https://getsimba.ai) is a Bayesian Marketing Mix Modeling (MMM) platform. This [MCP server](https://modelcontextprotocol.io/) lets AI assistants interact with your Marketing Mix Models directly — upload data, build models, check results, and run budget optimizations through natural language in Claude, Cursor, or Claude Code.
9
+
10
+ ## See Also
11
+
12
+ - **[getsimba.ai](https://getsimba.ai)** — the main Simba website (features, pricing, demos)
13
+ - **[getsimba-ai/simba-mmm](https://github.com/getsimba-ai/simba-mmm)** — platform repo with full documentation on MMM concepts, data requirements, model configuration, optimization, and scenario planning
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ pip install simba-mcp
19
+ ```
20
+
21
+ Or run directly without installing:
22
+
23
+ ```bash
24
+ uvx simba-mcp
25
+ ```
26
+
27
+ ## Quick Start
28
+
29
+ ### Cursor IDE
30
+
31
+ Add to your Cursor MCP settings (`.cursor/mcp.json` in the workspace or global settings):
32
+
33
+ ```json
34
+ {
35
+ "mcpServers": {
36
+ "simba": {
37
+ "command": "uvx",
38
+ "args": ["simba-mcp"],
39
+ "env": {
40
+ "SIMBA_API_URL": "https://app.getsimba.ai",
41
+ "SIMBA_API_KEY": "simba_sk_..."
42
+ }
43
+ }
44
+ }
45
+ }
46
+ ```
47
+
48
+ ### Claude Code
49
+
50
+ Add to your Claude Code MCP config:
51
+
52
+ ```json
53
+ {
54
+ "mcpServers": {
55
+ "simba": {
56
+ "command": "uvx",
57
+ "args": ["simba-mcp"],
58
+ "env": {
59
+ "SIMBA_API_URL": "https://app.getsimba.ai",
60
+ "SIMBA_API_KEY": "simba_sk_..."
61
+ }
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ ### Claude API (MCP Connector)
68
+
69
+ Use the remote Streamable HTTP transport with the Anthropic MCP connector:
70
+
71
+ ```python
72
+ import anthropic
73
+
74
+ client = anthropic.Anthropic()
75
+
76
+ response = client.beta.messages.create(
77
+ model="claude-sonnet-4-6",
78
+ max_tokens=4096,
79
+ messages=[{"role": "user", "content": "List my Simba models"}],
80
+ mcp_servers=[
81
+ {
82
+ "type": "url",
83
+ "url": "https://app.getsimba.ai/mcp",
84
+ "name": "simba",
85
+ "authorization_token": "simba_sk_...",
86
+ }
87
+ ],
88
+ tools=[{"type": "mcp_toolset", "mcp_server_name": "simba"}],
89
+ betas=["mcp-client-2025-11-20"],
90
+ )
91
+ ```
92
+
93
+ ## Available Tools
94
+
95
+ | Tool | Description |
96
+ |------|-------------|
97
+ | `get_data_schema` | Get the canonical CSV schema for MMM input files |
98
+ | `upload_data` | Upload a CSV dataset to Simba |
99
+ | `list_models` | List all models with their status |
100
+ | `create_model` | Configure and start fitting a new MMM model |
101
+ | `get_model_status` | Poll fitting progress for a model |
102
+ | `get_model_results` | Get results (ROI, contributions, response curves, diagnostics, and more) |
103
+ | `run_optimizer` | Run budget optimization on a completed model |
104
+ | `get_optimizer_results` | Get optimizer status and results |
105
+ | `get_scenario_template` | Generate a forward-period template for scenario planning |
106
+ | `run_scenario` | Run a "what-if" scenario prediction |
107
+ | `get_scenario_results` | Get scenario prediction results |
108
+
109
+ ## Example Prompts
110
+
111
+ Try these with any connected AI assistant:
112
+
113
+ **Explore your models:**
114
+ > "List my Simba models and show me the channel ROI summary for the most recent complete model."
115
+
116
+ **Build a model:**
117
+ > "Upload this CSV data to Simba and create a new MMM model with TV, Search, and Social as media channels. Use 'revenue' as the KPI and 'date' as the date column."
118
+
119
+ **Check progress:**
120
+ > "What's the fitting status of model a1b2c3d4?"
121
+
122
+ **Get results:**
123
+ > "Show me the model diagnostics and channel contributions for model a1b2c3d4."
124
+
125
+ **Optimize budget:**
126
+ > "Run a budget optimization on model a1b2c3d4 with $1M total budget over 12 months. Set TV bounds to 5-40% and Search to 10-50%. Use uniform laydown weights."
127
+
128
+ **Response curves:**
129
+ > "Show me the response curves for model a1b2c3d4. At what spend level does TV hit diminishing returns?"
130
+
131
+ **Scenario planning:**
132
+ > "Get a scenario template for model a1b2c3d4 for the next 12 weeks. Then run a scenario where I increase TV by 20% and cut Search by 10%. What happens to revenue?"
133
+
134
+ **Full workflow:**
135
+ > "I have marketing data I want to analyze. First get the schema so I know what format is needed, then upload my data, create a model, and once it's done show me the ROI by channel."
136
+
137
+ ## API Key Setup
138
+
139
+ The MCP server authenticates with the same API keys used by the Simba REST API. Create a key with the required scopes:
140
+
141
+ 1. Go to **Profile > API Keys** in the Simba UI
142
+ 2. Click **Create Key**
143
+ 3. Set scopes: `ingest`, `read:models`, `read:results`, `create:models`, `optimize`, `scenario`
144
+ 4. Copy the key (shown only once)
145
+
146
+ Set the key as the `SIMBA_API_KEY` environment variable in your MCP config.
147
+
148
+ ## Configuration
149
+
150
+ | Environment Variable | Description | Default |
151
+ |---------------------|-------------|---------|
152
+ | `SIMBA_API_URL` | Simba API base URL | `http://localhost:5005` |
153
+ | `SIMBA_API_KEY` | Your Simba API key | (required) |
154
+
155
+ ## Transport Modes
156
+
157
+ The server supports all MCP transport modes:
158
+
159
+ ```bash
160
+ # stdio (default) — for Cursor, Claude Code
161
+ simba-mcp
162
+
163
+ # Streamable HTTP — for remote deployment
164
+ simba-mcp --transport streamable-http --port 8100
165
+
166
+ # SSE — legacy transport
167
+ simba-mcp --transport sse --port 8100
168
+
169
+ # Or via uvicorn directly
170
+ uvicorn "simba_mcp.server:create_app()" --host 0.0.0.0 --port 8100
171
+ ```
172
+
173
+ ## License
174
+
175
+ MIT