ext-apps/examples/cohort-heatmap-server
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Olivier Chafik ae9b96e1fd
chore: bump to 1.0.1 - fix npm reference for ext-apps dependency in examples + update zod to 4.x (#368)
* fix(examples): use npm reference for ext-apps dependency

Replace local path '../..' with '^1.0.0' npm reference in all example
packages. The local path was accidentally published to npm, causing
npm install to hang when installing server-* packages.

Bump versions to 1.0.1 for all public packages to fix the published
versions.

Fixes npm install hanging issue in dependent projects like
example-remote-server.

Note: npm workspaces automatically resolves the dependency to the
local package during development, so no overrides are needed.

* fix: update zod to 4.x in transcript-server and fix update-lock:docker script

- Update transcript-server to use zod ^4.1.13 for compatibility
- Fix update-lock:docker script to properly clean workspace node_modules
- Regenerate package-lock.json with clean npmjs.org URLs
2026-01-26 21:55:15 +00:00
..
src feat: use structuredContent with outputSchema in example servers (#220) 2026-01-12 14:25:16 +00:00
.gitignore Improve consistency and organization of examples for AI learning 2026-01-13 20:48:02 -06:00
grid-cell.png feat(basic-host): URL params, fullscreen mode, unified layout (#266) 2026-01-14 22:09:41 +00:00
main.ts Refactor server startup functions 2026-01-24 09:27:54 -06:00
mcp-app.html Add color-scheme meta tag to all example apps 2025-12-15 11:42:18 -08:00
package.json chore: bump to 1.0.1 - fix npm reference for ext-apps dependency in examples + update zod to 4.x (#368) 2026-01-26 21:55:15 +00:00
README.md chore: stable spec release 2026-01-26 and SDK v1.0.0 (#362) 2026-01-26 17:31:33 +00:00
screenshot.png feat(basic-host): URL params, fullscreen mode, unified layout (#266) 2026-01-14 22:09:41 +00:00
server.ts fix(examples): resolve DIST_DIR path for npm package execution (#277) 2026-01-15 12:23:13 +00:00
tsconfig.json Add cohort-heatmap-server example 2025-12-04 14:32:53 -06:00
tsconfig.server.json feat: compile example servers to JavaScript for npm consumption (#259) 2026-01-14 23:46:17 +00:00
vite.config.ts Add cohort-heatmap-server example 2025-12-04 14:32:53 -06:00

Example: Cohort Heatmap App

A demo MCP App that displays cohort retention data as an interactive heatmap, showing customer retention over time by signup month.

Initial view Hover state Low retention hover

MCP Client Configuration

Add to your MCP client configuration (stdio transport):

{
  "mcpServers": {
    "cohort-heatmap": {
      "command": "npx",
      "args": [
        "-y",
        "--silent",
        "--registry=https://registry.npmjs.org/",
        "@modelcontextprotocol/server-cohort-heatmap",
        "--stdio"
      ]
    }
  }
}

Local Development

To test local modifications, use this configuration (replace ~/code/ext-apps with your clone path):

{
  "mcpServers": {
    "cohort-heatmap": {
      "command": "bash",
      "args": [
        "-c",
        "cd ~/code/ext-apps/examples/cohort-heatmap-server && npm run build >&2 && node dist/index.js --stdio"
      ]
    }
  }
}

Features

  • Cohort Retention Heatmap: Color-coded grid showing retention percentages across cohorts and time periods
  • Multiple Metrics: Switch between Retention %, Revenue Retention, and Active Users
  • Period Types: View data by monthly or weekly intervals
  • Interactive Exploration: Hover cells for detailed tooltips, click to highlight rows/columns
  • Color Scale: Green (high retention) through yellow to red (low retention)
  • Theme Support: Adapts to light/dark mode preferences

Running

  1. Install dependencies:

    npm install
    
  2. Build and start the server:

    npm run start:http  # for Streamable HTTP transport
    # OR
    npm run start:stdio  # for stdio transport
    
  3. View using the basic-host example or another MCP Apps-compatible host.

Architecture

Server (server.ts)

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

  • Cohort rows with signup month, original user count, and retention cells
  • Period headers and labels
  • Configurable parameters: metric type, period type, cohort count, max periods

The tool generates synthetic cohort data using an exponential decay model with configurable retention curves per metric type.

App (src/mcp-app.tsx)

  • Uses React for the heatmap visualization
  • Fetches data on mount and when filters change
  • Displays retention percentages in a grid with HSL color interpolation
  • Shows detailed tooltips on hover with user counts and exact retention values
  • Supports row/column highlighting on cell click