Skip to main content
Glama
Inform-Growth

Inform Growth Demo MCP

Official

Inform Growth — Beacon Software demo MCP

A standalone MCP server that demonstrates Inform Growth's Camber Core platform using a fictional B2B SaaS company (Beacon Software, ~$15M ARR, ~80 employees). All data is synthetic; all tool shapes are real.

What it does

Connect any MCP-capable AI client. The server exposes ~20 tools across five categories — crm_*, marketing_*, billing_*, support_*, ops_* — plus three orchestration tools for a guided 5-step walkthrough.

A prospect plays the CEO of Beacon Software, runs a few prompts against their agent, and experiences the cross-system rollups, anomaly detection, and workflow capture they'd get from a real Camber Core deployment.

Related MCP server: GrowthOS

Connect from an AI client

After the server is live (e.g. on Railway), point your client at the URL.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "inform-demo": {
      "url": "https://<your-railway-host>/mcp"
    }
  }
}

Claude Code (CLI)

claude mcp add inform-demo --transport http https://<your-railway-host>/mcp

One-line bootstrap prompt

Connect to the Inform Growth demo MCP at <URL>. Read the welcome://demo resource, then call start_demo() and walk me through the 5 steps as the CEO of Beacon Software.

Run locally

pip install ".[dev]"

# stdio (Claude Code / Inspector)
python server.py

# HTTP
MCP_TRANSPORT=streamable-http python server.py
# server on http://localhost:8000/mcp

Regenerate synthetic data

python scripts/generate_beacon.py
# writes data/beacon.json (deterministic — seed=42)

Seeded patterns the walkthrough depends on:

  • Companies 7, 23, 41 → expansion-risk (high MRR growth + tickets + low CSAT)

  • Deals 102, 118 → stalling (no activity 60+ days)

  • Campaign 14 → surprising attribution win

  • Project 23 → at-risk, blocking revenue recognition

Internal analytics

Every meaningful event emits a JSON line to stdout. Railway aggregates these in the service log view. To get a funnel out of them:

railway logs --service demo-mcp \
  | grep '"event":' \
  | jq -s 'group_by(.event) | map({event: .[0].event, count: length})'

Event types:

event

when

server_started

server boot

session_started

a prospect calls start_demo

step_reached

next_step advances the walkthrough (step in payload)

workflow_saved

a prospect calls save_workflow

session_ended

walkthrough completes (step 5)

Deploy to Railway

  1. Create a new Railway service pointed at this repo (Inform-Growth/inform-demo-mcp, main branch)

  2. Railway auto-detects the Dockerfile at the repo root. No further config needed.

  3. Optional env overrides:

    • MCP_TRANSPORT (default streamable-http)

    • MCP_SERVER_NAME (default inform-demo-mcp)

    • PORT (Railway injects this; the server binds to it automatically)

    • ALLOWED_HOSTS — comma-separated hostnames that pass DNS-rebinding protection. Supports host:* for any port. Default: unset, which disables the check (appropriate for a public demo). Set to the Railway hostname (e.g. inform-demo-mcp.up.railway.app) to lock it down.

  4. Public networking — toggle on in Railway so prospects can connect

After deploy, the URL is https://<service>.up.railway.app/mcp.

File tree

.
├── README.md                 # this file
├── Dockerfile                # Railway image
├── pyproject.toml            # mcp[cli] + uvicorn; faker only in dev
├── server.py                 # FastMCP entry point
├── beacon/
│   ├── __init__.py
│   ├── data.py               # beacon.json loader + helpers
│   ├── crm.py                # 5 tools (deals, companies, contacts, activities)
│   ├── marketing.py          # 3 tools (campaigns, attribution)
│   ├── billing.py            # 3 tools (subscriptions, MRR metrics)
│   ├── support.py            # 3 tools (tickets, support metrics)
│   ├── ops.py                # 3 tools (projects, at-risk rollup)
│   └── orchestration.py      # start_demo, next_step, save_workflow + welcome text
├── analytics/
│   ├── __init__.py
│   └── events.py             # log_event — JSON line to stdout
├── scripts/
│   └── generate_beacon.py    # faker(seed=42) generator
└── data/
    └── beacon.json           # ~720KB committed synthetic data

Design notes

  • No auth, no init gate — public by design. Locked in inform-notes/notes/track-a2-v0-scope.md D5.

  • Per-connection session statestart_demo returns a session_id; client passes it to next_step / save_workflow. State is in-memory and lost on reconnect (D6).

  • save_workflow persists only for the duration of the connection. Honest about the demo nature (D4).

  • 20 tools, 5 categories — generic prefixes so prospects don't anchor on "we use a different tool" (D1).

  • Deterministic dataFaker.seed(42) plus surgical pattern injection. Anyone who regenerates gets identical output (D2).

  • Hosting — Railway, deployed from this repo's main branch. D7's Calendly placeholder lives in beacon/orchestration.py.

For the full design rationale see Inform-Growth/inform-notes/notes/track-a2-v0-scope.md.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes a fictional B2B CRM database (companies, contacts, deals) as callable MCP tools, enabling AI agents to answer natural-language questions about company records, contacts, and pipeline data.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to answer growth questions in plain English by connecting to marketing and product data via 49 MCP tools.
    25
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects and cleans data from business systems like CRM, billing, and support, then exposes a read-only MCP tool for an AI assistant to generate revenue-risk reports.
    8 npm
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Hosted MCP server connecting Shopify, Klaviyo, GA4, Meta Ads, Google Ads, Xero, Gorgias and 20+ e-commerce data sources so AI assistants can answer merchant questions that span every source at once.
    -