MarketCheck MCP Apps
25 interactive automotive market intelligence dashboards — usable as MCP UI Apps inside AI assistants, as a standalone web showcase, or as embeddable iframe widgets in your own portal.
Powered by MarketCheck real-time automotive data — VIN decoding, ML price predictions, active/sold inventory, and aggregated market analytics.
4 Ways to Use
| Mode | Description | Auth Required |
|---|---|---|
| Demo | Browse all 25 apps with realistic sample data | None |
| Live Data | Connect your MarketCheck API key for real market data | API Key |
| Embed | Embed apps in your website/portal via iframe | OAuth Access Token (secure, 6hr TTL) |
| MCP / AI | Use inside Claude, VS Code Copilot, Goose, and other MCP hosts | API Key (server env) |
Don't have an API key? Sign up free at developers.marketcheck.com
Quick Start
# Install dependencies
npm install
# Build everything (gallery + 25 apps + server)
npm run build
# Start the server
npm run serve
Then open:
- Gallery: http://localhost:3001/ — browse all 25 apps, enter API key
- MCP endpoint: http://localhost:3001/mcp — for AI assistant connectors
- Any app directly: http://localhost:3001/apps/{app-name}/dist/index.html
Demo Mode (no server needed)
Open any built HTML file directly in your browser — all apps have mock data:
open packages/apps/used-car-market-index/dist/index.html
open packages/apps/deal-evaluator/dist/index.html
open packages/apps/trade-in-estimator/dist/index.html
Test with MCP test host
# Terminal 1: Start server
npm run serve
# Terminal 2: Run the official MCP test host
git clone https://github.com/modelcontextprotocol/ext-apps.git /tmp/ext-apps
cd /tmp/ext-apps/examples/basic-host
npm install
SERVERS='["http://localhost:3001/mcp"]' npm start
# → Open http://localhost:8080, pick a tool, call it, see the app render
Test with Claude
# Terminal 1: Start server
npm run serve
# Terminal 2: Tunnel to internet
npx cloudflared tunnel --url http://localhost:3001
Copy the tunnel URL, then in Claude:
- Go to Settings → Connectors → Add Custom Connector
- Paste the URL with
/mcpsuffix (e.g.,https://random-name.trycloudflare.com/mcp) - Start a new chat and ask Claude to use any tool
Custom connectors require a paid Claude plan (Pro, Max, or Team).
All 25 Apps
Consumer Apps
| # | App | Tool Name | Description |
|---|---|---|---|
| 25 | Used Car Market Index | get-market-index |
Stock-ticker-style dashboard for the used car market. Track prices like Wall Street tracks stocks. |
| 7 | Trade-In Estimator | estimate-trade-in |
Instant 3-tier trade-in value (private party / dealer / cash offer) with sold comp evidence. |
| 5 | Deal Evaluator | evaluate-deal |
Enter a VIN, get a Buy/Negotiate/Pass verdict with gauge, negotiation toolkit, and alternatives. |
| 6 | Car Search & Compare | search-cars, compare-cars |
Visual car shopping with filters, photo cards, badges, and side-by-side comparison. |
| 24 | OEM Incentives Explorer | oem-incentives-explorer |
Search cash-back, APR, and lease deals by ZIP. Compare across brands. Savings calculator. |
Appraiser Apps
| # | App | Tool Name | Description |
|---|---|---|---|
| 1 | Appraiser Workbench | appraiser-workbench |
Multi-panel valuation studio — retail/wholesale predictions, active/sold comps, price history timeline. |
| 2 | Comparables Explorer | comparables-explorer |
Price distribution histogram + price-vs-mileage scatter plot with percentile positioning. |
| 3 | Depreciation Analyzer | depreciation-analyzer |
Multi-model depreciation curves, segment comparison, geographic variance, brand residual rankings. |
| 4 | Market Trends Dashboard | market-trends-dashboard |
Macro market view — movers, segment donut, brand residuals, state rankings, markup tracker. |
Dealer Apps
| # | App | Tool Name | Description |
|---|---|---|---|
| 8 | Lot Pricing Dashboard | scan-lot-pricing |
Full lot inventory with market price gaps, aging heatmap, floor plan burn, and stocking hot list. |
| 9 | Stocking Intelligence | stocking-intelligence |
Demand heatmap, buy/avoid lists, and VIN checker for auction run-list evaluation. |
Dealership Group Apps
| # | App | Tool Name | Description |
|---|---|---|---|
| 10 | Group Operations Center | group-operations-center |
Multi-location health cards, alert feed, cross-store transfer recommendations. |
| 11 | Location Benchmarking | location-benchmarking |
Rooftop-vs-rooftop comparison across 4 KPIs with Canvas bar charts. |
| 12 | Inventory Balancer | inventory-balancer |
Supply/demand matrix with specific vehicle transfer recommendations. |
Analyst Apps
| # | App | Tool Name | Description |
|---|---|---|---|
| 13 | Earnings Signal Dashboard | earnings-signal-dashboard |
Pre-earnings 6-dimension channel check with bull/bear scenarios for auto tickers. |
| 14 | Watchlist Monitor | watchlist-monitor |
Morning signal scan across tracked tickers with sparklines and priority alerts. |
| 15 | Dealer Group Scorecard | dealer-group-scorecard |
Benchmark 8 public dealer groups with radar charts and peer matrix. |
Lender Apps
| # | App | Tool Name | Description |
|---|---|---|---|
| 16 | Portfolio Risk Monitor | portfolio-risk-monitor |
LTV distribution histogram, underwater loan alerts, segment exposure donut, depreciation heatmap. |
| 17 | EV Collateral Risk Monitor | ev-collateral-risk |
EV vs ICE depreciation gap curves, brand risk table, state adoption heatmap, advance rate recs. |
Insurer App
| # | App | Tool Name | Description |
|---|---|---|---|
| 18 | Claims Valuation Workbench | claims-valuation |
Total-loss determination with settlement range, comparable evidence, and replacement options. |
Manufacturer Apps
| # | App | Tool Name | Description |
|---|---|---|---|
| 19 | Brand Command Center | brand-command-center |
Market share bars, pricing power scatter, model drill-down, regional heatmap, conquest analysis. |
| 20 | Regional Demand Allocator | regional-demand-allocator |
State-level D/S ratios, segment mix comparison, allocation shift recommendations. |
Auction House App
| # | App | Tool Name | Description |
|---|---|---|---|
| 21 | Auction Lane Planner | auction-lane-planner |
Lane planning grid, consignment pipeline, buyer targeting, run-list VIN pricer. |
Lender Sales App
| # | App | Tool Name | Description |
|---|---|---|---|
| 22 | Territory Pipeline | territory-pipeline |
Territory state map, dealer prospect ranking, profile cards with call prep, pipeline funnel. |
Cross-Segment App
| # | App | Tool Name | Description |
|---|---|---|---|
| 23 | EV Market Monitor | ev-market-monitor |
EV adoption trends, price parity tracker, brand leaderboard, state penetration, depreciation comparison. |
App Details
App 25: Used Car Market Index
"The stock ticker for cars."
Track used car prices like Wall Street tracks stocks. Composite market index, segment indices (SUV, Sedan, Truck, EV, Luxury), and individual Make:Model tickers with candlestick-style charts.
- Canvas line/area chart with volume bars, crosshair hover, multi-ticker overlay (up to 4)
- Sector heatmap — body type × price tier grid colored by price change %
- Top Gainers / Losers / Most Active tables
- Geographic comparison — state-level pricing for any ticker
- Watchlist strip with mini sparklines
- Toggle: Absolute $ ↔ Indexed (base=100), US ↔ UK
App 7: Trade-In Estimator
"What's my car worth?"
Enter VIN + mileage + ZIP + condition → get three value tiers:
- Private Party Value — selling direct
- Trade-In Value — franchise dealer offer
- Instant Cash Range — independent dealer offers
Each with horizontal range bars. Condition cards (Excellent/Good/Fair/Poor) recalculate instantly without API calls. Expandable "How We Got This Number" with sold comp evidence.
App 5: Deal Evaluator
"Should I buy this car?"
Enter a VIN → get a color-coded verdict (Great Deal / Fair / Above Market / Overpriced) with a Canvas semicircular gauge showing market position. Three-column layout: This Car specs, Market Context stats, Negotiation Toolkit with suggested offer and leverage points. Scrollable alternative cars row.
App 6: Car Search & Compare
Visual car shopping with filter chips (body type, fuel, make, year, price, mileage), photo card grid with deal badges, and side-by-side comparison of up to 3 cars with auto-highlighted winner.
App 1: Appraiser Workbench
Three-panel valuation studio:
- Left: Retail + wholesale predictions with range bars and % of MSRP
- Center: Tabbed Active Comps / Sold Comps (color-coded tables) / History (Canvas stepped line chart)
- Right: Full vehicle spec card from VIN decode
App 8: Lot Pricing Dashboard
Weekly dealer workflow. Full inventory with market price gaps (DROP/HOLD/RAISE badges), aging heatmap (DOM buckets), floor plan burn calculator, and stocking hot list with D/S ratios.
App 13: Earnings Signal Dashboard
Pre-earnings channel check for auto tickers (F, GM, TM, TSLA, etc.). 6-dimension signal matrix (Volume, Pricing, Inventory, DOM, EV, Mix) with Canvas sparklines and individual BULL/BEAR badges. Composite signal + bull/bear scenario panel.
App 18: Claims Valuation Workbench
Insurance total-loss determination. Enter VIN + damage severity + condition → get verdict banner (NOT TOTAL LOSS / LIKELY / TOTAL LOSS), settlement range bar (25th–75th percentile), comparable evidence table, regional variance, and replacement vehicle options.
Architecture
marketcheck-mcp-apps/
├── package.json # Monorepo root (npm workspaces)
├── tsconfig.base.json # Shared TypeScript config
├── scripts/build-apps.mjs # Builds all 25 app UIs
├── packages/
│ ├── shared/ # Shared utilities
│ │ └── src/
│ │ ├── types.ts # Common TypeScript types
│ │ ├── formatters.ts # Currency, percent, signal classifiers
│ │ ├── index-calculator.ts # Index computation, depreciation, D/S ratio
│ │ ├── marketcheck-client.ts # Typed MarketCheck API wrapper
│ │ └── app-template.ts # Shared UI components (KPI cards, tables, badges)
│ ├── server/ # MCP server (all 25 tools)
│ │ └── src/
│ │ ├── index.ts # Express + MCP server, registers all tools
│ │ ├── register-app.ts # Helper to register tool + UI resource pairs
│ │ └── tools/ # 25 tool handler files
│ └── apps/ # 25 app UI folders
│ ├── used-car-market-index/
│ │ ├── package.json
│ │ ├── vite.config.ts
│ │ ├── index.html
│ │ ├── src/main.ts # Full app UI code
│ │ └── dist/index.html # Built single-file HTML bundle
│ ├── trade-in-estimator/
│ ├── deal-evaluator/
│ └── ... (22 more)
How it works
- The MCP server registers 25 tools, each with a
_meta.ui.resourceUripointing to aui://resource - When a host (Claude, VS Code, etc.) calls a tool, it also fetches the UI resource — a single-file HTML bundle containing the entire app
- The app renders in a sandboxed iframe inside the host
- The app calls
app.callServerTool()for data andapp.updateModelContext()to push results back to the LLM - All apps include mock data fallback so they work even without a live MarketCheck API key
Tech stack
- Server:
@modelcontextprotocol/sdk+@modelcontextprotocol/ext-apps+ Express - UI: Vanilla TypeScript + Canvas 2D API (no chart libraries) +
@modelcontextprotocol/ext-appsApp class - Build: Vite +
vite-plugin-singlefile→ single HTML file per app (~400KB, ~98KB gzipped) - Data: MarketCheck API (9 endpoints: VIN decode, price prediction, active/sold search, listing history, sold summary, OEM incentives, UK markets)
Embedding Apps in Your Portal
Embed any app as an iframe in your website. For security, use OAuth access tokens (not API keys) — tokens expire in 6 hours and can be revoked.
Step 1: Generate an OAuth Access Token
Exchange your API key + client secret for a short-lived token (server-side):
curl -X POST https://api.marketcheck.com/oauth2/token \
-H "Content-Type: application/json" \
-d '{"grant_type":"client_credentials","client_id":"YOUR_API_KEY","client_secret":"YOUR_SECRET"}'
Step 2: Embed with the Token
<iframe
src="https://your-domain.com/apps/deal-evaluator/dist/index.html?access_token=TOKEN&embed=true&vin=5TDJSKFC2NS055758"
width="100%" height="700"
style="border:none;border-radius:8px;"
></iframe>
URL Parameters
| Param | Description |
|---|---|
access_token |
OAuth token (secure, 6hr TTL) |
api_key |
API key (for personal/internal use only) |
embed=true |
Hides chrome, full-bleed layout, auto-executes |
vin |
Pre-populate VIN field |
zip |
Pre-populate ZIP code |
make, model |
Pre-populate vehicle selection |
miles |
Pre-populate mileage |
state |
Pre-populate state |
Security
| Auth Method | Exposure Risk | Recommended For |
|---|---|---|
| OAuth Access Token | Low (6hr TTL, revocable) | Iframe embedding |
| API Key in URL | Medium (doesn't expire) | Internal/personal use only |
| API Key in server env | None | MCP server mode |
Generate credentials at developers.marketcheck.com/api-keys
Deployment
Environment Variables
MARKETCHECK_API_KEY=your_api_key # Required for MCP mode live data
MC_API_BASE=https://mc-api.marketcheck.com/v2 # Default
PORT=3001 # Server port (default 3001)
Option 1: Vercel (recommended for serverless)
Yes — these apps can be hosted on Vercel. The server uses stateless HTTP mode (sessionIdGenerator: undefined), which is compatible with Vercel's serverless functions.
npm install -g vercel
Create vercel.json in the project root:
{
"buildCommand": "npm run build",
"functions": {
"api/mcp.ts": {
"maxDuration": 30
}
},
"rewrites": [
{ "source": "/mcp", "destination": "/api/mcp" }
]
}
Create api/mcp.ts:
import type { VercelRequest, VercelResponse } from "@vercel/node";
// Import and initialize your MCP server here
// Handle req/res with StreamableHTTPServerTransport
Then deploy:
vercel --prod
Note: Each tool call is a single HTTP POST → response cycle, which fits Vercel's serverless model well. The 30-second timeout is sufficient for most tools. Set
MARKETCHECK_API_KEYin Vercel's environment variables.
Option 2: Google Cloud Run (container)
# Build container
docker build -t marketcheck-mcp-apps .
docker tag marketcheck-mcp-apps gcr.io/YOUR_PROJECT/marketcheck-mcp-apps
# Push and deploy
docker push gcr.io/YOUR_PROJECT/marketcheck-mcp-apps
gcloud run deploy marketcheck-mcp-apps \
--image gcr.io/YOUR_PROJECT/marketcheck-mcp-apps \
--port 3001 \
--set-env-vars MARKETCHECK_API_KEY=your_key \
--allow-unauthenticated
Option 3: Railway / Render / Fly.io
Any platform that supports Node.js:
# Railway
railway up
# Render — set build command: npm run build
# Start command: npm run serve
# Fly.io
fly launch
fly deploy
Option 4: Self-hosted (VPS, EC2, etc.)
npm install && npm run build
PORT=3001 MARKETCHECK_API_KEY=your_key npm run serve
Do I need to host on cloud?
For personal/local use: No. Run npm run serve locally and use cloudflared tunnel to connect to Claude. The apps work fully offline with mock data too.
For team/production use: Yes, host on any cloud platform. The server is a standard HTTP service — no WebSockets, no sessions, no state. Any platform that can run a Node.js HTTP server works.
The apps themselves don't need separate hosting. They're served as MCP resources from the server — the HTML is bundled into the server response. You only host the single MCP server.
MarketCheck API Tools
The server wraps these MarketCheck API endpoints as MCP tools:
| Tool | Endpoint | Purpose |
|---|---|---|
decode_vin_neovin |
POST /decode/neovin |
VIN → full specs (year, make, model, trim, MSRP, engine, etc.) |
predict_price_with_comparables |
GET /pricing/predict |
ML price prediction with comparable vehicle citations |
search_active_cars |
GET /search/car/active |
Current dealer listings with 100+ filters, stats, facets |
search_past_90_days |
GET /search/car/past90 |
Recently sold/expired listings for transaction evidence |
get_car_history |
GET /history/listings |
Full listing timeline for a VIN across dealers |
get_sold_summary |
GET /api/v1/sold-vehicles/summary |
Aggregated sold data with ranking/grouping dimensions |
search_oem_incentives_by_zip |
GET /incentives/by-zip |
Manufacturer incentives by ZIP code |
search_uk_active_cars |
GET /search/car/uk/active |
UK market active listings |
search_uk_recent_cars |
GET /search/car/uk/recents |
UK market recent/sold listings |
MCP Host Compatibility
MCP Apps are supported by:
- Claude (web) and Claude Desktop
- VS Code GitHub Copilot
- Goose
- Postman
- MCPJam
Development
Build a single app
cd packages/apps/deal-evaluator
npx vite build
Build all apps
npm run build
Add a new app
- Create
packages/apps/my-new-app/withpackage.json,tsconfig.json,vite.config.ts,index.html,src/main.ts - Create
packages/server/src/tools/my-new-app.tswith the tool handler - Import and register in
packages/server/src/index.ts - Run
npm install && npm run build
Project stats
| Metric | Value |
|---|---|
| Total apps | 25 |
| Total TypeScript lines | ~24,000 |
| Source files | 163 |
| Built HTML bundles | 25 (~400KB each, ~98KB gzipped) |
| External chart libraries | 0 (all Canvas 2D) |
| Mock data | Every app has full offline fallback |
License
MIT