We just shipped sunpeak.ai as a standalone testing framework for MCP Apps!
If you're building MCP Apps for ChatGPT or Claude, you know the pain: deploy, open the host, start a conversation, trigger the tool, check the result. Repeat for both hosts, both themes, three display modes. That's 24 combinations per code change.
sunpeak replicates the ChatGPT and Claude runtimes locally. You write Playwright tests that call tools, render resources, and assert against the output. One test file runs against both hosts automatically.
What's included:
- Unit tests (Vitest + happy-dom)
- E2E tests against replicated ChatGPT and Claude runtimes
- Visual regression testing with screenshot baselines
- Live tests against real ChatGPT
- Works with any MCP server in any language (Python, Go, TypeScript)
Add it to an existing project with one command:
pnpm add -g sunpeak && sunpeak test init
No paid host accounts. No AI credits. Runs in CI/CD.
MIT licensed and open source! https://sunpeak.ai/testing-framework/
Top comments (3)
actually pulled sunpeak down today against our MCP (@hashlock-tech/mcp, atomic settlement layer for crypto trading agents, 6 tools,data-only). Boot was clean, Found 6 tool(s), 0 resource(s) came up in under 15s, browser auto-opened nicely.
Hit the "No tools with UI resources found on this server" state immediately, which is technically correct (our tools return JSON: tradeId, txHash,
settlement status) — but it made me realize sunpeak's true value prop deserves louder marketing. A few things that would have helped me reach for it sooner:
The Playwright sim hooks + the inspector's chrome are all great — felt like a real product
the moment I clicked around. Bookmarking, will be back the day I add UI resources to our tools.
Nice work — looking forward to where this goes.
Super grateful for the thoughtful feedback, Baris ❤️ Good point on differentiating against UI-less MCP, the "Apps" term doesn't do enough work (and it isn't widely known enough) for people to instantly recognize the difference. We might even fix by making the vanilla MCP use case first-class!
checkout shiplight.ai
Some comments have been hidden by the post's author - find out more