Aceto

Aceto

A local dev server with MCP interface for building HTML mockups together with an AI agent, enabling live collaborative editing through element selection and live preview.

Category
访问服务器

README

Aceto

A local dev server with a browser overlay and MCP interface for building HTML mockups together with an AI agent.

Not a drawing tool, not a visual editor. Instead, a feedback loop between you and an agent:

  1. Tell the agent what you want
  2. The agent generates/modifies real HTML + Tailwind
  3. See the result live in your browser
  4. Point at an element and say "change this"
  5. The agent understands which element you mean and modifies it

Why Aceto

  • Token-efficient: The agent doesn't need to read and parse the full HTML to understand what you mean. You point at an element in the browser, the agent gets a precise selector. Write tools use the current selection by default — one tool call, no roundtrip.
  • Real HTML: No abstraction layer, no component model. The output is a plain HTML file you can read with cat and send by email.
  • Live feedback loop: DOM morphing keeps scroll position and selection state. You see changes instantly without page reload flicker.

Features

Hover Highlighting

User moves the mouse over any element — a blue outline appears with the element's tag and classes.

Hover Highlighting

Element Selection

User clicks an element to select it (pink outline). The breadcrumb bar at the bottom shows the full DOM path. Scroll wheel navigates up/down the tree (parent/child).

Element Selection

Agent Highlight

The agent highlights elements in cyan to communicate visually — e.g. to ask "Do you mean this one?":

highlight_element("section#pricing > div:nth-of-type(2)", {
  label: "Make this card wider?",
  style: "pulse"
})

Both selections (pink = user, cyan = agent) can be visible simultaneously.

Agent Highlight

Inline Editing

User double-clicks any editable element to modify it directly in the browser:

  • Text elements (headings, paragraphs, links, etc.) — edit the text content. Enter to save, Escape to cancel.
  • Inputs — edit the value attribute. Enter to save, Escape to cancel.
  • Textareas — edit the value. Ctrl+Enter to save, Escape to cancel, Enter adds a newline.
  • Checkboxes / Radio buttons — double-click to enter edit mode, Space to toggle, Enter to save, Escape to cancel.

Inline Editing

CSS Class Editor

User presses c on a selected element to edit its Tailwind classes inline. Enter to apply, Escape to cancel.

CSS Class Editor

Table Controls

User selects a table cell — a floating toolbar appears with +Row, −Row, +Col, −Col controls.

Table Controls

DaisyUI Support

Add component libraries via the CLI — DaisyUI components work out of the box with Tailwind v4:

aceto add daisyui

DaisyUI

More Features

  • Content shortcuts — type [] or [x] in a cell to insert a checkbox
  • Slash commands — type /list in an empty element to open a modal for creating <ul>/<ol> lists. Edit badges appear on existing lists for quick re-editing via double-click.
  • Element defaults — define default classes for generated elements via aceto.defaults.json
  • Paste images — Ctrl+V with selection inserts instantly; without selection, stages the image for agent-driven placement
  • Asset picker — press a to browse and reuse previously pasted images from the assets folder
  • Yank/Paste — press y to copy a selected element, p to paste it after another selection
  • Screenshots — the agent captures full-page or element-level screenshots via get_screenshot()
  • Live reload — DOM morphing keeps scroll position and selection state, no flickering

What Aceto Does Not Do

  • No editor — you don't edit anything yourself, you steer the agent
  • No build system — an HTML file you can read with cat
  • No framework — Tailwind v4 via CDN, optionally DaisyUI/Flowbite

Keyboard Shortcuts (Select Mode)

Key Action
Click Select element
Double-click Inline edit (text, input value, checkbox toggle)
Scroll wheel Navigate depth (parent/child)
Tab / Shift+Tab Next/previous cell (during table editing)
c Edit CSS classes of selected element
y Yank (copy) selected element
p Paste yanked element after selection
u Undo
r Redo
d Insert empty div after selection
a Open asset picker
Del Delete selected element
Space Toggle checkbox/radio (during edit mode)
Esc Close modal / deselect / cancel edit
e / Alt Toggle select/preview mode (clears selection)
Ctrl+V Paste image

Installation

bun install -g github:alexzeitler/aceto

Requires Bun runtime.

MCP Setup

Once aceto dev is running, add it as an MCP server to Claude Code:

claude mcp add aceto -s user --transport http http://localhost:3000/mcp

Getting Started

# Create a new project
mkdir my-mockup && cd my-mockup
aceto init

# Start the dev server
aceto dev

# Export for production
aceto export --production

CLI

aceto init                    # Create index.html + CLAUDE.md + aceto.md
aceto init --eject            # Write default instructions into aceto.md
aceto init --preset daisyui   # Create project with DaisyUI v5 pre-installed
aceto dev                     # Start dev server + MCP server
aceto dev about.html          # Start with a specific page
aceto dev --port 3001         # Custom port
aceto new about               # Create a new HTML page
aceto new dashboard/settings -l daisyui  # New page with DaisyUI
aceto add daisyui             # Add DaisyUI v5 to an existing project
aceto export                  # Export HTML with cleanup to dist/
aceto export --production     # Export with Tailwind CSS build

Agent Instructions

On aceto init, a minimal CLAUDE.md is created that tells the agent to call get_instructions() via MCP. This tool returns the project's aceto.md if it has content, or the built-in default instructions.

To customize the instructions, run aceto init --eject to write the defaults into aceto.md, then edit to your needs.

Element Defaults

Create an aceto.defaults.json in your project root to define default classes for generated elements:

{
  "checkbox": "h-4 w-4",
  "img": "max-w-full h-auto rounded"
}
  • checkbox — applied to checkboxes created via []/[x] shortcuts
  • img — applied to images inserted via paste (Ctrl+V)

The file is hot-reloaded — changes take effect immediately without restarting the server.

Tech Stack

Bun runtime, parse5 for HTML parsing, css-select for selectors, idiomorph for DOM morphing, MCP SDK for the agent interface. No Express, no React, no build step.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选