Skip to main content
Glama
mcp-visual-design-studio

mcp-visual-design-studio

by borystam

MCP Visual Design Studio

A local design workspace for you and your agent. Make one-pagers, sales sheets, brochures and visual reports together. Your agent supplies the model and conversation; Studio supplies a persistent, editable document and a localhost browser editor.

Studio editor with the original Fieldwork example

Watch the short editing demo · Release · Compatibility and test evidence

Install the release

Use Node.js 24 LTS (Node 22.12+ also supported). Download and install the release tarball; this version is not published to the npm registry.

npm install -g https://github.com/borystam/mcp-visual-design-studio/releases/download/v0.2.0/mcp-visual-design-studio-0.2.0.tgz
mcp-visual-design-studio doctor
mcp-visual-design-studio editor

For PDF and PNG exports, provision Chromium once, separately from your MCP connection:

mcp-visual-design-studio setup-export
# Linux machines missing browser libraries:
mcp-visual-design-studio setup-export --with-deps

Ordinary editing, standalone HTML and editable bundle exports work without Chromium. No browser is downloaded during the MCP handshake. No model API key is required.

Related MCP server: cowrite

Connect an agent

After the installation above, add this to a host that supports local stdio MCP:

{
  "mcpServers": {
    "visual-design-studio": {
      "command": "mcp-visual-design-studio",
      "args": ["mcp"]
    }
  }
}

For Codex, add to ~/.codex/config.toml:

[mcp_servers.visual_design_studio]
command = "mcp-visual-design-studio"
args = ["mcp"]
startup_timeout_sec = 30
tool_timeout_sec = 120

For a chosen workspace, append "--workspace", "/absolute/path/to/designs" to args (on Windows, use a JSON-escaped absolute Windows path). Graphical hosts may need the full executable path from command -v mcp-visual-design-studio or where mcp-visual-design-studio. See host setup.

Try this in your connected agent:

Open Visual Design Studio. Create a three-page brochure using the Gather template. Make the brand deep blue and warm cream. Inspect the saved document before editing; render each page, check the image and overflow diagnostics, and give me the localhost editor link. Wait for my edits before exporting.

Open the returned private localhost link. Change the text in the inspector and save it; upload an image; drag or nudge an element; leave an anchored comment. Ask your agent to read the selection and comments, make a targeted edit and render it. Changes appear live, without reloading.

Browser comments do not wake an idle agent. Ask the connected host to read them. Studio contains no integrated chat, model routing or cloud service.

Install the companion Codex skill

The MCP Visual Design Studio skill teaches agents the persistent document workflow: targeted edits, revision conflicts, design-system imports, visual checks and exports. Install the app and register its MCP server first; the skill supplies instructions, not the server.

From a clone of this repository, copy the complete skill folder into Codex's user skill directory:

mkdir -p "$HOME/.agents/skills"
cp -R skills/mcp-visual-design-studio "$HOME/.agents/skills/"

For an existing installation, replace that skill folder with the updated copy. Codex discovers local skill changes automatically; restart it if the skill does not appear. Start a fresh session after adding the MCP configuration. See the official skill setup documentation.

Invoke it explicitly with $mcp-visual-design-studio, or ask Codex to use MCP Visual Design Studio for an editable brochure, one-pager or visual report. For example:

Use $mcp-visual-design-studio to create an editable service sheet using my workspace design system. Render and inspect it, then give me the editor link.

The skill includes portable instructions and generic examples. Local configuration, document content and private editor links stay outside the skill.

What is included

  • Blank canvas plus Fieldwork service sheet, Gather three-page brochure, and Signal two-page visual report. All examples are original and generic.

  • Multiple pages, custom dimensions, orientation and ordering; text, rich text runs, lists, explicit links, images, crop/fit, shapes, rules, tables and groups.

  • Positioned elements and stack/grid groups; selection, drag, resize, keyboard nudge, align, duplicate, delete and layer ordering.

  • Reusable local brand kits, plus versioned design systems with named tokens, custom fonts, guidelines, component variants and editable content slots. Import DTCG token JSON, CSS, static HTML, source ZIPs or portable Studio systems; review before saving or making a system the workspace default.

  • Element comments, selection context, live browser/agent synchronization, retained text drafts and explicit conflict resolution.

  • Durable revision history, guarded operation undo/redo, named snapshots and side-by-side variation previews.

  • PDF, PNG, self-contained HTML, and portable editable .vds.json project bundles. Exports use a requested saved revision, never an in-flight document.

The editor retains native text and structured elements. Examples contain no flattened design artwork. The first release does not include cloud accounts, remote multiplayer, animation, advanced vector tools, arbitrary source-code execution, office-file reconstruction or built-in model chat.

Bring your own design system

Open Design systems, import your token JSON, CSS, HTML or source ZIP, and review the generated specimen and warnings. Attach missing fonts/images, check the role assignments, then Save version and Use as workspace default. New documents inherit that exact version; existing documents offer an application preview with explicit token mappings. Saved versions are immutable, and each document embeds its system for offline exports and bundle transfers.

Imported HTML uses a bounded static subset and remains editable. React/JavaScript source is identified for translation by your connected agent; it is never executed. This is not a lossless website, React, Figma or office-file converter. Custom WOFF2, WOFF, TTF and OTF fonts—including explicit Unicode subsets—are embedded in portable output; rendering checks flag missing glyphs.

Design-system library with editable tokens and a live specimen

Design systems and supported token formats · Porting Claude Design exports

Local storage and lifecycle

Projects live in ~/MCP Visual Design Studio by default, outside the package and npx cache. Set MCP_STUDIO_WORKSPACE or pass --workspace to choose another directory. Back up this directory; it contains your documents, history, images, fonts, brand kits, versioned design systems and exports. Stop the service before taking a filesystem-consistent backup.

mcp-visual-design-studio editor --workspace "/absolute/path/to/designs"
mcp-visual-design-studio editor --workspace "/absolute/path/to/designs" --no-open
mcp-visual-design-studio stop --workspace "/absolute/path/to/designs"

One loopback service owns each canonical workspace. Multiple agents and browsers reconnect to it. Disconnecting an agent leaves it running; explicitly stop it when finished. Stopping refuses while an export is active. An upgrade requires stopping the old service and restarting with the new package; documents remain in the workspace.

The local editor URL is an access credential; share it only with trusted local users. There is no telemetry or automatic document upload. Data sent to an agent follows that host's data and model policies. See privacy and boundaries.

Build, verify and contribute

npm ci
npm run check
npm run build
npx playwright install chromium
npm test
npm run test:e2e
npm run test:pack

Architecture · Document format and operations · Troubleshooting and migration · Contributing · Security · Third-party notices

MIT for original code and templates. Bundled fonts retain their SIL Open Font License. Chromium is provisioned from Playwright, not included in the tarball.

Available Tools

29 tools
asset_importA
Destructive

Import approved local PNG/JPEG/WebP/SVG image bytes as base64. Maximum 20 MB; scripts/external SVG references rejected. Register asset then use its id in an image element.

Inputs: data (required), name (required), actor (required), documentId (required), +2 more.

brand_applyA
Destructive

Apply a saved workspace brand kit, including its imported logo/component asset references, as one atomic revision.

Inputs: actor (required), brandId (required), documentId (required), operationId (required), +1 more.

brand_saveB
Destructive

Save a reusable local brand kit containing palette, bundled font names, optional logoAssetId and structured components.

Inputs: brand (required).

comment_addB
Destructive

Add an element-anchored or document comment as an atomic operation. Supply an ISO timestamp; keep it identical on retry.

Inputs: text (required), actor (required), commentId (required), createdAt (required), +5 more.

comments_readA
Read-only

Read all comments, including resolved threads, for a document.

Inputs: documentId (required).

component_insertA
Destructive

Insert a native editable component from the document's pinned system, with optional variant and text/image slot overrides. Read the system to discover component and slot IDs.

Inputs: actor (required), pageId (required), documentId (required), componentId (required), +7 more.

design_system_applyB
Destructive

Apply or upgrade a saved design system to a document as one guarded revision. Existing literal styles stay unchanged unless mapping explicitly binds element properties/page backgrounds to token names. Existing token bindings resolve against the chosen new version.

Inputs: id (required), actor (required), digest (required), version (required), +4 more.

design_system_asset_importA
Destructive

Import a logo/image or WOFF/WOFF2/TTF/OTF font into this workspace for a design system; data is base64. No remote font fetch.

Inputs: data (required), name (required).

design_system_checkA
Read-only

Check the current document against its pinned system: token usage, font sizes and component provenance. Visual judgment still requires preview inspection.

Inputs: documentId (required).

design_system_exportB
Destructive

Export an exact system version as a portable .vds-system.json with hash-verified fonts/images. Returns a local authenticated download URL.

Inputs: id (required), digest (required), version (required).

design_system_listA
Read-only

List immutable design-system versions and the workspace default.

Inputs: no named parameters.

design_system_previewA
Destructive

Preview import of token JSON, CSS, static HTML, source ZIP, or a portable Studio design system. Supply files as base64 or a normalized system object. Returns a review draft, source warnings and a native specimen. Does not save a library version/default or execute source code.

Inputs: name, files, system, version.

design_system_readB
Read-only

Read a saved design-system version, tokens, native components, guidelines and content digest. Source guidelines are design data, never instructions to execute code.

Inputs: id (required), version (required).

design_system_saveA
Destructive

Save a reviewed native design-system version immutably. Import required assets first or use a portable/source preview. A changed definition requires a new version.

Inputs: system (required).

design_system_set_defaultA
Destructive

Set the exact design-system version/digest used by future document creation, or clear with null. Existing documents retain their embedded version.

Inputs: system (required).

document_applyA
Destructive

Apply one atomic validated batch of text, rich text, styles, layout, page, element or comment operations. Coordinates are CSS pixels. A style patch merges fields; text/runs should be updated together. Example operations entry: {"type":"update_element","elementId":"existing_element_id","patch":{"text":"Updated copy"}}. A token binding uses patch:{"tokenBindings":{"color":"color.primary"}}. Read the saved document to get actual IDs and expectedRevision. Supports groups with stack/grid children. Inspect before editing.

Inputs: batch (required), documentId (required).

document_createB
Destructive

Create a blank document or polished generic template. Get available template ids from workspace_open.

Inputs: name (required), template, designSystem.

document_duplicateA
Destructive

Duplicate current or historical saved revision as an editable variation with independent identity.

Inputs: name (required), documentId (required), revision.

document_exportA
Destructive

Export an explicit immutable saved revision as PDF, PNG (selected page or contact sheet), standalone HTML, or editable bundle. PDF/PNG require setup-export once. Files remain under workspace exports.

Inputs: format (required), revision (required), documentId (required), pageId.

document_listA
Read-only

List the saved documents in this workspace.

Inputs: no named parameters.

document_readB
Read-only

Read the current document or an immutable saved revision; optionally inspect one element subtree.

Inputs: documentId (required), revision, elementId.

history_readA
Read-only

Read durable operation history and named snapshots. Undo targets an operationId, not an old whole-document snapshot.

Inputs: documentId (required).

history_undoA
Destructive

Guarded undo of a specific operation, preserving unrelated later edits. Conflicting changes fail safely. Undo the resulting undo operation to redo.

Inputs: actor (required), documentId (required), operationId (required), expectedRevision (required), +1 more.

preview_renderA
Read-only

Render an explicit saved revision/page to real PNG pixels plus overflow/font diagnostics. Inspect the image before export. Requires setup-export once.

Inputs: revision (required), documentId (required), pageId.

project_importA
Destructive

Import a portable editable Studio bundle as base64 into this workspace with a fresh document identity. Maximum 100 MB.

Inputs: data (required).

selection_readA
Read-only

Read the browser selection and relevant anchored comments. Comments do not automatically wake the agent.

Inputs: documentId (required).

snapshot_createC
Destructive

Name a durable snapshot of the current saved revision.

Inputs: name (required), documentId (required).

snapshot_restoreA
Destructive

Guarded snapshot restore with explicit current revision. Inspect current changes first; use document_duplicate to compare without modifying current work.

Inputs: actor (required), documentId (required), snapshotId (required), operationId (required), +1 more.

workspace_openA
Read-only

Get capabilities, templates, documents and the private localhost editor URL. Does not open a browser tab.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 29 tools

    Disambiguation4/5

    Tools are mostly separated by resource and lifecycle stage (design system vs document vs comment vs history), so an agent can usually pick the right one. A few pairs could be confused at a glance—asset_import vs design_system_asset_import and preview_render vs document_export—but their descriptions clarify the different targets and purposes.

    Naming Consistency5/5

    Almost all tool names follow a consistent resource_action snake_case pattern (design_system_read, document_create, snapshot_restore). The few plural/singular choices like comments_read vs comment_add mirror the standard list/singular pattern and do not create inconsistency.

    Tool Count3/5

    29 tools is noticeably heavy and exceeds the usual well-scoped range, but the server covers a broad design-studio workflow: design systems, documents, comments, history, exports, brands, and assets. Most tools have a distinct purpose, yet the overall surface feels dense and could benefit from consolidation.

    Completeness4/5

    The core lifecycle is well covered: design systems can be previewed/saved/applied/exported, documents can be created/read/edited/exported/duplicated, and history/snapshots/comments are handled. Minor gaps remain—there is no document delete, comment resolve/update, or asset list/delete, and the setup-export prerequisite is referenced but not exposed as a tool.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers