mcpField
L
Lastest

Lastest

Local
github.comDeveloper Tools21Updated 7w ago

About Lastest

The Lastest MCP server exposes a Lastest visual regression testing instance to AI agents in clients such as Claude Code and Cursor. It lets agents run tests, review screenshot diffs and approve baselines on cloud or self-hosted instances.

Key features

  1. 01Runs tests and reads run results
  2. 02Reviews visual diffs and approves or rejects baselines
  3. 03Creates and heals tests with AI
  4. 04Manages storage states and reusable setup scripts
  5. 05Filters tools by read, write or full access level

Use cases

  1. 01Triggering visual regression runs after an agent changes a UI
  2. 02Reviewing screenshot diffs and approving changes from an MCP client
  3. 03Generating tests from a URL or a natural-language prompt

MCP support

This is an MCP server that exposes 20 lastest_-prefixed tools over stdio or Streamable HTTP, calling the Lastest instance's REST API on the client's behalf.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"las-team": {
"command": "npx",
"args": [
"-y",
"@lastest/mcp-server"
]
}
}
}
Run commandnpx -y @lastest/mcp-server

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@lastest/mcp-server0.3.7

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

@lastest/mcp-server

npm version npm downloads License GitHub stars

MCP server for Claude Code, Cursor, Windsurf, Cline, and Claude Desktop. Lets AI agents run visual regression tests, review screenshot diffs, and approve baselines on a Lastest instance through the Model Context Protocol.

Quick start

npx -y @lastest/mcp-server@latest --url https://your-lastest-instance --api-key YOUR_API_KEY

Generate an API key in the Lastest UI: Settings → Runners & API Access → Create API Key (shown only once). The server speaks MCP over stdio — wire it into any compatible client below.

Compatible clients

ClientStatusInstall method
Claude CodeVerifiedclaude mcp add (see below)
Claude DesktopVerifiedclaude_desktop_config.json
CursorVerified~/.cursor/mcp.json
WindsurfVerifiedMCP config (generic JSON)
ClineVerifiedMCP config (generic JSON)

Any MCP-compliant client that can launch a stdio server with arguments works.

Install — Claude Code

claude mcp add lastest -- npx -y @lastest/mcp-server@latest \
  --url https://your-lastest-instance \
  --api-key YOUR_API_KEY

Verify with claude mcp list.

Install — Claude Desktop / Cursor / Windsurf / Cline

Add to claude_desktop_config.json, ~/.cursor/mcp.json, or your client's MCP config:

{
  "mcpServers": {
    "lastest": {
      "command": "npx",
      "args": [
        "-y",
        "@lastest/mcp-server@latest",
        "--url",
        "https://your-lastest-instance",
        "--api-key",
        "YOUR_API_KEY"
      ]
    }
  }
}

Restart the client.

What an agent can do

  • List repositories, tests, functional areas, builds, and active jobs
  • Create AI-authored tests from a URL or natural-language prompt
  • Update or delete tests and functional areas
  • Self-configure test runtime: playwrightOverrides, diffOverrides, stabilizationOverrides, viewport, setup wiring
  • Manage shared auth: storage states (Playwright storageState() blobs) and reusable setup scripts
  • Trigger test runs (optionally forceVideoRecording) and read run results
  • Inspect visual diffs and approve / reject baselines individually or in bulk
  • Heal failing tests with AI based on the latest run
  • Publish, list, and revoke public-share links for builds and tests
  • Read and update repo-level Playwright settings (browser, viewport, timeouts, parallelism, stabilization)
  • Drive the Verify phase: Change Map, step comparisons, per-layer approvals
  • Pull QA summaries, build review reports, and coverage stats

Tools exposed

The server registers 20 MCP tools (all prefixed lastest_). Every tool returns a structured { status, summary, actionRequired?, details } payload.

Pure CRUD operations are consolidated into resource tools that take an action (or scope) discriminator; workflow verbs stay as standalone tools.

Resource tools (action-dispatched)
Toolaction (or scope) valuesPurpose
lastest_statushealth, jobs, jobInstance connectivity + background-job status
lastest_repolist, get, create, update, get_settings, update_settingsRepositories + repo-level Playwright settings
lastest_arealist, create, update, delete, list_testsFunctional areas (test groupings)
lastest_testlist (filter: all|failing), get, update, deleteRead/update/delete tests
lastest_storage_statelist, create, deleteSaved Playwright storageState() blobs
lastest_setup_scriptlist, get, create, update, deleteReusable Playwright/API setup blocks
lastest_get_diffsscope: single|buildRead visual diffs (one, or all for a build)
lastest_decide_diffapprove, reject (via diffIds batch or buildId approve-all)Approve/reject visual diffs & baselines
lastest_buildlist, get, reviewBuilds: list, status, comprehensive QA review
lastest_sharelist, revokeList/revoke existing public shares
lastest_verifyview, change_mapVerify-phase view + build-level Change Map
lastest_insightscoverage, qaRepo coverage stats + QA summary
Workflow verbs (standalone)
ToolPurpose
lastest_run_testsTrigger a test build (repo / area / specific tests)
lastest_create_testCreate a test (direct/AI, browser/API modes)
lastest_heal_testAI healer agent auto-fixes a failing test
lastest_validate_diffDiff-scoped validation: run only affected tests, return a verdict
lastest_suggest_app_fixAdvisory application-code fix for a real regression
lastest_approve_layerPer-layer approve/reject/snooze on a step comparison
lastest_publish_sharePublish a /r/<slug> public share for a build/test
lastest_quickstartSpin up the productized 2-test demo (returns sessionId)
lastest_quickstart_statusPoll a QuickStart session
Self-configuring tests

lastest_test (action: "update") accepts a full override surface so an agent can shape a test without touching the UI:

  • Setup wiring — setupTestId (use another test as setup, takes precedence) or setupScriptId, plus setupOverrides / teardownOverrides blocks to inject/skip default steps (test | script | storage_state).
  • Runtime overrides — playwrightOverrides (browser, navigation/action/selector timeouts, error modes, baseUrl, cursor speed), viewportOverride, diffOverrides, stabilizationOverrides.
  • Lifecycle — quarantined, executionMode (procedural | agent).

Pass null to any override block to clear it. The API validates each referenced id is in the same repo before persisting.

Migration — tool consolidation (v0.3.x)

The tool surface was consolidated from ~56 discrete tools to ~21 by folding pure CRUD into the resource tools above. This is a breaking change for scripts that called the old per-operation tool names. The workflow verbs and the QuickStart chain (lastest_quickstart → lastest_quickstart_status → lastest_publish_share) kept their names and signatures. Map any removed names as follows:

Removed tool(s)Now call
lastest_health, lastest_list_jobs, lastest_get_joblastest_status { health | jobs | job }
lastest_list_repos, lastest_get_repo, lastest_create_repo, lastest_update_repo, lastest_get_repo_settings, lastest_update_repo_settingslastest_repo { action }
lastest_list_areas, lastest_create_area, lastest_update_area, lastest_delete_area, lastest_list_area_testslastest_area { action }
lastest_list_tests, lastest_get_test, lastest_update_test, lastest_delete_test, lastest_list_failing_testslastest_test { action }
lastest_list_storage_states, lastest_create_storage_state, lastest_delete_storage_statelastest_storage_state { action }
lastest_list_setup_scripts, lastest_get_setup_script, lastest_create_setup_script, lastest_update_setup_script, lastest_delete_setup_scriptlastest_setup_script { action }
lastest_get_diff, lastest_get_build_diffslastest_get_diffs { scope }
lastest_approve_diff, lastest_reject_diff, lastest_approve_build_diffslastest_decide_diff { approve | reject }
lastest_list_builds, lastest_get_build_status, lastest_review_build, lastest_get_test_runlastest_build { list | get | review }
lastest_list_build_shares, lastest_list_test_shares, lastest_revoke_sharelastest_share { list | revoke }
lastest_get_coverage, lastest_get_qa_summarylastest_insights { coverage | qa }
lastest_verify_view, lastest_get_change_maplastest_verify { view | change_map }

If you need the old names temporarily, pin a 0.2.x release of this package while you migrate.

CLI

lastest-mcp --url <url> --api-key <key>

The process communicates with the host client over stdio.

FlagDefaultMeaning
--url(required)Lastest instance the tools call.
--api-key—API key. Required for stdio; in http mode it is the fallback for requests that arrive without an Authorization header.
--transportstdiostdio for a local agent, http for a remote Streamable HTTP endpoint.
--port / --host9700 / 127.0.0.1Where to listen in http mode.
--access-levelfullread, write or full — how much of the tool surface to expose.

Requirements: Node.js 18+ and a reachable Lastest instance.

Remote (Streamable HTTP)

Most people want the endpoint your Lastest instance already serves:

https://your-lastest-instance/api/mcp

It speaks Streamable HTTP and accepts either an API key or an OAuth 2.1 connection, so an agent platform that only knows a URL (Salesforce Agentforce, ChatGPT, Claude web) can connect on its own — it discovers the authorization server from the WWW-Authenticate header, registers itself, and sends you through a consent screen. OAuth connections get a read or write subset of the tools; deleting things, revoking shares and publishing public links stay behind your own API key.

Run this package as its own HTTP server when you want the MCP endpoint on a separate host or port:

lastest-mcp --url https://your-lastest-instance --transport http --port 9700
# → POST http://127.0.0.1:9700/mcp with Authorization: Bearer <api-key>

This mode is API-key only; there is no OAuth in the standalone process.

Access levels

--access-level (and, on /api/mcp, the OAuth scope) picks the tool surface:

LevelSees
readProjects, tests, builds, diffs, coverage, verification, job status.
writeEverything in read, plus running tests, creating/updating tests and areas, and approving or rejecting visual changes.
fullEverything, including deletes, revoking shares and publishing public /r/ links. API key only.

Tools are filtered at registration, so a restricted connection never sees an action it cannot call.

Authentication

The server authenticates against Lastest's REST API (/api/v1/*) with a Bearer token. Manage and revoke keys from Settings → Runners & API Access in the Lastest UI.

Troubleshooting

SymptomFix
Failed to connect to Lastest at …Check the URL is reachable from this machine and that the API key is valid.
Lastest API error 401Token revoked or expired — generate a new one in Settings.
Tools don't appear in Claude CodeRun claude mcp list; if missing re-run claude mcp add. Restart the client.
Tools don't appear in Cursor / Windsurf / ClineConfirm the JSON config is valid and the client was fully restarted.

Local development

git clone https://github.com/las-team/lastest
cd lastest/packages/mcp-server
pnpm install
pnpm dev -- --url http://localhost:3000 --api-key <key>

Used with

  • Lastest — visual regression testing platform with screenshot diffs and AI test authoring
  • @lastest/runner — self-hosted runner so AI-triggered tests execute on your infra
  • Model Context Protocol — open standard powering tool use in Claude, Cursor, Windsurf, and others

Links

License

FSL-1.1-ALv2 — see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.