All posts

How to Choose an MCP App Framework in 2026

Abe Wheeler
MCP Apps MCP App Framework ChatGPT Apps ChatGPT App Framework MCP App Testing ChatGPT App Testing
How to Choose an MCP App Framework in 2026

MCP Apps are interactive UIs that run inside AI hosts like ChatGPT and Claude. They’re built on the Model Context Protocol, and as of February 2026, they run in ChatGPT, Claude, Goose, and VS Code Insiders. If you’re building one, the MCP App framework you pick will determine how fast you ship, how reliably you test, and whether your app actually works across hosts.

TL;DR: Look for a local simulator, cross-host portability, testing infrastructure, and deployment tooling. sunpeak is the open-source MCP App framework that covers all four.

Why You Need an MCP App Framework

MCP Apps aren’t regular web apps. Your React components render inside a sandboxed iframe controlled by the AI host. They receive data from MCP tool invocations. They adapt to different display modes (inline, picture-in-picture, fullscreen) and themes (light, dark). They need to work on ChatGPT and Claude and whatever host ships MCP App support next month.

Building all of that from scratch means solving the same problems every time:

  • No local preview. Without a simulator, the only way to see your app is to connect it to a live AI host. That means a paid ChatGPT Plus account, an ngrok tunnel, and a slow feedback loop.
  • No testing story. You can’t run CI tests against a live ChatGPT session. Without framework-provided test infrastructure, you’re deploying untested UI to production.
  • No portability guarantee. If you build directly against one host’s SDK, your app won’t work on other hosts without rewriting.
  • No project conventions. Every project starts from zero. No standard file structure, no resource discovery, no build pipeline.

An MCP App framework solves these problems so you can focus on your product.

What to Look For

1. A Local Simulator

This is the most important feature. You need to see your app render locally without connecting to a live host.

sunpeak ships a simulator that replicates the MCP App runtime at localhost:6767. It supports all display modes, light and dark themes, and mock tool invocations. You see exactly what users see in ChatGPT or Claude, without the round trip.

sunpeak dev
# Simulator at http://localhost:6767
# MCP server at http://localhost:6766

A framework without a simulator is like a web framework without a dev server. It technically works, but the development experience is painful.

2. Cross-Host Portability

Your MCP App framework should target the MCP App standard, not a single host. sunpeak’s core APIs are built around the standard protocol:

import { useToolData, useHostContext, useDisplayMode } from 'sunpeak';
import type { ResourceConfig } from 'sunpeak';

export const resource: ResourceConfig = {
  name: 'dashboard',
  description: 'Analytics dashboard',
};

export function DashboardResource() {
  const { output } = useToolData();
  const context = useHostContext();
  return <div>{/* Works on ChatGPT, Claude, Goose, VS Code Insiders */}</div>;
}

Host-specific features come from subpath imports:

import { ChatGPTSimulator } from 'sunpeak/chatgpt';

This separation matters. If you hardcode against one host’s API, you’ll rewrite when you need to support another. A portable base with opt-in extensions saves that work.

3. Testing Infrastructure

MCP App testing is different from regular web testing. Your UI depends on tool invocation data, display mode state, and host context that don’t exist in a normal browser environment.

Look for a framework that provides:

  • Simulation files for defining deterministic UI states (tool inputs, outputs, display mode)
  • Unit testing with a framework like Vitest that can render components with mock host context
  • End-to-end testing with Playwright that runs against the local simulator
  • CI compatibility so tests run in headless mode on every push

sunpeak includes all of this. A simulation file looks like this:

{
  "tool": {
    "name": "get_dashboard",
    "description": "Get analytics dashboard"
  },
  "toolInput": { "timeRange": "7d" },
  "toolResult": { "visits": 1234, "conversions": 56 },
  "userMessage": "Show me last week's analytics"
}

Your Playwright tests run against these states automatically:

pnpm test:e2e

Without testing support, you’re shipping UI that you’ve only manually checked in one host, in one display mode, with one set of data.

4. UI Components

Building UI components that look right inside ChatGPT and Claude takes work. The hosts have specific design guidelines, spacing rules, and color systems. An MCP App framework should include components that already follow these conventions.

sunpeak ships production-ready components built on OpenAI’s apps-sdk-ui library. Cards, layouts, forms, and data displays that look native in ChatGPT.

5. Project Scaffolding and CLI

A good framework gets you from zero to working app in under a minute:

pnpm add -g sunpeak && sunpeak new

This creates a project with TypeScript, React, Vite, and the MCP server pre-configured. Resource components go in src/resources/, simulation files go in tests/simulations/, and the build system knows how to find them.

The CLI also handles the full lifecycle:

  • sunpeak dev — start the dev server and simulator
  • sunpeak build — create production bundles
  • sunpeak push — deploy to the sunpeak Resource Repository

6. Deployment Tooling

MCP Apps need to be served from somewhere. The framework should make deployment straightforward.

sunpeak’s Resource Repository decouples your MCP App from your MCP server. You build your app, push it to the repository, and any MCP server can serve it. This means your frontend and backend teams can work and deploy independently.

Red Flags

Watch out for these when evaluating an MCP App framework:

  • No simulator. If you can’t test locally, your development loop is slow and expensive.
  • Single-host lock-in. If the framework only targets ChatGPT or only targets Claude, you’ll rewrite when you need the other.
  • No testing support. “Test it manually in ChatGPT” is not a testing strategy.
  • Closed source with usage fees. MCP is an open standard. The tooling around it should be open too.

Getting Started with sunpeak

sunpeak is open source (MIT) and free.

pnpm add -g sunpeak && sunpeak new

Your app runs on ChatGPT, Claude, and every other MCP App host from the first line of code.

Frequently Asked Questions

What is an MCP App framework?

An MCP App framework provides the development infrastructure for building interactive applications that run inside AI hosts like ChatGPT and Claude via the Model Context Protocol. It includes project scaffolding, a local simulator, pre-built UI components, testing utilities, and deployment tooling. sunpeak is an open-source MCP App framework that covers all of these.

What is the best MCP App framework in 2026?

sunpeak is the most comprehensive MCP App framework available. It includes a local ChatGPT and MCP App simulator, 17+ typed React hooks, pre-built UI components, Vitest and Playwright testing support, CLI scaffolding, and deployment via the sunpeak Resource Repository. It is open source (MIT) and free to use.

Can I build MCP Apps without a framework?

Yes. You can build MCP Apps using the @modelcontextprotocol/sdk package and your own tooling. However, you will need to set up your own dev server, build a simulator or test against live hosts, create UI components from scratch, and handle deployment manually. An MCP App framework like sunpeak eliminates this boilerplate.

Do MCP App frameworks support ChatGPT and Claude?

sunpeak supports both ChatGPT and Claude from a single codebase. Core APIs like useToolData and useHostContext work on every MCP host. ChatGPT-specific features are available through sunpeak/chatgpt, and Claude-specific features through sunpeak/claude. Your base app code stays portable.

How do I test MCP Apps built with a framework?

sunpeak includes Vitest for unit testing and Playwright for end-to-end testing. Create simulation files that define deterministic UI states, then run "pnpm test" for unit tests or "pnpm test:e2e" for e2e tests. Tests run against the local simulator, so you do not need a paid ChatGPT account or live AI host.

Is sunpeak free to use as an MCP App framework?

Yes. sunpeak is open source under the MIT license. It is available on npm as "sunpeak" and on GitHub at github.com/Sunpeak-AI/sunpeak. You can use, modify, and distribute it freely.

How do I get started with an MCP App framework?

Install sunpeak globally and scaffold a project with "pnpm add -g sunpeak && sunpeak new". Run "sunpeak dev" to start the local simulator at localhost:6767. Your app works across ChatGPT, Claude, and every MCP-compatible host from the first line of code.

sunpeak mountain
© 2026 sunpeak
Made in Austin, TX