ext-apps/examples/scenario-modeler-server
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jonathan Hefner 61cd4ed219 Use content instead of structuredContent in examples
Not all MCP clients support structuredContent in MCP tool results, so
examples now return data as JSON in content and parse it client-side.

Pattern used:
- Server: content: [{ type: "text", text: JSON.stringify(data) }]
- Client: JSON.parse(result.content!.filter(...).map(...).join(""))

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 16:35:20 -06:00
..
src Use content instead of structuredContent in examples 2025-12-05 16:35:20 -06:00
mcp-app.html Add scenario-modeler-server example 2025-12-04 14:33:07 -06:00
package.json Add scenario-modeler-server example 2025-12-04 14:33:07 -06:00
README.md Add scenario-modeler-server example 2025-12-04 14:33:07 -06:00
server.ts Use content instead of structuredContent in examples 2025-12-05 16:35:20 -06:00
tsconfig.json Add scenario-modeler-server example 2025-12-04 14:33:07 -06:00
vite.config.ts Add scenario-modeler-server example 2025-12-04 14:33:07 -06:00

Example: SaaS Scenario Modeler

A React-based demo MCP App that lets users adjust SaaS business parameters and see real-time 12-month projections of revenue, costs, and profitability with comparison against pre-built scenario templates.

Features

  • Interactive Parameters: 5 sliders for Starting MRR, Growth Rate, Churn Rate, Gross Margin, and Fixed Costs
  • 12-Month Projections: Line chart showing MRR, Gross Profit, and Net Profit over time
  • Scenario Templates: 5 pre-built business strategies (Bootstrapped, VC Rocketship, Cash Cow, Turnaround, Efficient Growth)
  • Template Comparison: Overlay dashed lines to compare your scenario against any template
  • Summary Metrics: Key metrics including Ending MRR, Total Revenue, Total Profit, and break-even month
  • Theme Support: Adapts to light/dark mode preferences

Running

  1. Install dependencies:

    npm install
    
  2. Build and start the server:

    npm start
    

    The server will listen on http://localhost:3001/mcp.

  3. View using the basic-host example or another MCP Apps-compatible host.

Architecture

Server (server.ts)

Exposes a single get-scenario-data tool that returns:

  • 5 pre-built scenario templates with parameters, projections, and summaries
  • Default input values for the sliders
  • Optionally computes custom projections when customInputs are provided

The tool is linked to a UI resource via _meta[RESOURCE_URI_META_KEY].

App (src/)

  • Built with React for reactive slider updates and derived state management
  • Uses Chart.js for the line chart visualization
  • All projection calculations run client-side for instant slider feedback
  • Components: SliderRow, MetricCard, ProjectionChart
  • Template comparison shown as dashed overlay lines on the chart