关于 Lastest
Lastest MCP 服务是 Lastest 视觉回归测试平台的 MCP 接口,供 Claude Code、Cursor 等客户端中的 AI Agent 运行测试、查看截图差异并批准基线。适合使用云端或可自托管 Lastest 实例的团队。
主要功能
- 01运行测试并读取运行结果
- 02查看视觉差异并批准或拒绝基线
- 03由 AI 创建和修复测试
- 04管理存储状态与设置脚本等共享认证配置
- 05按访问级别(read、write、full)限制可用工具
适用场景
- 01Agent 在修改界面后自动触发视觉回归测试
- 02在客户端中审阅截图差异并批准或拒绝变更
- 03为新功能从 URL 或自然语言描述生成测试
MCP 相关
这是一个 MCP 服务,通过 stdio 或 Streamable HTTP 向 MCP 客户端暴露 20 个以 lastest_ 为前缀的工具,用于调用 Lastest 实例的 REST API。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
@lastest/mcp-server
适用于 Claude Code、Cursor、Windsurf、Cline 和 Claude Desktop 的 MCP 服务。让 AI Agent 通过模型上下文协议,在 Lastest 实例上运行视觉回归测试、审查截图差异并批准基线。
快速开始
npx -y @lastest/mcp-server@latest --url https://your-lastest-instance --api-key YOUR_API_KEY
在 Lastest 界面中生成 API 密钥:Settings → Runners & API Access → Create API Key(仅显示一次)。该服务通过 stdio 使用 MCP 通信,可将其接入下方任何兼容客户端。
兼容客户端
| 客户端 | 状态 | 安装方式 |
|---|---|---|
| Claude Code | 已验证 | claude mcp add(见下文) |
| Claude Desktop | 已验证 | claude_desktop_config.json |
| Cursor | 已验证 | ~/.cursor/mcp.json |
| Windsurf | 已验证 | MCP 配置(通用 JSON) |
| Cline | 已验证 | MCP 配置(通用 JSON) |
任何能够通过参数启动 stdio 服务的 MCP 兼容客户端都适用。
安装 — Claude Code
claude mcp add lastest -- npx -y @lastest/mcp-server@latest \
--url https://your-lastest-instance \
--api-key YOUR_API_KEY
使用 claude mcp list 验证。
安装 — Claude Desktop / Cursor / Windsurf / Cline
将配置添加到 claude_desktop_config.json、~/.cursor/mcp.json 或客户端的 MCP 配置中:
{
"mcpServers": {
"lastest": {
"command": "npx",
"args": [
"-y",
"@lastest/mcp-server@latest",
"--url",
"https://your-lastest-instance",
"--api-key",
"YOUR_API_KEY"
]
}
}
}
重启客户端。
Agent 能做什么
- 列出代码仓库、测试、功能区域、构建和活跃任务
- 根据 URL 或自然语言提示词创建 AI 编写的测试
- 更新或删除测试和功能区域
- 自行配置测试运行时:
playwrightOverrides、diffOverrides、stabilizationOverrides、视口和设置接线 - 管理共享身份验证:存储状态(Playwright
storageState()数据块)和可复用的设置脚本 - 触发测试运行(可选启用
forceVideoRecording)并读取运行结果 - 检查视觉差异,并单独或批量批准/拒绝基线
- 根据最新一次运行结果,借助 AI 修复失败的测试
- 发布、列出和撤销构建与测试的公开分享链接
- 读取和更新代码仓库级别的 Playwright 设置(浏览器、视口、超时、并行度、稳定性)
- 推进 Verify 阶段:变更地图、步骤比较、按层审批
- 获取 QA 摘要、生成构建审查报告和覆盖率统计
提供的工具
该服务注册了 20 个 MCP 工具(均以 lastest_ 为前缀)。每个工具都会返回结构化的 { status, summary, actionRequired?, details } 负载。
纯 CRUD 操作整合为资源工具,通过 action(或 scope)参数区分操作;工作流动词则保留为独立工具。
资源工具(按 action 分派)
| 工具 | action(或 scope)的取值 | 用途 |
|---|---|---|
lastest_status | health、jobs、job | 实例连接状态 + 后台任务状态 |
lastest_repo | list、get、create、update、get_settings、update_settings | 仓库 + 仓库级 Playwright 设置 |
lastest_area | list、create、update、delete、list_tests | 功能区域(测试分组) |
lastest_test | list(filter: all|failing)、get、update、delete | 读取、更新或删除测试 |
lastest_storage_state | list、create、delete | 已保存的 Playwright storageState() 数据块 |
lastest_setup_script | list、get、create、update、delete | 可复用的 Playwright/API 设置代码块 |
lastest_get_diffs | scope: single|build | 查看视觉差异(单个,或某次构建的全部差异) |
lastest_decide_diff | approve、reject(通过 diffIds 批量处理,或通过 buildId 全部批准) | 批准/拒绝视觉差异和基线 |
lastest_build | list、get、review | 构建:列表、状态、全面的 QA 审核 |
lastest_share | list、revoke | 列出/撤销现有的公开分享 |
lastest_verify | view、change_map | 验证阶段视图 + 构建级变更映射 |
lastest_insights | coverage、qa | 仓库覆盖率统计 + QA 摘要 |
工作流动词(独立工具)
| 工具 | 用途 |
|---|---|
lastest_run_tests | 触发测试构建(仓库/区域/指定测试) |
lastest_create_test | 创建测试(直接创建/AI 创建,浏览器/API 模式) |
lastest_heal_test | AI 修复 Agent 自动修复失败的测试 |
lastest_validate_diff | 针对差异的验证:仅运行受影响的测试,并返回判定结果 |
lastest_suggest_app_fix | 针对真实回归问题,提供应用代码修复建议 |
lastest_approve_layer | 对步骤比较执行逐层批准/拒绝/暂缓 |
lastest_publish_share | 为构建/测试发布 /r/<slug> 公开分享 |
lastest_quickstart | 启动产品化的 2 项测试演示(返回 sessionId) |
lastest_quickstart_status | 轮询 QuickStart 会话 |
自配置测试
lastest_test(action: "update")支持完整的覆盖配置,让 Agent 无需操作 UI 即可配置测试:
- 设置连线 —
setupTestId(使用另一个测试作为设置,优先级更高)或setupScriptId,以及用于注入或跳过默认步骤(test|script|storage_state)的setupOverrides/teardownOverrides块。 - 运行时覆盖 —
playwrightOverrides(浏览器、导航/操作/选择器超时、错误模式、baseUrl、光标速度)、viewportOverride、diffOverrides、stabilizationOverrides。 - 生命周期 —
quarantined、executionMode(procedural|agent)。
将任意覆盖配置块设为 null 即可清除该配置。API 会在保存前验证每个引用的 ID 是否属于同一仓库。
迁移 — 工具整合(v0.3.x)
工具接口从约 56 个独立工具整合为约 21 个,方法是将纯 CRUD 操作并入上述资源工具。对于调用旧版逐操作工具名称的脚本,这是一项破坏性变更。工作流动词和 QuickStart 链(lastest_quickstart → lastest_quickstart_status → lastest_publish_share)保留了原有名称和签名。已移除的名称请按以下方式替换:
| 已移除的工具 | 现在调用 |
|---|---|
lastest_health、lastest_list_jobs、lastest_get_job | lastest_status { health | jobs | job } |
lastest_list_repos、lastest_get_repo、lastest_create_repo、lastest_update_repo、lastest_get_repo_settings、lastest_update_repo_settings | lastest_repo { action } |
lastest_list_areas、lastest_create_area、lastest_update_area、lastest_delete_area、lastest_list_area_tests | lastest_area { action } |
lastest_list_tests、lastest_get_test、lastest_update_test、lastest_delete_test、lastest_list_failing_tests | lastest_test { action } |
lastest_list_storage_states、lastest_create_storage_state、lastest_delete_storage_state | lastest_storage_state { action } |
lastest_list_setup_scripts、lastest_get_setup_script、lastest_create_setup_script、lastest_update_setup_script、lastest_delete_setup_script | lastest_setup_script { action } |
lastest_get_diff、lastest_get_build_diffs | lastest_get_diffs { scope } |
lastest_approve_diff、lastest_reject_diff、lastest_approve_build_diffs | lastest_decide_diff { approve | reject } |
lastest_list_builds、lastest_get_build_status、lastest_review_build、lastest_get_test_run | lastest_build { list | get | review } |
lastest_list_build_shares、lastest_list_test_shares、lastest_revoke_share | lastest_share { list | revoke } |
lastest_get_coverage、lastest_get_qa_summary | lastest_insights { coverage | qa } |
lastest_verify_view、lastest_get_change_map | lastest_verify { view | change_map } |
迁移期间,如果暂时需要旧名称,请固定使用此软件包的 0.2.x 版本。
命令行
lastest-mcp --url <url> --api-key <key>
该进程通过 stdio 与宿主客户端通信。
| 标志 | 默认值 | 含义 |
|---|---|---|
--url | (必填) | 工具调用的 Lastest 实例。 |
--api-key | — | API 密钥。stdio 模式下必填;在 http 模式下,用作未携带 Authorization 标头的请求的备用密钥。 |
--transport | stdio | stdio 用于本地 Agent,http 用于远程 Streamable HTTP 端点。 |
--port / --host | 9700 / 127.0.0.1 | http 模式下的监听地址和端口。 |
--access-level | full | read、write 或 full——要公开多少工具功能。 |
要求: Node.js 18+,以及可访问的 Lastest 实例。
远程(Streamable HTTP)
大多数情况下,你需要使用 Lastest 实例已提供的端点:
https://your-lastest-instance/api/mcp
该端点使用 Streamable HTTP,并支持 API 密钥或 OAuth 2.1 连接,因此只支持 URL 的 Agent 平台(Salesforce Agentforce、ChatGPT、Claude 网页版)也可以自行连接——它会从 WWW-Authenticate 标头中发现授权服务器、自行注册,并引导你完成授权同意页面。OAuth 连接只能使用工具的 read 或 write 子集;删除内容、撤销共享和发布公开链接仍需使用你自己的 API 密钥。
如果你想在单独的主机或端口上提供 MCP 端点,可以将此软件包作为独立的 HTTP 服务运行:
lastest-mcp --url https://your-lastest-instance --transport http --port 9700
# → POST http://127.0.0.1:9700/mcp with Authorization: Bearer <api-key>
此模式仅支持 API 密钥;独立进程不支持 OAuth。
访问级别
--access-level(以及 /api/mcp 上的 OAuth 作用域)决定可用的工具功能:
| 级别 | 可用内容 |
|---|---|
read | 项目、测试、构建、差异、覆盖率、验证和作业状态。 |
write | 包含 read 的所有内容,另加运行测试、创建和更新测试及区域,以及批准或拒绝视觉变更。 |
full | 包含所有内容,包括删除、撤销共享和发布公开的 /r/ 链接。仅限 API 密钥。 |
工具会在注册时进行筛选,因此受限连接不会看到无法调用的操作。
身份验证
该服务使用 Bearer 令牌对 Lastest 的 REST API(/api/v1/*)进行身份验证。你可以在 Lastest 界面的 Settings → Runners & API Access 中管理和撤销密钥。
故障排查
| 症状 | 解决方法 |
|---|---|
Failed to connect to Lastest at … | 检查此计算机是否可以访问该 URL,以及 API 密钥是否有效。 |
Lastest API error 401 | 令牌已撤销或过期——在 Settings 中生成新令牌。 |
| Claude Code 中未显示工具 | 运行 claude mcp list;如果缺失,请重新运行 claude mcp add。重启客户端。 |
| Cursor / Windsurf / Cline 中未显示工具 | 确认 JSON 配置有效,并已完全重启客户端。 |
本地开发
git clone https://github.com/las-team/lastest
cd lastest/packages/mcp-server
pnpm install
pnpm dev -- --url http://localhost:3000 --api-key <key>
搭配使用
- Lastest — 视觉回归测试平台,提供截图差异对比和 AI 测试编写功能
- @lastest/runner — 可自托管的运行器,可在你的基础设施上执行由 AI 触发的测试
- Model Context Protocol — 为 Claude、Cursor、Windsurf 等产品中的工具调用提供支持的开放标准
链接
- 主页: https://lastest.cloud
- GitHub: https://github.com/las-team/lastest
- Wiki: https://github.com/las-team/lastest/wiki/MCP-Server
- 问题反馈: https://github.com/las-team/lastest/issues
- npm: https://www.npmjs.com/package/@lastest/mcp-server
许可证
FSL-1.1-ALv2 — 详见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。