sunpeak 提供一套与语言、框架无关的 MCP 服务器测试框架,含有四层测试能力:基于 inspector 的端到端测试、视觉回归测试、对接真实 ChatGPT 的实测(live),以及多模型工具调用评测(evals)。对 sunpeak 应用项目自动集成;对 Python、Go、Rust 等非 sunpeak MCP 服务器,可用 sunpeak test init 生成自包含测试目录。
初始化时 sunpeak test init 会检测项目类型并支持交互式设置,也可指定服务器,如 --server http://localhost:8000/mcp 或 --server "python server.py"。参考代码可克隆仓库:git clone --depth 1 https://github.com/Alignbase/sunpeak /tmp/sunpeak,测试示例位于 /tmp/sunpeak/packages/sunpeak/template/tests/。
常用命令:sunpeak inspect 单独查看任意 MCP 服务器;sunpeak test 运行单元(若配置)与 e2e 测试;sunpeak test --e2e 仅跑 Playwright e2e;sunpeak test --visual 执行视觉回归比较,配合 --update 更新基线;sunpeak test --live 对真实 ChatGPT 运行需隧道与浏览器会话;sunpeak test --eval 对多模型评测需 API 密钥;sunpeak test --unit 仅适用于 sunpeak 应用框架项目。标志可叠加,默认运行不含 --eval 与 --live(会产生费用)。
e2e 测试从 sunpeak/test 导入 test 与 expect,mcp fixture 提供协议级方法(listTools、callTool、listResources、readResource),inspector fixture 负责渲染与双 iframe 处理,测试通过 Playwright 项目在 ChatGPT 与 Claude 上自动运行。资源内容用 result.app().locator(...),inspector chrome 用 inspector.page.locator(...)。
视觉回归用 result.screenshot() 与基线比较,仅在 --visual 时执行,否则静默跳过。live 测试从 sunpeak/test/live 导入,用 live.invoke(prompt) 触发工具调用并断言应用 iframe;需先开启 Developer mode 并配置应用名称;运行需隧道(如 ngrok http 8000)且已登录 ChatGPT,浏览器非 headless。
evals 需安装 ai 与各厂商 SDK,复制 tests/evals/.env.example 为 .env 并填 API 密钥;在 eval.config.ts 中配置模型与默认参数,用例支持单工具断言、有序序列断言或自定义函数断言,可用 appContext 预置应用状态,每个用例按模型运行 N 次以衡量可靠性。
限制与注意:--eval 与 --live 不在默认测试中且会产生费用;--unit 仅限 sunpeak 框架项目;测试控制台错误时应过滤 [IframeResource]、mcp、PostMessage、connect 等握手错误;模拟 JSON 的 tool 字段须与 src/tools/ 下工具文件名一致。其余细节资料暂未提供。