Mmcp.market

peek MCP server

by Cubenest·io.github.Cubenest/peek-mcp·v0.1.0-alpha.24

Exposes recorded browser sessions (rrweb DOM, console, network) to AI coding agents, fully local

B74/100grade B
What users say
No reviews yet
Be the first
Safety scan
B74/100

full report

Adoption
Growing

7 stars51 downloads/wk

Reviews

Write one

Nobody has reviewed peek yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

peek tools (19, 2 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • clear_highlightwrite action

    Remove the highlight overlay previously drawn by suggest_element in the user's live browser. Available at per-origin permission Level 2 (Suggest) and above. Idempotent. Recorded to ~/.peek/audit.log.

  • execute_actionwrite action
  • generate_playwright_repro

    Generate a runnable Playwright test (TypeScript) reproducing the user actions in a session: clicks, typing, navigation, and <select> changes. Optionally limit to a [startTs, endTs] epoch-ms window. Pass errorId (from get_session_console_errors) to seed a console-error-absence regression assertion — the generated test will capture console errors and assert the given error is not reproduced. Returns

  • get_dom_snapshot

    Reconstruct the page DOM as it existed at a timestamp (or a selector subtree within it) and return it as HTML. Applies structural/attribute/text mutations on top of the nearest full snapshot at or before ts. Returns JSON { baseSnapshotTs, mutationsApplied, html }; html clipped to 24000 chars. Fails if no full snapshot exists at or before ts.

  • get_element_detail

    Given a `ref` from get_page_view, return the FULL masked detail of that single element

  • get_page_view

    Return a compact, masked snapshot of the user's LIVE page as a list of interactive/labeled elements, each with a stable `ref` (e.g. e5). Pass a `ref` to execute_action / request_authorization (click/type/scroll/enter/dblclick) instead of authoring a CSS selector — deterministic and far cheaper than reading get_dom_snapshot's HTML. Refs expire on navigation; re-call after navigating. Available at p

  • get_session_console_errors

    List console error messages recorded in a session, oldest first. Each row has a numeric id to pass to get_user_action_before_error. Returns JSON rows ({ id, ts, level, message, stack }); message clipped to 500 and stack to 800 chars. For error counts at a glance, use get_session_summary first.

  • get_session_network_errors

    List failed or notable network requests in a session (HTTP status >= statusGte, or a transport-level network error), oldest first. Returns JSON rows ({ id, ts, method, url, status, statusText, resourceType, durationMs, errorText }); url and errorText clipped to 300 chars.

  • get_session_summary

    Get an LLM-readable narrative summary of one session — your orientation for debugging what already happened: pages visited, click/input/navigation counts, and error counts. Use this first for an overview before drilling into get_session_console_errors / get_session_network_errors. Returns a structured JSON summary.

  • get_user_action_before_error

    Pre-assembled causal chain for a console error: the user actions, DOM mutations, and network errors in the window before it, merged into one time-ordered timeline with a deterministic narrative — to explain how the error was triggered. Returns JSON { errorId, errorTs, error, windowMs, actions, domMutations, networkErrors, timeline, narrative, truncated }. Get errorId from get_session_console_error

  • list_recent_sessions

    List the user's recorded browser sessions, newest first — the entry point for debugging what already happened (the get_session_* and DOM tools). Returns compact JSON rows ({ sessionId, origin, url, title, startedAt, ... }); free-text fields are clipped (origin 100, url 300, title 200 chars). If the MCP client scoped roots to specific origins and no origin filter is given, results are restricted to

  • query_dom_history

    Timeline of DOM changes in a session. Two modes: (1) selector mode — pass `selector` to track one node's attribute/text history (use `op` to restrict). (2) window mode — pass `ts` (and optional `windowMs`) instead, to get ALL DOM changes in [ts - windowMs, ts] with per-change `target` hints, no selector needed. Returns JSON { selector, changes } or { ts, windowMs, changes }.

  • request_authorization

    Ask the user to authorize a browser action via the side-panel banner (Level-3 act-with-confirm). On Allow, returns a one-shot confirmToken to pass to execute_action; on Deny, returns the denial. Every call - allowed or denied - is recorded to ~/.peek/audit.log. Use before execute_action when the origin is at permission Level 3, or to pre-authorize.

  • request_pairing

    Initiate a connector-pairing handshake: present a pairing code and receive a one-shot secret on approval. The connecting client name is taken from the MCP connection identity. Returns JSON { approved, secret? }. Every attempt is recorded to ~/.peek/audit.log; the secret is never written to the log.

  • request_user_input

    Pause the agent and hand the keyboard back to the user for ONE editable, non-destructive field (or a free-text prompt), then resume. Requires the origin at Level 4 with the control shield up. Blocks until the user clicks Done, a timeout fires, or the run is stopped. Returns { resumed:true, value? } or { resumed:false, reason }. The returned value is only included when readBack:true and the field i

  • search_sessions
  • set_intent

    Set the agent's status banner shown on the control shield (e.g. 'Applying to Senior Frontend · step 2/4'), so the user can follow what you're doing. Up to 80 chars, plain text. Requires the origin at Level 4 with the shield up; auto-allowed. Recorded to ~/.peek/audit.log. Advance the step only after the previous step verified (re-read it took); on a failure, set a 'stopped — <what> didn't take' st

  • suggest_element

    Draw a non-destructive highlight overlay on a CSS selector in the user's live browser, with an optional label, to point something out. Available at per-origin permission Level 2 (Suggest) and above; it never clicks, types, or navigates. The overlay persists until clear_highlight is called. Every call is recorded to ~/.peek/audit.log.

  • verify_audit_log

    Verify the integrity of peek's local action audit log (~/.peek/audit.log) — the append-only, hash-chained record of every browser action peek authorized or attempted. Returns JSON { logPresent, status, entriesVerified, prelude, headPresent, brokenAtLine?, expected?, got?, gaps?, summary }. status is one of intact | broken | truncated | tail-tampered | prefix-tampered | incomplete-final | gaps | he

Public scan report

scanner v0.1.9 · 2026-09-26 · same rubric, same numbers if you re-run it

2 medium
  • Code scan79 source files scanned15/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 78 days ago12/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year9/10

Findings (2)

  • mediumnpm install lifecycle script presentinstall.script
  • mediumnpm install lifecycle script presentinstall.script
    package.json: …t": "vitest run --passWithNoTests", "postinstall": "node ./scripts/postinstall-guard.mjs" …
Overall 74/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

What the publisher says

From the peek repository's README, as published. We do not edit it. Read it on GitHub

&nbsp;&nbsp;

rrweb-stack

Two OSS products on one rrweb-based substrate. Both ship as npm packages today.

Above: npx @tracelane/cli init in a real WebdriverIO project — detect runner, install, edit wdio.conf.ts, ignore reports dir.

Above: peek sessions list then peek sessions show ... --format markdown — a recorded browser session as queryable structured output, AI-ready.

What's where

tracelane

Docs: tracelane.cubenest.in (source under apps/tracelane-docs/). The tracelane-wdio README is the right starting point.

peek

Docs: peek.cubenest.in (source under apps/peek-docs/).

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Install directly

Runs npx -y @peekdev/mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add peek-mcp -- npx -y @peekdev/mcp
Add to Cursor

peek: common questions

Is peek MCP server safe?
Mostly: it is graded B (74/100). Read the peek safety report
How do I install peek?
It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
Does peek need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is peek maintained?
The last commit was 78 days ago (2026-07-10). The latest release is v0.1.0-alpha.24.
What can I use instead of peek?
Servers from other publishers that do the same job: Zenrows MCP server, Hwatu MCP server and Feedthrough MCP server. Compare all peek alternatives.

Alternatives to peek

Same job from other publishers: the closest match first, then the best rated.

All peek alternatives →
  • Zenrows
    Zenrows MCP server — Fetch, Extract, Batch, and Browser Sessions for AI coding assistants
    A
  • Hwatu
    Verification browser for coding agents: headless WebKit, DOM eval, screenshots, pixel-diff.
    A
  • Feedthrough
    Debug bridge inside your web app: an agent reads the DOM, console and network. Any browser.
    A
  • Slack MCP Server
    Catch up on Slack without reading it. Unreads, threads, search. Browser-session or hosted OAuth.
    A
  • mac-control-mcp
    Native Swift macOS automation — 153 tools: AX, EventKit, voice, browser DOM, undo.
    B

More from Cubenest →