Agentic Design System

io.github.aa-on-ai由 GitHub 帳號 aa-on-ai 發布v0.3.0更新於 Oct 24, 2026

Render web and SwiftUI evidence, run explicit visual judgment, and trace ADS UI decisions.

發布方自己的服務:agentic.no

概覽

AI 產生的概覽

一個本機 MCP 伺服器,可渲染網頁與 SwiftUI 介面目標、執行確定性視覺檢查,並把設計決策追溯回原始檔案。

可以做什麼
渲染 URL、專案內的 TSX 元件或已設定的 SwiftUI 目標,涵蓋指定狀態與視窗尺寸,並執行無障礙、溢出、版面位移與觸控目標等檢查,失敗時保留 blocked 執行紀錄。依加權評分標準評估一次渲染執行,可與基準執行比較,既能用無模型模式,也可透過已設定的視覺評審轉接器完成。把最終設計決策與渲染時雜湊過的檔案進行追溯核對,檢查規則摘錄、來源限制與證據連結。透過穩定的資源連結讀回執行產物,例如清單、截圖、回執與報告。
適用情境
適合在專案中進行網頁或 SwiftUI 介面與設計評審的編碼代理,需要可重現的視覺證據與檢查結果,而非臨時截圖,並希望設計決策能對應到已記錄的原始檔案。
執行需求
需要 Node.js 與 npx;此套件以本機 stdio 伺服器執行,啟動時須指定專案根目錄路徑。需透過此套件的 doctor 與 setup 指令一次性安裝 Chromium,或以 PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH 指向既有的可執行檔。非本機的 URL 來源須在啟動時加入允許清單;自動評審與 SwiftUI 快照須在啟動時設定指令轉接器。
安裝前請注意
執行會在專案的 .ads/runs 目錄寫入產物,伺服器會讀取設定根目錄內的專案檔案。設定視覺評審後,渲染證據會傳送給你選擇的供應商與模型,每次模型呼叫都會記入回執。外部轉接器以固定絕對路徑的可執行檔執行,只應設定可信的程式。僅支援本機 stdio,沒有驗證層。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Agentic Design System,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

ads-mcp

[Agentic Design System logo]

Local MCP adapter for Agentic Design System. It turns ADS rendering, deterministic gates, evaluation receipts, and decision provenance into a stable three-tool surface for coding agents.

Run from npm

Point the server at the project whose UI you want ADS to inspect:

bash
npx --yes [email protected] --root /absolute/path/to/project

The MCP server connects without downloading a browser, so cold clients can discover its tools inside their startup budget. Before the first web render, verify or install Chromium once:

bash
npx --yes [email protected] doctornpx --yes [email protected] setup

If Chromium is missing, ads_render preserves a blocked run with the same setup command instead of timing out or fabricating evidence. Operators may also set PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH to an existing compatible Chromium executable.

Build from source

From the ADS repository:

bash
npm --prefix packages/ads-mcp installnpm --prefix packages/ads-mcp run buildnode packages/ads-mcp/dist/cli.js --root /absolute/path/to/project

Optional server flags:

  • --runs-dir <relative-path> changes the run directory under the project root. The default is .ads/runs.
  • --allow-origin <origin> allows one non-local HTTP(S) origin. Repeat the flag for additional origins.
  • --timeout-ms <number> changes the per-tool timeout. The default is 30 seconds.
  • --judge-command, --judge-provider, and --judge-model configure an explicit visual-judge adapter. --judge-arg is repeatable.
  • --swiftui-command configures a SwiftUI snapshot adapter. --swiftui-arg and --swiftui-detector are repeatable; --swiftui-renderer labels the renderer in run manifests.

Client configuration

Use the published package as a local stdio server. Replace the project path:

json
{  "mcpServers": {    "ads": {      "command": "npx",      "args": [        "--yes",        "[email protected]",        "--root",        "/absolute/path/to/project"      ]    }  }}

The server initialization instructions tell clients to render and evaluate first:

text
ads_render -> ads_evaluate

ads_trace is conditional. Call it only after reading the run manifest and confirming it contains at least one observed skill file, source file, and artifact file. Use the exact root-relative paths and excerpts captured in that manifest. Never invent provenance paths or substitute prompt labels or URLs.

Registry name: io.github.aa-on-ai/agentic-design-system.

For URL targets, the default state uses the original URL. Every requested non-default state is loaded as #state=<name>, so the application should read the state parameter from location.hash.

Protocol and extension posture

The server is built on the split MCP TypeScript SDK v2 packages and starts through serveStdio. One binary accepts both legacy initialize clients and modern clients that negotiate the 2026-07-28 protocol through server/discover.

Run identifiers are durable handles backed by <root>/.ads/runs, not MCP session identifiers. Render, evaluate, trace, and resource reads therefore recover across fresh client, server, and service instances on the same project filesystem.

The server advertises the stable MCP Apps extension as io.modelcontextprotocol/ui. Each ADS tool links to ui://ads/review, a self-contained text/html;profile=mcp-app resource that can display evidence, gates, findings, blockers, and decision traces inline. The app uses the 2026-01-26 Apps protocol and only requests server-tool and server-resource access from a compatible host. Hosts without Apps support retain the same three-tool and resource surface.

Current extension decisions are deliberate:

  • ADS does not advertise the io.modelcontextprotocol/tasks extension. Render and evaluation remain bounded synchronous calls because they do not yet need an asynchronous lifecycle; ADS will adopt the extension only with a concrete long-running operation and a verified TypeScript SDK and host path. It does not use the deprecated core task vocabulary.
  • Local stdio does not add an authentication layer. Any future remote transport must implement the current MCP OAuth/OIDC authorization model before it is enabled.
  • The filesystem run store is suitable for one local project root and is independent of an MCP session. Hosted or replicated operation requires a shared durable store and concurrency controls before it can claim the same recovery guarantee.

Tools

ads_render

Render an allowed URL, root-confined TSX component, or startup-configured SwiftUI target. The tool captures requested states and viewports, runs the applicable platform gates, and returns ads://runs/... resources.

json
{  "target": { "type": "url", "url": "http://127.0.0.1:3000/orders" },  "states": ["default", "loading", "empty", "error"],  "viewports": [{ "width": 390, "height": 844 }, { "width": 1280, "height": 800 }],  "waitFor": "main",  "provenance": {    "observedSkillFiles": ["skills/design-review/SKILL.md"],    "sourceFiles": ["brief.md"],    "artifactFiles": ["src/Orders.tsx"]  }}

A render is complete only when axe, overflow, landmarks and live regions, requested states, CLS, and touch-target gates have usable passing evidence. Missing browser dependencies, timeouts, and gate failures return a preserved blocked run instead of a false success.

SwiftUI uses the same public tool through an external snapshot adapter:

json
{  "target": {    "type": "swiftui",    "projectPath": "Orders.xcodeproj",    "scheme": "Orders",    "sourcePath": "Orders/ContentView.swift",    "configuration": "Debug",    "device": "iPhone 16 Pro"  },  "states": ["default", "loading", "empty", "error"],  "viewports": [{ "width": 393, "height": 852 }]}

ads_evaluate

Normalize a rendered run and optionally compare it with another run. The default judge.mode: "none" remains model-free and returns needs_human when deterministic gates pass. judge.mode: "configured" invokes the visual-judge adapter selected at server startup and returns a typed verdict, rubric scores, findings, and next revision prompt.

json
{  "runId": "run_...",  "compareToRunId": "run_optional_baseline",  "rubric": {    "task": "Make the orders workflow understandable on mobile and desktop",    "criteria": [      { "name": "Design Quality", "weight": 35 },      { "name": "Originality", "weight": 30 },      { "name": "Craft", "weight": 20 },      { "name": "Functionality", "weight": 15 }    ]  },  "judge": { "mode": "configured" }}

The server validates exact rubric score keys, ADS finding categories, severities, evidence links, normalized screenshot regions, and verdict consistency before accepting the result. Missing, timed-out, or inconsistent judge output returns blocked, never a pass.

ads_trace

Verify final decisions against files hashed during render. Rule files must have been recorded as observed, source and artifact files must be present and unchanged, excerpts must be exact, and all evidence URIs must resolve inside the same run.

For URL-only inspection without captured provenance, stop after ads_evaluate. If a client calls ads_trace anyway, the server returns one actionable trace not applicable error without resolving caller-invented paths.

json
{  "runId": "run_...",  "context": "Orders responsive repair",  "decisions": [    {      "id": "mobile-primary-action",      "decision": "Keep the primary action reachable on mobile.",      "artifact": { "path": "src/Orders.tsx", "location": "Primary action row" },      "rule": {        "path": "skills/design-review/SKILL.md",        "excerpt": "All consequential controls need a visible, reachable interaction target."      },      "sourceConstraint": {        "path": "brief.md",        "excerpt": "The primary action must remain reachable on mobile."      },      "evidence": ["ads://runs/run_.../evidence"]    }  ]}

Artifacts and security

Run artifacts live under <root>/.ads/runs/<runId>/. Tools return short structured results and read-only resource links for manifests, rendered evidence, screenshots, evaluation receipts, reports, traces, and trace validation.

resources/list enumerates recent run artifacts so a client can recover them after losing a tool response. Resource URIs are stable logical identifiers rather than disk paths. For example, ads://runs/<runId>/screenshots/default-390x844.png maps to <root>/.ads/runs/<runId>/evidence/default-390x844.png; clients should use resources/read.

  • No arbitrary command tool or caller-selected output path.
  • Project file reads and run writes stay under --root, including symlink checks.
  • URL inputs must use HTTP(S). Localhost is allowed by default; other origins need startup allow-listing.
  • URL credentials are rejected and common secret query parameters are redacted from receipts.
  • External adapters run as fixed argv processes without a shell. Executables must be absolute paths and stdout is bounded.
  • A model call requires both startup configuration and per-evaluation judge.mode: "configured"; provider, model, and call count are written to the receipt.

Verify

bash
npm test

The suite covers legacy initialization and modern server/discover, the MCP App handshake and inline review action, a complete MCP client sequence, cross-server run recovery, Chromium URL and TSX component capture, command-adapter JSON exchange, configured visual verdicts, SwiftUI snapshot evidence, rendered comparisons, resource reads, repeated stage receipts, timeout and incomplete-evidence behavior, path traversal, symlink escape, origin denial, and trace failures.

Current limits

  • Local stdio only. No remote HTTP, OAuth, or hosted service.
  • The MCP App is an optional progressive enhancement; host-native rendering still depends on the host implementing the stable Apps extension.
  • Tasks are intentionally not advertised.
  • Browser acquisition is explicit through ads-mcp setup; MCP startup never downloads Chromium.
  • The core package does not bundle provider SDKs, select a model, or ship a universal Xcode snapshot harness. Operators supply explicit command adapters for their environment.
  • SwiftUI evidence depends on the configured adapter's build, state injection, and detector capabilities.
  • The default path remains deterministic and returns needs_human; automated judgment is deliberately opt-in.

See the canonical API contract and command adapter protocol for the complete interfaces.

來源:packages/ads-mcp/README.md,提交 7bc546a

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Agentic 整合