# segentic-lab/periscope-mcp [Health: Active]

**Category:** 📂 Browser Automation  
**Repository:** https://github.com/segentic-lab/periscope-mcp  
**GitHub Stars:** 10  
**Views:** 2  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/segentic-lab-periscope-mcp

## Description
Website & web-app testing built for AI agents rather than raw browser bindings: 66 Playwright tools with hard assertions, auto form-fill, persistent authenticated sessions (incl. interactive login for 2FA/SSO), network mocking, real INP, and accessibility/SEO/GEO (llms.txt, AI-crawler access, WebMCP) + Lighthouse audits.

## Tools
Capabilities this server exposes over MCP:

- **create_project** — Create a new testing project
- **list_projects** — List all projects
- **get_project** — Get project details
- **delete_project** — Delete project + data
- **set_form_login** — Configure username/password form login
- **set_basic_auth** — Configure HTTP Basic Auth
- **set_cookies** — Inject session cookies
- **login_project** — Execute login using configured auth
- **interactive_login** — Open a **visible** window to log in by hand (2FA/SSO/CAPTCHA), then `save_login
- **save_login** — Capture the manual-login session; the project then runs authenticated + headless
- **copy_auth** — Copy auth config + session state between projects
- **test_url** — Test a single URL (screenshot + checks)
- **crawl_project** — Discover all pages from base URL
- **test_project** — Full audit: crawl + test all pages
- **get_screenshot** — Get screenshot file path
- **list_reports** — List saved test reports
- **get_report** — Read a report file
- **session_report** — HTML+PDF dossier of every tool call this run — args (redacted), verdicts, timings, screenshots
- **open_session** — Open persistent browser session (`headed=true` for a visible window)
- **close_session** — Close session and free resources
- **list_sessions** — List all active sessions
- **set_viewport** — Switch viewport size (8 device presets or custom w/h)
- **select_page** — Adopt a popup/new tab (OAuth, target=_blank) as a new drivable session
- **click_element** — Click element (`force=true` bypasses overlays)
- **fill_form** — Fill form fields, optionally submit
- **select_option** — Native `<select>` or custom dropdown (Radix/shadcn) — auto-detects
- **interact_and_test** — Multi-step workflow with 25 actions (see below)
- **get_page_elements** — List matching elements with attributes
- **flow** — Save / run / list / delete named step sequences (reusable workflows)
- **scroll_into_view** — Scroll element into viewport without clicking
- **test_form_validation** — Analyze form validation messages
- **compare_screenshots** — Pixel diff between two screenshots
- **visual_check** — Named visual-regression baselines: set once, check for a hard pass/fail
- **test_responsive** — Test at mobile/tablet/desktop viewports
- **check_links** — Comprehensive link checker (internal + external)
- **measure_interaction** — Measure click-to-result timing
- **get_table_data** — Parse HTML table into structured JSON (headers → cell values)
- **get_toast_messages** — Capture visible toast/notification messages
- **run_lighthouse** — Real Google Lighthouse audit: 0-100 scores, Core Web Vitals, failed audits (needs Node.js)
- **get_interaction_log** — Export real **INP** time series (per interaction) as JSON/CSV + percentile stats
- **screenshot_session** — Quick screenshot of current page state
- **run_checks_on_session** — Run checks on active session (no new page)
- **navigate_session** — Browser history: back, forward, or reload
- **handle_dialog** — Accept/dismiss JS alert/confirm/prompt (call BEFORE trigger)
- **upload_file** — Set file(s) on `<input type="file">
- **wait_for_network** — Wait for specific API URL pattern to complete
- **wait_for_gone** — Wait for element to disappear (modal close, spinner gone)
- **get_page_html** — Raw outerHTML of elements, or full page HTML
- **intercept_network** — Mock API responses (test error/empty/loading states)
- **clear_intercepts** — Remove network mocks (all, or by pattern)
- **get_local_storage** — Read localStorage or sessionStorage
- **set_local_storage** — Write to localStorage or sessionStorage
- **select_iframe** — Switch into iframe content (returns new session)
- **get_computed_style** — Get actual rendered CSS values
- **emulate_network** — Throttle network: `slow_3g`, `fast_3g`, `offline`, `reset
- **test_dark_mode** — Toggle `prefers-color-scheme` dark/light
- **download_file** — Click a trigger and capture the downloaded file (path, sha256, text preview)
- **record_session** — Record workflow as video
- **test_keyboard_navigation** — Tab-order and focus indicator audit
- **get_console_errors** — Get all console errors/logs (passive monitoring)
- **assert_condition** — Programmatic pass/fail: text_contains, element_exists, url_contains, etc.
- **assert_all** — Batch assertions — every verdict in one call, no early abort
- **get_page_map** — Semantic page map: roles, names, states + ready selectors in one call
- **find_element** — Smart finder by text, tag, role, or proximity to another element
- **auto_fill_form** — Auto-detect fields, infer types, fill with test data. One call = many fills.
- **get_network_log** — All captured network requests (URL, status, method, type)
- **get_response_body** — Actual API response body text (diagnose 400/500 errors)
- **page_state** — Named checkpoints: snapshot / restore / diff page state
- **get_cookies** — Read all cookies from session
- **check_color_contrast** — WCAG AA/AAA contrast ratio checks on text elements
- **web_search** — Search DuckDuckGo: titles + URLs + snippets
- **web_fetch** — Fetch URL → readable **Markdown** (or text/html); `render=true` runs JS in headless Chromium (+ `project` for behind-login), `contains` gates the fetch, `save` writes a clean `.md` artifact
- **describe_tools** — Structured catalog of all tools with workflows and tips
- **periscope_system** — Install status + update check/apply + fetch current AGENTS.md

## Claude Desktop Quick Installation
No confirmed install details yet, so no config is published. Follow the setup steps in the repository above.

## Documentation

## What segentic-lab/periscope-mcp MCP server does

segentic-lab/periscope-mcp MCP server is designed for agent-driven QA of static sites, single-page applications, and authenticated web apps. It exposes Playwright-backed operations through MCP, but organizes them around testing tasks rather than only low-level browser bindings. Agents can create projects, configure authentication, discover pages, run checks, interact with controls, and retrieve saved evidence.

Testing can cover a single URL or an entire project. Results may include structured verdicts, screenshots, captured response bodies, console and network information, reports, and session dossiers. The documented checks include accessibility, SEO, visual and functional issues, responsive behavior, GEO readiness, Lighthouse results, and interaction-based INP measurement.

## How it works

An MCP client starts the server over stdio. The server dispatches tool calls to Playwright and headless Chromium, while maintaining project data, browser sessions, screenshots, videos, and reports. Crawling uses same-domain page discovery, and persistent sessions allow later actions to reuse an authenticated browser context.

Authentication can be configured with a form login, HTTP Basic Auth, or injected cookies. For 2FA, SSO, or CAPTCHA, an agent can open a visible browser window, complete the login manually, and save the resulting session for later headless runs. Sessions can also be opened, closed, listed, resized, and switched to a popup or new tab.

The interaction model supports individual actions and grouped workflows. Agents can click elements, fill forms, select native or custom dropdowns, scroll to elements, inspect matching page elements, and run multi-step sequences. Named flows can be saved, executed, listed, or deleted for reuse.

## Setup and configuration

The documented prerequisites are Python 3.11 or newer and Playwright with Chromium. The repository provides an installation script that can install dependencies, create a virtual environment, install the Playwright browser, run a headless self-test, and generate an MCP configuration file with absolute paths.

On Debian or Ubuntu, the quick installation path may install system prerequisites. Options are available to use an existing Chromium or Chrome binary through `CHROMIUM_PATH`, skip dependency installation, or run without interactive confirmation. Other operating systems receive platform-specific manual commands from the installer. An update script refreshes source, dependencies, browser components, and generated configuration without removing the runtime data directory.

## Tools and capabilities

The listed tool groups support:

- Project creation, lookup, listing, and deletion.
- Form, Basic Auth, cookie, interactive, and copied authentication state.
- Single-page tests, same-domain crawling, full project audits, screenshots, and saved reports.
- Persistent browser sessions, viewport presets or custom dimensions, popup adoption, and session cleanup.
- Element inspection, clicks, form filling, dropdown selection, scrolling, and reusable flows.
- Network interception, captured diagnostics, screenshots, videos, state information, and structured test results.

## Limitations and notes

segentic-lab/periscope-mcp MCP server runs through stdio and requires a local Python and Chromium environment. Authentication data, project files, screenshots, reports, and other runtime artifacts are stored in the repository's data directory, so that directory contains sensitive information when credentials or authenticated sessions are used.

The crawler is described as same-domain only. Interactive login requires a visible browser window, while saved sessions can subsequently run headlessly. The material distinguishes this project from general browser-control servers: it is intended for testing and reporting, not merely browsing or extracting page content. The repository says it works with any MCP client that supports its stdio connection.

_Full upstream README: https://allmcps.com/mcp/segentic-lab-periscope-mcp/readme_

