Skip to main content
Glama
thehzuo

web-gui-mcp

by thehzuo

web-gui-mcp

web-gui-mcp is a Python MCP server that compiles compact GUI2 ArtifactSpec JSON into design-system-aware HTML artifacts.

The v0.3 pipeline is:

ArtifactSpec
-> studio model compiler
-> CompilerOutput { strategy, view_tree }
-> validated ViewTree + derived legacy RenderPlan metadata
-> DesignSystemPack resolver
-> deterministic HTML compiler
-> static HTML or ui:// resource

The remote model sends compact semantic specs by default. The studio compiler chooses composition, while the server owns validation, design-system tokens, escaping, CSP, and deterministic runtime code.

Setup

uv sync
uv run pytest
uv run ruff check .
uv run python scripts/render_example.py examples/v0_3/implementation_plan.json /tmp/web-gui-plan.html
uv run python scripts/render_artifact_library_pages.py

Without uv:

python -m venv .venv
. .venv/bin/activate
pip install -e ".[dev]"
pytest
ruff check .
python scripts/render_example.py examples/v0_3/implementation_plan.json /tmp/web-gui-plan.html
python scripts/render_artifact_library_pages.py

Related MCP server: Scrapi MCP Server

Run The MCP Server

uv run web-gui-mcp

The server exposes:

  • render_artifact

  • get_artifact

  • patch_artifact

  • list_artifacts

  • export_artifact

  • get_artifact_schema

  • compile_view_tree

  • lint_view_tree

  • list_design_systems

  • get_design_system_summary

  • get_local_model_status

  • recommend_studio_model

  • download_studio_model

  • cancel_model_download

  • list_themes

  • preview_theme

  • retheme_artifact

  • rerender_artifact

It serves:

  • ui://gui2/runtime/v0.3.css

  • ui://gui2/runtime/v0.3.js

  • ui://gui2/artifacts/{artifact_id}

Render An Artifact

render_artifact accepts compact semantic v0.3 specs:

{
  "spec": {
    "v": "0.3",
    "artifact": "implementation_plan",
    "title": "Queue Backpressure Plan",
    "audience": "engineer",
    "density": "compact",
    "sections": [
      {
        "kind": "summary",
        "items": [
          { "label": "Risk", "value": "Medium", "tone": "warning" }
        ]
      },
      {
        "kind": "checklist",
        "title": "Acceptance",
        "items": [
          { "text": "Default response returns a ui:// resource" }
        ]
      }
    ]
  },
  "quality": "studio",
  "delivery": "mcp_app_resource"
}

Default delivery returns compact metadata plus a ui://gui2/artifacts/{artifact_id} resource URI. Use delivery = "static_html" or return_html_to_model = true only when the caller explicitly needs full HTML in the tool response.

Studio Compiler

v0.3 is studio-only. The configured model provider receives the compact ArtifactSpec plus a design-system summary and produces CompilerOutput: compact strategy metadata plus the authoritative view_tree. The server validates and lints the ViewTree, derives deprecated RenderPlan metadata only for compatibility, then renders deterministic HTML. There is no deterministic fallback in normal rendering: if the model provider is unavailable or validation fails after one repair retry, the render fails closed.

Model providers:

  • stub: test provider that returns known valid CompilerOutput.

  • openai: default provider; uses gpt-5.5 with medium reasoning via the OpenAI API.

  • ollama: optional local provider; posts to /api/generate and validates CompilerOutput JSON.

  • auto: resolves to OpenAI unless WEB_GUI_RENDERER_PROVIDER overrides it.

OpenAI configuration:

export OPENAI_API_KEY=...

The server also reads .env.local in the repo root. Do not commit that file.

Optional local fallback model:

ollama pull qwen2.5-coder:14b

recommend_studio_model also lists larger quality targets for stronger hardware: qwen3.6:27b and qwen3-coder-next:q4_K_M.

Design Systems

The bundled gui2.default pack includes:

  • light/dark modes

  • compact/normal/comfortable/presentation density layers

  • neutral_pro, dense_engineering, executive_brief, and editorial_research themes

  • editorial_gallery for reference-library pages with numbered sections and demo cards

  • component contracts for the built-in ViewTree nodes

  • recipes for plans, reviews, design-variant grids, research, dashboards, and editors

Figma import and Code Connect ingestion are intentionally out of scope for this pass. The design-system schemas keep provenance fields so those importers can be added later.

Connect To Codex

[mcp_servers.web_gui_mcp]
command = "uv"
args = ["run", "web-gui-mcp"]
cwd = "/Users/hzuo/src/gui-mcp"
startup_timeout_sec = 20
tool_timeout_sec = 60
enabled = true

Without uv:

[mcp_servers.web_gui_mcp]
command = "python"
args = ["-m", "web_gui_mcp.server"]
cwd = "/Users/hzuo/src/gui-mcp"
startup_timeout_sec = 20
tool_timeout_sec = 60
enabled = true

Safety

  • All model-provided text is escaped before rendering.

  • ViewTree nodes are allowlisted and validated with Pydantic.

  • Props named like raw HTML, CSS, scripts, srcdoc, or event handlers are rejected.

  • Bind paths must resolve against the validated ArtifactSpec.

  • Semantic data nodes such as timeline, checklist, and summary_strip must bind to compatible non-empty artifact data.

  • JSON state embedded in <script type="application/json"> escapes <, >, &, U+2028, and U+2029.

  • The renderer never executes model-generated JavaScript.

  • The only runtime script is deterministic server-owned code for copy/export and tabs.

Install Server
F
license - not found
C
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/thehzuo/gui-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server