MCP App Inspector & Testing Framework

sunpeak is an open-source MCP App inspector and testing framework. Inspect any MCP server in replicated ChatGPT and Claude runtimes. Test every host, theme, display mode, and device type locally and in CI/CD — no paid accounts, no AI credits.

pnpm add -g sunpeak && sunpeak inspect --server URL

Definition

The sunpeak inspector replicates the ChatGPT and Claude MCP App runtimes on localhost so you can develop and test MCP Apps without deploying to a real host. It also serves as the test runtime for automated Playwright E2E tests in CI/CD.

Why Use the sunpeak Inspector?

MCP Apps run inside AI hosts like ChatGPT and Claude. Testing them against real hosts means paid subscriptions, burned AI credits, and non-deterministic LLM behavior on every code change.

The sunpeak inspector replicates those host runtimes on localhost. It renders your resources exactly as ChatGPT and Claude would — same display modes, themes, safe areas, and conversation chrome — so you can develop and test without deploying.

The inspector works with any MCP server. Run sunpeak inspect --server URL to inspect any running server, or sunpeak dev in a sunpeak project where the inspector is built into the dev server.

Inspect Manually. Test Automatically.

Manual Inspection

Develop your MCP App with instant feedback. Switch between ChatGPT and Claude hosts, toggle themes and display modes, edit tool data live in the sidebar, and see changes instantly with HMR.

  • Toggle ChatGPT/Claude, light/dark, mobile/tablet/desktop
  • Edit tool input and output live in the sidebar
  • HMR — changes appear instantly, no reload needed
  • Works with any MCP server, not just sunpeak projects

Automated Testing

The inspector doubles as the test runtime for Playwright E2E tests. Define states with simulation files, load them via URL, and assert against the rendered resource. Test every host, theme, and display mode in CI/CD.

  • Playwright E2E tests against the local inspector
  • Simulation files for deterministic, reproducible states
  • Live tests against real ChatGPT with sunpeak/test fixtures
  • No paid accounts or AI credits in CI/CD

Try the Inspector

The sunpeak inspector replicates the ChatGPT and Claude runtimes for MCP App testing locally and in CI/CD. Toggle hosts, themes, and display modes from the sidebar.

localhost:3000 - Try Me!

How MCP App Testing Works

Command What it tests Runtime
pnpm test Unit tests (Vitest) jsdom
pnpm test:e2e E2E tests against the inspector Playwright + inspector
pnpm test:live Live tests against real ChatGPT Playwright + real host
1

Define Simulations

Create JSON fixtures in tests/simulations/ that define tool input, tool result, and server tool mocks. Each simulation is a reproducible state your resource can render.

2

Write E2E Tests

Use createInspectorUrl to load a simulation in the inspector with specific host, theme, and display mode settings. Assert against the rendered resource with Playwright.

3

Test Across Hosts

Loop over ChatGPT and Claude hosts in your test suite. The inspector renders your resource in each host's runtime so you validate cross-host rendering automatically.

4

Run in CI/CD

Add pnpm test:e2e to your pipeline. Playwright starts the dev server, runs all tests against the inspector, and shuts down. No accounts, keys, or credits on your CI runners.

Inspector & Testing Features

  • Multi-Host Runtime Replication

    Replicated ChatGPT and Claude runtimes with accurate display modes, themes, safe areas, and conversation chrome.

  • Interactive Sidebar Controls

    Configure host, theme, device width, display mode, tool input/output, and app context from the sidebar. All settings reflected in the URL.

  • Playwright E2E Tests

    Load simulations via createInspectorUrl and assert with Playwright. Test every host, theme, and display mode combination.

  • Live Tests Against Real Hosts

    Playwright fixtures that open real ChatGPT, send messages, and return the app iframe. All host DOM interaction maintained by sunpeak.

  • Simulation Fixtures

    JSON files that define reproducible tool states. Support simple and conditional server tool mocks for testing interactive flows.

  • Works with Any MCP Server

    Inspect any MCP server with sunpeak inspect --server URL. No sunpeak project required.

Who the inspector is for

Coding Agents

Agents like Claude Code, Codex, and Cursor can run the inspector, execute Playwright tests, and iterate on MCP Apps without manual testing in a real host.

MCP Server Authors

Inspect any MCP server — Python, TypeScript, Go, anything. No sunpeak project needed. Just point the inspector at your server URL or startup command.

QA & Testing Teams

Automated Playwright tests against the inspector catch rendering regressions across hosts, themes, and devices. Run in CI/CD with zero external dependencies.

Getting Started

Inspect any MCP server — no sunpeak project required:

pnpm add -g sunpeak && sunpeak inspect --server URL

Or in a sunpeak project, the inspector is built into the dev server:

sunpeak dev

Run pnpm test:e2e for automated Playwright tests against the inspector. See the testing documentation for the full setup.

Inspector Docs → Testing Docs →

Frequently Asked Questions

What is the sunpeak inspector?

The sunpeak inspector replicates MCP App host runtimes (ChatGPT, Claude) on your local machine. It renders your MCP App resources exactly as they appear inside the real hosts, with full control over host, theme, display mode, and device type. Use it for manual development and automated testing.

Do I need a sunpeak project to use the inspector?

No. The inspector works with any MCP server. Run "sunpeak inspect --server http://localhost:8000/mcp" to inspect any running MCP server, or pass a command like "sunpeak inspect --server python my_server.py" to start and inspect it in one step.

How do I test MCP Apps across ChatGPT and Claude?

The inspector ships with both ChatGPT and Claude host runtimes built in. Switch between them from the sidebar dropdown, or pass ?host=claude in the URL. In Playwright tests, use createInspectorUrl with a host parameter and loop over both hosts to test cross-host rendering automatically.

What are simulation files?

Simulation files are JSON fixtures in tests/simulations/ that define reproducible tool states — tool input, tool result, and server tool mocks. The inspector loads them automatically. Select a simulation from the sidebar to render your resource with that mock data, or select "None" to call the real tool handler.

Can I run inspector tests in CI/CD?

Yes. E2E tests are Playwright specs that load simulations in the inspector via createInspectorUrl and assert against the rendered resource. Run "pnpm test:e2e" in your CI pipeline. No paid host accounts, API keys, or AI credits needed.

What is the difference between E2E tests and live tests?

E2E tests run against the local inspector with simulation fixtures — fast, deterministic, and free. Live tests run against real ChatGPT using sunpeak/test fixtures that handle auth, message sending, and iframe access. E2E tests catch UI and rendering issues; live tests catch MCP connection and host-specific iframe behavior.

Does the inspector support live tests against real ChatGPT?

Yes. sunpeak provides Playwright fixtures (sunpeak/test) that open real ChatGPT, send messages to trigger tool calls, and return the app iframe for assertions. All host DOM interaction is maintained by sunpeak — you only write resource assertions. Run with "pnpm test:live".

Is the sunpeak inspector free?

Yes. sunpeak is MIT licensed and open source. The inspector, testing framework, and all tooling are free to use. No paid accounts needed for local development or CI testing.

Open Source & MIT Licensed

sunpeak is free to use, modify, and distribute.

Building MCP Apps? See the MCP App Framework page. Building for ChatGPT? See the ChatGPT App Framework page. Building for Claude? See the Claude Connector Framework page.