Metadata-Version: 2.4
Name: steamforecast-mcp
Version: 0.1.0
Summary: Model Context Protocol server for Steam Launch Forecaster — calibrated revenue cones for indie Steam game launches, exposed as MCP tools to Claude / AI agents.
Project-URL: Homepage, https://steamforecast.app
Project-URL: Documentation, https://steamforecast.app/methodology
Project-URL: Repository, https://github.com/GC108/steamforecast-mcp
Project-URL: Calibration Report, https://steamforecast.app/reports/calibration-gap-q2-2026
Author-email: "Greg C." <greg@steamforecast.app>
License-Expression: MIT
License-File: LICENSE
Keywords: boxleiter,claude,forecasting,gamedev,indie,mcp,model-context-protocol,revenue,steam
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Games/Entertainment
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27.0
Requires-Dist: mcp>=1.0.0
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: respx>=0.21; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Description-Content-Type: text/markdown

# steamforecast-mcp

[![CI](https://github.com/GC108/steamforecast-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/GC108/steamforecast-mcp/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/steamforecast-mcp.svg)](https://pypi.org/project/steamforecast-mcp/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Model Context Protocol server for [Steam Launch Forecaster][slf]. Exposes
calibrated revenue cones (P10–P90, empirically validated 80% coverage per
genre) to Claude, ChatGPT, and any MCP-aware AI agent as tool calls.

[slf]: https://steamforecast.app

## What it does

Five tools, all backed by the public steamforecast.app API:

| Tool | What it does |
|---|---|
| `get_forecast(appid)` | Calibrated P10/P50/P90 revenue cone for a Steam game by appid |
| `get_comps(appid, k)` | Top-K nearest-neighbor comparable games (cosine sim over BGE embeddings) |
| `boxleiter_estimate(review_count, price_cents)` | Pure-compute Boxleiter rule-of-thumb sanity check |
| `get_calibration_summary()` | Latest published live coverage table (per-stratum) |
| `get_methodology()` | Pulls llms.txt — high-quality URL inventory for ingestion |

`get_forecast` and `get_comps` make HTTPS calls to steamforecast.app. The
other three are pure compute / static reference, so they work offline once
the package is installed.

## Install

```bash
pip install steamforecast-mcp
```

## Configure your MCP client

### Claude Desktop / Claude Code

Add to your MCP config (typically `~/.claude.json` or
`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "steamforecast": {
      "command": "steamforecast-mcp"
    }
  }
}
```

Or via the Claude Code CLI:

```bash
claude mcp add steamforecast -- steamforecast-mcp
```

### Other MCP clients (Cursor, Cline, etc.)

Use the standard stdio MCP config; the executable is `steamforecast-mcp`
and takes no arguments.

## Quick usage

Once configured, ask your AI agent things like:

> *"Pull a calibrated revenue forecast for Hades on Steam (appid 1145360)
> and compare it to the Boxleiter rule of thumb. Are they consistent?"*

The agent will call `get_forecast(1145360)`, then call
`boxleiter_estimate(review_count, price_cents)` with values from the
forecast result, then surface the divergence to you.

> *"What's the live calibration coverage on the strategy_sim stratum?"*

The agent calls `get_calibration_summary()` and reads the `per_stratum`
table.

## Why a separate server when the website exists?

Because LLMs and AI agents shouldn't have to scrape HTML to use a
calibrated forecast. The MCP surface is structured (typed JSON), versioned,
and rate-limit-aware, which is the right contract for tool-using models.

It also lets you build automations without manually copying numbers from
the website into spreadsheets — e.g., a nightly Claude Code routine that
pulls a forecast for every appid in a publisher's portfolio and writes a
report.

## Configuration

| Env var | Purpose | Default |
|---|---|---|
| `STEAMFORECAST_BASE_URL` | Override the API base URL (useful for local dev / staging) | `https://steamforecast.app` |

## Development

```bash
git clone https://github.com/GC108/steamforecast-mcp
cd steamforecast-mcp
pip install -e ".[dev]"
pytest
ruff check .
```

## License

MIT — see [LICENSE](LICENSE).

## Related

- **[steamforecast.app][slf]** — calibrated revenue cones with empirically-validated 80% coverage per genre.
- **[The Calibration Gap (Q2 2026 report)](https://steamforecast.app/reports/calibration-gap-q2-2026)** — methodology + live coverage evidence.
- **[steam-page-stats](https://github.com/GC108/steam-page-stats)** — companion OSS Python client for Steam Storefront + Boxleiter rule-of-thumb (no MCP, just a library + CLI).
- **[Model Context Protocol](https://modelcontextprotocol.io)** — the open standard this server implements.
