Record a browser flow once with a model, then compile it to a Playwright spec that needs no model.
MCPpedia last refreshed this data
io.github.restspace/sitelooper is an MCP server that record a browser flow once with a model, then compile it to a Playwright spec that needs no model. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 89/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"io-github-restspace-sitelooper": {
"args": [
"-y",
"sitelooper"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Record a browser flow once with a model, then compile it to a Playwright spec that needs no model.
Run this in your terminal to verify the server starts. Then let us know if it worked - your result helps other developers.
npx -y 'sitelooper' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked sitelooper against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in browser
Open-source web scraper for AI agents with scrape, crawl, and map tools
Firecrawl, the context API for AI agents: search, scrape, interact with the web, plus paper search.
Search-first MCP server for JavaScript reverse engineering: 735 tools across 36 domains.
Extract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡
MCP Security Weekly
Get CVE alerts and security updates for io.github.restspace/sitelooper and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Write browser tests in plain English. Run them in CI as plain Playwright. Repair them automatically when the app changes.
sitelooper is a CLI with a small LLM agent inside. You give it one instruction at a time, such as
"sign in as ops@example.com, create a ticket titled 'k7 Bench' and report its id". It works the
live browser and returns one verified result. Every step it gets right is compiled into a
procedure that replays with no model, no tokens and no cost, and can be exported as a
standalone @playwright/test spec.

Recorded once against the in-repo repair-desk app (24s, 28s and 42s with the agent driving). The app is reset, the same flow replays in 16s with zero model calls, and then the app's own state is queried.
sitelooper build emits a Playwright spec with effect checks on every step. It
runs in CI with no sitelooper daemon and no model.Ten self-hosted apps, each job done once to record it, then twice more with no model, then as a compiled Playwright spec. The comparator is agent-browser driven by an LLM, which redoes the job on every run. Every run was scored against the app's own database or API, never against the tool's own report. September 2026:
| app | sitelooper, first run | sitelooper replay ×2 | compiled spec | agent-browser, GPT-6 Luna | agent-browser, GPT-6.1 Sol |
|---|---|---|---|---|---|
| repair-desk | 6/6 · $0.02 · 187s | 6/6 · $0 · 52s | 6/6 | 6/6 · $0.01 | 6/6 · $0.29 |
| Odoo | 6/6 · $0.07 · 589s | 6/6 · $0 · 193s | 6/6 | 3/6 · $0.02 | 6/6 · $0.37 |
| Grafana | 6/6 · $0.09 · 615s | 6/6 · $0 · 145s | pass | 5/6, then 6/6 · $0.04 | 4/6 · $0.33 |
| Kanboard | 6/6 · $0.05 · 357s | 6/6 · $0 · 56s | 4/4 + 2 report-only | 6/6, duplicate comment · $0.005 | 6/6 · $0.23 |
| OpenProject | 7/7 · $0.05 · 377s | 7/7 · $0 · 93-132s | 5/5 + 2 report-only | 7/7, duplicate comment · $0.02 | 7/7 · $0.38 |
| Gitea | 7/7 · $0.04 · 324s | 7/7 · $0 · 76s | 5/5 + 2 report-only | 6/7 · $0.09 | 7/7 · $0.25 |
| Vikunja | 7/7 · $0.04 · 270s | 7/7 · $0 · 76s | 5/5 + 2 report-only | 7/7, duplicate comment · $0.01 | 7/7 · $0.28 |
| EspoCRM | 7/7 · $0.06 · 454s | 7/7 · $0 · 165s | refused to compile | 1/7 · $0.02 | 7/7 · $0.23 |
| Snipe-IT | 7/7 · $0.04 · 298s | 7/7 · $0 · 78s | 5/5 + 2 report-only | 1/7 · $0.02 | 7/7 · $0.25 |
| Ghost | 7/7 · $0.02 · 142s | 7/7 · $0 · 46s | 5/5 + 2 report-only | 7/7 · $0.005 | 7/7 · $0.10 |
Report-only objectives ask a run to state a value in its final report, which a compiled spec does not write.