meryn MCP
Connect Claude to your meryn account: read your MMM results and launch runs without leaving the conversation.
The server runs on your machine, talks to the meryn API over HTTPS, and holds nothing — your key lives in your own config.
Install
claude mcp add meryn -e MERYN_API_KEY=mk_… -- uvx meryn-mcp
Or, in any MCP client's config file:
{
"mcpServers": {
"meryn": {
"command": "uvx",
"args": ["meryn-mcp"],
"env": {
"MERYN_API_KEY": "mk_...",
"MERYN_BASE_URL": "https://meryn.ai"
}
}
}
}
MERYN_BASE_URL is optional; it defaults to https://meryn.ai.
The key is the one you create in your team's settings → API keys
(how). It is shown once, so copy it then. Give it
read unless you want the assistant to be able to launch runs.
⚠️ API access is part of the plan. Professional and Enterprise include it; Free does
not. Without it the first tool call returns
403: This team plan does not include API access.
What it can do
| Read | projects, datasets, mappings and periods; models with their metrics and readiness verdict; the progress, logs and run history; every chart dataset and the finer-grained result tables; EDA runs; the budget allocator's split by channel and by market, and its efficiency |
| Launch | create a model on an existing period, run it, cancel it; create and run a budget optimisation |
What it deliberately doesn't do: upload and map a CSV. That step stays in the web app, where a person confirms how the file was interpreted — which column is the date, what each column means, what got normalised.
Three things worth knowing
The knobs aren't written into the server. list_engine_params fetches them live from
the API, with each one's type, default, bounds and help text. They're the same rows that
draw the modals in the app, so they can't go stale — and it's the first place to look
before building a config.
Anything that costs compute asks first. run_model and run_allocator start
containers: tens of minutes of compute and one of your plan's concurrent-run slots. The
server refuses them without an explicit confirm, so an assistant can't fire one in
passing. That's a guard in the code, not a hint in the description.
Retries don't duplicate runs. Every POST carries an Idempotency-Key derived from the
operation and its arguments, so if the assistant retries because it didn't see the
response, the API returns what it already created instead of launching a second run.
How to read the numbers
The API returns raw values with a units map beside them, and that is on purpose: an
assistant doing arithmetic on "12.3%" gets it wrong two steps later, in a budget
recommendation. Four rules that matter:
fractionis 0–1 andpercentis 0–100 — both appear in the same response, so read the unit instead of guessing from the field name;- a
nullmeans not measured, never zero — an organic channel's ROI isnullbecause it has no spend, and averaging it as zero drags the average down; - anything listed in
not_applicabledoes not exist for that engine (Robyn does no MCMC, so it has no r-hat). That is not missing data; - on the readiness verdict,
pendingandnot_evaluatedare not green: the first means it hasn't been computed yet, the second that it ran and could not measure anything.
⚠️ And on charts, watch national_only. When it is set, the rows are national, not
the market you asked for — either because that chart cannot be cut by market (Meridian
estimates one decay per channel, shared across markets) or because the model was trained
before we started saving it per market. Reporting them as that market's is the mistake the
field exists to prevent.
Not hosted anywhere
There is no remote MCP endpoint to point at, and that is deliberate for now: stdio on your own machine means the key never leaves it and there is no third party in the path. A hosted version with OAuth is something we will build when someone needs it.
Links
- Using the API — authentication, pagination, retries, and the same four rules in more detail
- API reference — generated from the API itself
Para el repo
| Archivo | Qué es |
|---|---|
meryn_mcp/__init__.py |
el cliente HTTP y el catálogo de tools. Sin dependencias, y es lo que prueba la suite (apps/api/tests/test_mcp.py) |
meryn_mcp/servidor.py |
el cableado del SDK de MCP. Lo mínimo que no se puede probar sin el paquete mcp |
⚠️ Es un paquete y no dos módulos sueltos, y el motivo aparece recién al publicar: el
wheel dejaba un top-level llamado servidor en el site-packages de cualquiera que lo
instalara. Adentro del repo daba igual; distribuido, no.
Publicar: uv build && uv publish desde clients/mcp/. ⚠️ Subir la versión en
pyproject.toml antes — PyPI no deja re-subir una versión ya publicada.
Metadata
Release files for meryn-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| meryn_mcp-0.1.0.tar.gz | 16.9 kB | Without provenance | Details for meryn_mcp-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| meryn_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for meryn_mcp-0.1.0-py3-none-any.whl |
Total release size: 33.2 kB
Release files / meryn_mcp-0.1.0.tar.gz
| Download URL | meryn_mcp-0.1.0.tar.gz |
|---|---|
| Size | 16.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dc439dab24596d1c3e433713e186ef682b9fc2988d158c502e294cede74ae238
|
|
BLAKE2b-256 checksum How to use checksums |
327facb2ce4d05aa9728642438cc72ec52af490d1f8f028f5b4e62da11de1a0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.8
|
Release files / meryn_mcp-0.1.0-py3-none-any.whl
| Download URL | meryn_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
813d580db6342e65ea48c0a33f02fa52fa5142e30908f179005c03a2d6158b46
|
|
BLAKE2b-256 checksum How to use checksums |
de1b6f088bc5edb8ba4e504f987fe40ff46b9a35be070434fc9ba11445c2cbb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.7.8
|
Security for meryn-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.