MCP Apps Example Gallery (fable candidate)
Six official Model Context Protocol MCP Apps examples,hosted as remote Streamable HTTP MCP servers you can try by URL — no cloning,no npx, no tunnel. Each example has a stable endpoint, a gallery card with ascreenshot and sample prompt, and a Copy MCP URL action.
Independence notice. This gallery is an independent hosted adaptation ofthe official examples, pinned at upstream commit
10195ad9.It is not an official Model Context Protocol service and is not hosted orendorsed by the Model Context Protocol project. It is a demonstrationservice: no accounts, no stored user data, and no SLA.
The apps
| Slug | Example | Demonstrates | MCP endpoint path |
|---|---|---|---|
get-time |
basic-server-react | Smallest tool + ui:// resource + UI-to-tool round trip |
/apps/get-time/mcp |
budget-allocator |
budget-allocator-server | Editable form, charts, recalculation | /apps/budget-allocator/mcp |
cohort-heatmap |
cohort-heatmap-server | Dense interactive data visualization | /apps/cohort-heatmap/mcp |
customer-segmentation |
customer-segmentation-server | Filtering and chart interaction | /apps/customer-segmentation/mcp |
scenario-modeler |
scenario-modeler-server | Scenario templates + custom 12-month projections | /apps/scenario-modeler/mcp |
transcript |
transcript-server | Live browser speech transcription (Web Speech API) | /apps/transcript/mcp |
Non-MCP routes: / (gallery page), /apps.json (machine-readable manifest),/healthz, /readyz, /version.
Production endpoints
The production gallery is served athttps://openwork-mcp-app-gallery-fable.vercel.app (verified against theexact deployed commit; receipts in BENCHMARK_REPORT.md and TIMELINE.md):
- https://openwork-mcp-app-gallery-fable.vercel.app/apps/get-time/mcp
- https://openwork-mcp-app-gallery-fable.vercel.app/apps/budget-allocator/mcp
- https://openwork-mcp-app-gallery-fable.vercel.app/apps/cohort-heatmap/mcp
- https://openwork-mcp-app-gallery-fable.vercel.app/apps/customer-segmentation/mcp
- https://openwork-mcp-app-gallery-fable.vercel.app/apps/scenario-modeler/mcp
- https://openwork-mcp-app-gallery-fable.vercel.app/apps/transcript/mcp
Try an example in under five minutes
- Open the gallery page and press Copy MCP URL on a card (or copy anendpoint above).
- Add the URL as a remote MCP server in an MCP Apps-compatible host. InOpenWork, add it as a user-configured MCP server; other hosts have anequivalent "add remote MCP server" flow.
- Send the card's sample prompt (for example, for
budget-allocator:"Create a $1 million seed-stage budget I can adjust interactively."). - Interact with the app UI that renders inside the conversation.
Hosts without MCP Apps support still work: every tool returns an ordinarytext and/or structured result as fallback, so a plain MCP client gets usefuloutput without any UI.
Protocol support: the current 2026-07-28 protocol revision (per-requestenvelope) and the stateless 2025-era Streamable HTTP flow(initialize → tools/* / resources/*) are both served on every endpoint.GET without a session and DELETE return 405 — serving is stateless andthere is no server-side session to terminate.
Run it locally
Requires Node.js 24.x and pnpm 10.28.0 (via corepack):
corepack enable
pnpm install --frozen-lockfile
pnpm dev
This builds the six app UIs into the immutable resource bundle, generates thegallery site, and serves everything at http://localhost:3000.
Reproduce the complete release gate (formatting, lint, strict typecheck,provenance/notices verification, source-boundary scan, dependency audit,95-test unit/gateway/contract matrix over both protocol eras, the productionVercel build, the architecture invariant, SBOM generation, and 15 browsertests through the upstream basic host):
pnpm exec playwright install chromium
pnpm release:check
Source attribution and provenance
- Upstream example source is copied at the exact pinned commit under
upstream/ext-apps/, with per-file digests and everylocal modification documented inupstream/manifest.jsonand verified bypnpm verify:notices. - Local modifications are limited to: import adaptation from MCP SDK v1 +
@modelcontextprotocol/ext-apps/serverto the gallery's SDK v2 adapter(src/mcp-app-adapter.ts), reading UI HTML fromthe bundled immutable store instead of the local filesystem, and adeterministic seeded dataset forcustomer-segmentation(statelessserverless instances must serve identical data). - Gallery-owned code is Apache-2.0 (
LICENSE); copied upstreamcode keeps its own notices (THIRD_PARTY_NOTICES.md). pnpm check:upstreamreports upstream drift read-only; upstream is neverfetched at build or runtime.
Data behavior, logging, and limits
- No accounts, no cookies, no database, no uploads, no stored user state.All app data is synthetic or request-bounded; the
transcriptapp's speechrecognition runs in your browser (the host asks for microphone permission)and no audio or transcript ever reaches the gallery server. - No intended server-side network egress in any Wave 1 app; CI scans theruntime source for network, subprocess, and filesystem-write primitives.
- Logs contain only anonymous aggregate metadata: app slug, JSON-RPCmethod category, status, duration, and byte counts — never tool arguments,results, prompts, resource contents, headers, cookies, or IP addresses.
- Limits: 256 KiB request bodies; 512 KiB tool results; 1 MiB bundled UIresources; a 15-second application deadline (30-second platform maximum);per-instance concurrency caps with
429+Retry-Aftershedding; platformedge rate limiting on/apps/*/mcp. - Apps can be disabled individually (fail-closed
DISABLED_APP_SLUGSoverride); disabled apps stay visible asenabled: falsein/apps.json.
No SLA
This is a hosted learning and demonstration surface, run on providerinfrastructure without an availability commitment. Endpoints may berate-limited, disabled, or removed at any time.