Skip to main content
Glama
jiawei686

jev-ultrafast-mcp

by jiawei686

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
JEVMCP_MODENoMode for browser: 'launch' or 'attach'. Default: launch.
JEVMCP_CHROMENoChrome/Chromium/Edge/Brave executable. Default: auto-detected.
JEVMCP_CDP_URLNoCDP endpoint URL when JEVMCP_MODE=attach. Default: http://127.0.0.1:9222.
JEVMCP_SANDBOXNo'auto' retries with --no-sandbox if the browser aborts on startup. Default: auto.
JEVMCP_ALLOW_JSNoSet to '1' to enable eval and js assertions. Default: 0.
JEVMCP_HEADLESSNoSet to '0' for a visible window. Default: 1.
JEVMCP_MAX_TEXTNoVisible-text cap per observation. Default: 6000.
JEVMCP_STATE_DIRNoDirectory for profile, macros and screenshots. Default: ~/.jev-ultrafast-mcp.
TYPESAFE_API_KEYNoOptional; enables the browser_goal tool using TypeSafe.
JEVMCP_FOREGROUNDNoSet to '1' to activate the owned tab. Default: 0.
JEVMCP_MAX_ACTIONSNoElement-table cap applied by usefulness. Default: 250.
JEVMCP_PROFILE_DIRNoPersistent profile directory for staying logged in. Default: ~/.jev-ultrafast-mcp/chrome-profile.
TEXT_MODEL_API_KEYNoOptional; only used for typing in browser_goal mode.
JEVMCP_DENY_DOMAINSNoComma-separated blocklist of domains. Default: none.
JEVMCP_ALLOW_DOMAINSNoComma-separated list of allowed domains; navigation elsewhere is refused. Default: all.
JEVMCP_ALLOW_UPLOADSNoSet to '0' to disable the upload op. Default: 1.
JEVMCP_SETTLE_POLL_MSNoHow often to re-read while waiting (milliseconds). Default: 120.
JEVMCP_SETTLE_TIMEOUTNoHow long to wait for a late-rendering page to show controls (seconds). Default: 4.0.
JEVMCP_CONFIRM_PATTERNSNoComma-separated patterns (e.g., pay, delete, unsubscribe) that require confirmation. Default: pay / delete / unsubscribe etc.

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
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
browser_openA

Open a URL in a new owned tab and return the element table.

Use hint to restate the goal in one line; it is echoed back so the next step has the goal in context without re-reading this call.

browser_observeA

Re-read the page: new element table, or a delta if little changed.

mode: "auto" (delta when possible), "full" (whole table, e.g. after a big change), "delta" (force). include_json=True appends a machine-readable copy of the element table when you want to plan over it programmatically.

browser_actA

Execute one or more ops in order, then return a delta observation.

Batch ops into a single call — each call is a round trip.

op fields click ref (ref may be "e12", or "e12" of a combobox to open it) type ref, text, [clear=true], [submit=false] select ref, value (option value or label) toggle ref, [state] (checkbox/radio/switch; no state = flip) hover ref upload ref, path | paths[] keys key ("Enter", "Meta+A", "ArrowDown") | keys[] scroll [dir=down|up|left|right], [amount=600], [ref] nav url back | forward | reload wait [ms=500] wait_for_ref ref, [timeout_ms=8000] wait_for_text text, [timeout_ms=8000] wait_for_load [timeout_ms=20000] screenshot [path], [full=false], [format=jpeg] tab action=list|new|switch|close, [index], [url] eval js (only when JEVMCP_ALLOW_JS=1)

Actions matching the confirmation rules (pay, delete account, …) return needs_confirmation; re-send that op with "confirm": true to proceed.

browser_assertA

Verify the current page against deterministic checks. Returns pass/fail.

checks {"type": "url_matches", "pattern": "/checkout"} {"type": "url_contains", "text": "/orders/"} {"type": "title_matches", "pattern": "Order"} {"type": "text_contains", "text": "Thanks", "regex": false} {"type": "text_absent", "text": "Error"} {"type": "element_exists", "role": "button", "name": "Continue"} {"type": "element_gone", "ref": "e12"} {"type": "value_equals", "ref": "e7", "value": "Zurich"} {"type": "checked", "ref": "e9", "state": true} {"type": "count_at_least", "role": "link", "min": 3} {"type": "js", "expr": "document.title.length > 3"}

browser_macroA

Record, replay, list, or delete a macro — a discovered path with no model calls.

action="record_start" begin capturing ops (needs the session to be driving the task) action="record_stop" finish and save under name action="run" replay name; params fills {{placeholders}} in text/url action="list" | "inspect" | "delete"

Replay re-resolves each step by role + name against a fresh observation and refuses to act when the best match is weak or ambiguous.

browser_goalA

Hand a whole browser task over. Needs a decision-model key.

This is the entry point for browser work, not an optimisation on top of the manual loop. Pass url and the goal and the page is opened and driven to the end here: one call, one host turn, instead of a turn per click.

Leave url out when the task continues from a page an earlier step left behind; the goal then runs against whatever the session is already showing.

Each step costs one request (operation + every target head in a single speculative fan-out). verify runs browser_assert-style checks on the final page, so the result is a fact rather than a model's claim of success.

The key is TYPESAFE_API_KEY, or OPENROUTER_API_KEY when TYPESAFE_BASE_URL points at https://openrouter.ai/api/alpha/decisions -- same model, same contract, no TypeSafe account needed. Reading a page needs no key at all, so when no key is set the handoff is unavailable while browser_open, browser_observe and browser_act keep working.

browser_tabsA

List, open, switch to, or close tabs.

Tabs opened by the page show up in observations on their own. To act on one, prefer target_id (the #handle printed by action="list"): indexes are positional and get renumbered whenever the tab list changes, so an index read a call ago can address a different tab. index is a convenience when listing and acting in the same breath; omit both to mean "the current tab".

browser_sessionsA

List open sessions (independent owned tabs).

browser_closeA

Close a session's tab. Set shutdown_browser=True to stop the browser too.

Only a browser this server launched is stopped. In attach mode the browser is yours: shutdown detaches and leaves it, and every other window, running.

browser_doctorA

Report environment: browser binary, connection, keys, and policy envelope.

Call this when anything behaves unexpectedly — it separates "no browser" from "blocked by policy" from "no key".

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have clearly distinct responsibilities, but browser_sessions and browser_tabs overlap in listing managed tabs, and browser_tabs also handles opening/closing which overlaps with browser_open and browser_close. The descriptions help disambiguate, so this is only a minor concern.

Naming Consistency3/5

All tools share the browser_ prefix and snake_case style, but the second word mixes verbs (open, observe, act, assert, close) with nouns (sessions, macro, goal, tabs, doctor). The naming is readable and predictable enough, though not a consistent verb_noun pattern.

Tool Count4/5

Ten tools is a reasonable, well-scoped count for a browser automation server. There is slight redundancy between session/tab management tools, but the overall count is neither bloated nor too thin.

Completeness5/5

The tool set covers the full browser automation lifecycle: opening pages, observing, acting, asserting, tab management, macros, autonomous goal completion, cleanup, and diagnostics. No obvious dead ends or missing core operations are apparent.

Maintenance

ActivityMaintained
ResponsivenessNo issues