Skip to main content
Glama
RunRiotComeOn

ConsumerSim MCP Proxy

README.md
# ConsumerSim Forecast Interface

ConsumerSim provides consumer confidence forecasts for three markets:

- `US`
- `EU27`
- `JP`

Users can access the forecasts in two ways:

- View the public forecast website hosted from this repository.
- Connect to the MCP server and ask for forecasts by region, month, and optional week.

This repository is an interface package only. It does not publish the private
forecasting pipeline, model prompts, data refresh logic, source API keys, or
private datasets.

## What You Can Ask For

Use `forecast_lookup` when you need a forecast value.

Monthly forecast:

```json
{
  "region": "US",
  "month": "2026-07"
}
```

Weekly forecast:

```json
{
  "region": "EU27",
  "month": "2026-07",
  "week": 1
}
```

Supported inputs:

- `region`: `US`, `EU27`, or `JP`
- `month`: target month in `YYYY-MM` format
- `week`: optional week number within that month, such as `1`, `2`, `3`, or `4`

Use `forecast_times` to see which forecast periods are available.

```json
{
  "region": "JP"
}
```

## Typical Response

`forecast_lookup` returns a forecast snapshot like this:

```json
{
  "region": "EU27",
  "cadence": "weekly",
  "requested_month": "2026-06",
  "requested_week": "Jun W4",
  "target_month": "2026-07",
  "target_period": "Jul-26",
  "week_label": "Jun W4",
  "as_of": "2026-07-04",
  "forecast": -13.32,
  "interval_low": -14.71,
  "interval_high": -12.39,
  "signal": "Softening signal",
  "interpretation": "Weekly nowcast through 2026-06-27 from the ConsumerSim pipeline."
}
```

The exact fields may vary by backend version, but the response is designed to
include the requested region and time, the forecast value, a confidence band,
and a short interpretation.

## Run As An MCP Server

Install the package:

```powershell
python -m pip install -e .
```

Configure the private backend endpoint:

```powershell
$env:CONSUMERSIM_API_BASE_URL = "https://your-consumersim-backend.example.com"
$env:CONSUMERSIM_API_KEY = "<your access token>"
```

Start the MCP server:

```powershell
consumersim-mcp
```

The MCP server exposes:

- `forecast_lookup`
- `forecast_times`

It forwards requests to the configured ConsumerSim backend and returns the
backend result to the MCP client.

## Run The Website Locally

The website is a static forecast dashboard under `site/`.

For a local preview backed by the private API:

```powershell
python -m pip install -e .
$env:CONSUMERSIM_API_BASE_URL = "https://your-consumersim-backend.example.com"
$env:CONSUMERSIM_API_KEY = "<your access token>"
consumersim-web
```

Open:

```text
http://127.0.0.1:4173
```

The local web bridge serves the static site and proxies `/api/site-data` to the
private backend. This keeps backend credentials out of browser JavaScript.

## Public Website Deployment

The recommended public deployment is GitHub Pages.

The included workflow:

```text
.github/workflows/refresh-site.yml
```

does the following:

1. Optionally writes `site/site-config.js` from `CONSUMERSIM_SITE_DATA_URL`.
2. Runs the public interface tests.
3. Deploys the `site/` directory to GitHub Pages.

The repository does not commit `site/data/consumersim_site_data.csv`. The
website reads site data at runtime from `window.CONSUMERSIM_SITE_DATA_URL` or
from `/api/site-data` when served by the local web bridge.

The browser checks the runtime site-data endpoint every 60 seconds and refreshes
the rendered values when the CSV response changes. Set
`window.CONSUMERSIM_SITE_DATA_REFRESH_MS` in `site/site-config.js` to override
that interval, or set it to `0` to disable polling.

Repository setup:

- Set Pages source to `GitHub Actions`.
- Add `CONSUMERSIM_SITE_DATA_URL` as a repository variable when deploying to
  GitHub Pages.

Do not put source data API keys or model API keys in GitHub. Those belong only
on the private backend server.

## Backend Settings

Required:

- `CONSUMERSIM_API_BASE_URL`

Usually required:

- `CONSUMERSIM_API_KEY`

Optional:

- `CONSUMERSIM_FORECAST_PATH`, default `/forecast`
- `CONSUMERSIM_TIMES_PATH`, default `/forecast/times`
- `CONSUMERSIM_SITE_DATA_PATH`, default `/site-data`
- `CONSUMERSIM_API_KEY_HEADER`, default `Authorization`
- `CONSUMERSIM_API_KEY_SCHEME`, default `Bearer`
- `CONSUMERSIM_TIMEOUT_SECONDS`, default `30`

## Backend Contract

The proxy calls these backend routes:

- `POST {CONSUMERSIM_API_BASE_URL}/forecast`
- `GET {CONSUMERSIM_API_BASE_URL}/forecast/times`
- `GET {CONSUMERSIM_API_BASE_URL}/site-data`

Expected `POST /forecast` request:

```json
{
  "region": "EU27",
  "month": "2026-06",
  "week": 4
}
```

Expected `GET /site-data` response:

```text
as_of,record_type,region,...
2026-07-04,monthly_prediction,us,...
```

## Repository Boundary

This public repository should contain only:

- MCP proxy code
- public website assets
- GitHub Pages deployment workflow
- tests for the public interface
- examples and documentation for users

Do not commit:

- generated site CSV files
- private forecasting pipeline code
- model prompts or internal simulation logic
- private data refresh scripts
- source API keys
- LLM API keys
- private datasets

The private backend can update forecasts without exposing the internal
ConsumerSim implementation.

TDQS

D1.4/5.0

Scored across 2 tools

Disambiguation1/5

Both tools start with 'forecast_' and have no descriptions, making it impossible to distinguish their purposes. They likely overlap in functionality.

Naming Consistency5/5

Both tools use consistent snake_case naming with the 'forecast_' prefix, following a clear pattern.

Tool Count2/5

Only 2 tools for a server named 'ConsumerSim MCP Proxy' suggests an extremely narrow scope, likely insufficient for typical simulation tasks.

Completeness1/5

The server name implies simulation capabilities, but only forecast tools are present. Critical operations like simulation control or data retrieval are missing, making the surface severely incomplete.

Maintenance

ActivityStale
ResponsivenessNo issues