Skip to main content
Glama
zhaohaijun734-arch

local-chrome-cdp-probe-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NODE_BINNoNode binary to use. Defaults to `node`.node
CHROME_PATHNoPath to any Chromium/Chrome executable to use for the browser.
PROBE_TIMEOUTNoWrapper timeout in seconds. Defaults to 60s; per-probe `--timeout-ms` defaults to 30s.60

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
probe_availableA

Preflight: check node + the bundled probe script + Chrome detection.

probe_pageA

Measure and/or screenshot a page in real local Chrome.

Args: url: full URL to probe (http/https/file) measure_js: in-page JS expression (IIFE returning an object) evaluated after load; its value comes back as measurements. Example that measures one element's real text width: (() => { const el = document.querySelector('#target'); if (!el) return null; const b = el.getBoundingClientRect(); const cs = getComputedStyle(el); return { x: Math.round(b.x), y: Math.round(b.y), w: Math.round(b.width), h: Math.round(b.height), usable_text_width: Math.round(el.clientWidth - parseFloat(cs.paddingLeft) - parseFloat(cs.paddingRight) - 2) }; })() viewport_w / viewport_h: emulated viewport (also set via Emulation.setDeviceMetricsOverride, so it holds regardless of the Chrome window size) screenshot: capture a PNG and return it as base64 login: "user:pass" - a JSON POST login executed IN the page context before measuring (httpOnly cookies are fine - the page fetch carries them). Requires the target app to have a JSON login API. login_url: login endpoint path, default /api/auth/login login_body: JSON template with %u / %p placeholders, default {"username":"%u","password":"%p"} timeout_ms: overall probe timeout

Returns: {ok, origin, viewport, login_status, measurements, png_base64}

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct roles: probe_available is a preflight/environment check (node, bundled script, Chrome detection) while probe_page performs the actual measurement/screenshot work. There is no overlap in purpose, so an agent can pick correctly without hesitation.

Naming Consistency5/5

Both tools use the same snake_case, 'probe_' prefixed pattern (probe_available, probe_page), which reads as a deliberate, predictable namespace. No mixing of conventions or verb styles.

Tool Count3/5

Two tools is on the thin side, though the server's scope (a local Chrome CDP probe) is intentionally narrow. Much of the capability is folded into probe_page's many parameters, so the count is defensible but borderline minimal.

Completeness4/5

The surface covers preflight, navigation, viewport emulation, authenticated JSON login, arbitrary in-page measurement, and screenshots, which is solid for the stated purpose. Gaps exist around multi-page/batch probing, wait conditions (network idle, selector waits), and console/error capture, but the free-form measure_js escape hatch lets agents work around most of them.

Maintenance

ActivityMaintained
ResponsivenessNo issues