npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

gui-mcp

v1.1.1

Published

MCP server for the Gua runtime UI automation protocol.

Readme

gui-mcp

Virtual-time tools are get_clock, clock_install, clock_pause, clock_run_for, and clock_resume. They control only work explicitly connected to GuaClock, not engine-global time.

gui-mcp is the MCP server for the Gua runtime UI automation protocol.

It proxies MCP tool calls to a running Gua WebSocket bridge, so game runtimes keep owning the semantic UI tree while MCP clients consume the protocol.

Usage

bunx gui-mcp@latest mcp

The server connects to ws://127.0.0.1:8765 by default. Set GUA_BRIDGE_URL for another runtime adapter and GUA_ARTIFACT_DIR to control where recordings, baselines, and visual failure artifacts are written. The artifact directory defaults to .gua; tool-provided names are sanitized and cannot escape that directory.

Semantic actions

AI clients can inspect the tree and invoke all protocol v1 semantic actions:

  • get_ui_tree, wait_for_node, get_screenshot, get_logs
  • get_world_object_tree, find_world_objects, wait_for_world_object
  • click_node, focus_node, set_value, set_checked, select, scroll, press_key
  • run_test for a small wait/click sequence

When the bridge returns a requestId, action tools poll the correlated host completion event. Enqueue acceptance alone is not reported as completion.

Semantic action tool failures retain isError: true. Transport failures also include outcome, stage, and requestSent in the JSON text content:

  • not_sent / before_send: the action was not submitted to the WebSocket, including failure to connect during the UI preflight.
  • completion_unconfirmed / awaiting_receipt: the action was submitted, but its acceptance response was not obtained. bridgeCommandId identifies the submitted bridge command; a host requestId is not invented.
  • completion_unconfirmed / awaiting_completion: acceptance supplied a requestId, but the correlated completion could not be obtained. Both IDs are retained when available.
  • completion_unconfirmed / awaiting_observation: a legacy bridge returned a null receipt, but the subsequent UI observation could not be obtained.

Submission means the WebSocket send returned; it does not prove host receipt or execution. Completion polling and legacy post-action observation stay on that connection and stop on disconnect. A normal close, game log, or process exit code (including zero) does not confirm the operation. Do not automatically retry an unconfirmed action, particularly an exit action. Successful correlated completion, explicit bridge rejection, and the legacy null-receipt success format remain compatible.

World tools are read-only and use the observation profile fixed by the host. Set GUA_OBSERVATION_PROFILE=player on the native host for player-facing MCP use; tool arguments cannot elevate it to debug. find_world_objects accepts ID, kind, label, tag, parent scope, visibility, active, and primitive state criteria. It also accepts paired relativeToObjectId and nonnegative maxDistance, plus an optional positive limit, for deterministic nearby search in host world units. Query results include World snapshot metadata and aligned distances. There is deliberately no world action tool.

The same host profile also projects the Semantic UI Tree and authorizes UI actions before the bridge responds. In player mode, private or effectively hidden nodes are indistinguishable from missing nodes, field rules are applied before queries and waits, debug logs are omitted, and screenshots are disabled. Neither gui-mcp nor WebMCP tool schemas accept an observation-profile override.

Recording and replay

The existing replay tool is sequential: completion time is added before each recorded delay. It does not advertise Timed Segment, strict application time or same-tick application. The additive .NET Recording Timed Segment API uses a common-origin send schedule and an explicitly ordered, owner-scoped host path; see the timing contract.

start_recording records subsequent semantic action tools. stop_recording returns a recording.schema.json v1 document, and save_recording writes the last completed recording under <artifact-dir>/recordings.

replay_recording accepts an inline recording, a saved recording name, or the last completed recording. It supports recorded semantic wait conditions and request-correlated completion. Sensitive set_value steps store only a secretKey; replay values are supplied through the tool's in-memory secrets map and are not written to the recording. Coordinate fallback documents can be loaded, but replay rejects them by default; MCP automation stays on semantic targets.

Visual comparison

compare_screenshot compares the latest data:image/png;base64 screenshot with an explicit test name and renderer/OS variant. Baseline creation or replacement requires updateBaseline: true. A failure writes actual.png, expected.png when available, diff.png, and comparison.json under the artifact directory. get_visual_artifacts returns the latest manifest and artifact paths.