Symbols MCP

io.github.symbo-ls由 GitHub 账号 symbo-ls 发布v3.14.784更新于 Oct 30, 2026

Symbols.app MCP — docs, code generation, publishing, CLI/SDK reference

概览

AI 生成的概览

面向 AI 编程助手的 Symbols.app MCP 服务器:检索 Symbols/DOMQL 文档、生成与转换组件和页面、审计代码,并发布项目。

可以做什么
  • 检索并阅读内置的 Symbols 文档、规则、CLI 与 SDK 参考
  • 生成 DOMQL 组件和页面,并把 React/JSX 或 HTML/CSS 转换为 DOMQL
  • 按 frank-audit 规则审计单个文件或整个项目,并提供修复建议、应用编辑、快照与回滚
  • 从 symbols.json 读取项目上下文,并管理平台项目:登录、列出、创建、查看、保存、发布与推送
  • 把生成的 DOMQL 源码转换为平台所需的 JSON 格式
适用场景
当助手在 Symbols.app 或 DOMQL 项目中工作,需要框架规则、代码生成、React/HTML 迁移、合规审计,或把成果保存并部署到 Symbols 平台时使用。文档类工具无需账号,项目与发布类工具需要账号。
运行要求
以 stdio 方式在本地运行,可用 uvx symbols-mcp(Python/uv)、pip 或 npm 包装启动。文档类工具无需 API 密钥。项目管理工具需要 Symbols 账号:可向登录工具传入邮箱和密码,或在每次调用时提供 JWT 令牌或 API 密钥。可选的 Claude Code 钩子需要 bash 和 jq。
安装前请注意
登录工具以工具参数形式接收账号邮箱和密码,返回的令牌或 API 密钥会传入后续调用,因此会经过助手对话。保存、发布和推送会改变线上项目状态:save_to_project 创建新版本,push 部署到生产、预发布或开发环境。应用编辑的工具会修改项目文件,但可通过快照回滚。生成的代码和项目数据会发送到 Symbols 平台。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Symbols MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

symbols-mcp

mcp-name: io.github.symbo-ls/symbols-mcp

MCP server for Symbols.app — provides documentation search, code generation, conversion, auditing, project management, publishing/deployment, and CLI/SDK reference tools for AI coding assistants (Cursor, Claude Code, Windsurf, claude.ai, etc.).

Targets the modern smbls stack — flat element API, signal-based reactivity, declarative fetch: (@symbo.ls/fetch), polyglot translations (@symbo.ls/polyglot), helmet metadata (@symbo.ls/helmet), SPA routing via el.router(...), theme via @symbo.ls/scratch, and SSR via @symbo.ls/brender.

No API keys required for documentation tools. Project management tools require a Symbols account (login or API key).


Tools

Context — start here

ToolDescription
get_project_contextCALL FIRST. Walks up from cwd to find symbols.json, returns owner, key, dir, bundler, sharedLibraries, brender, env_type (local/cdn/json_runtime/remote_server), env_evidence, env_guidance, token_present, and a next_step hint telling the agent what to do (ask user, log in, or proceed). Replaces the older detect_environment for new code.
get_project_rulesMandatory ruleset. No arguments → compact CORE bundle (reuse directive + RULES essentials + every STRICT rule + frankability checklist + section index + next-step table, <80K chars — fits every client's tool-output cap). section="SYNTAX" (or COMPONENTS, FRANKABILITY, RULES + part=N, … 16 sections) fetches one section per call. full=true → legacy ~590K one-shot (capless clients only). Call before any code generation task.
get_cli_referenceComplete Symbols CLI (@symbo.ls/cli) command reference.
get_sdk_referenceComplete Symbols SDK (@symbo.ls/sdk) API reference.
search_symbols_docsKeyword search across all bundled Symbols documentation files.
detect_environment[Legacy] Caller-supplied flags variant of env classification. Prefer get_project_context.

Generation & conversion

ToolDescription
generate_componentGenerate a DOMQL component from a natural language description. Returns prompt + bundled context (≈300K chars).
generate_pageGenerate a full page with routing, helmet metadata, and declarative fetch: integration.
convert_reactConvert React/JSX code to Symbols DOMQL (modern smbls stack).
convert_htmlConvert raw HTML/CSS to Symbols DOMQL components.
convert_to_jsonConvert DOMQL JS source to platform JSON (mirrors frank's toJSON pipeline). Use after generate_component / generate_page to feed save_to_project.

Audit

ToolDescription
audit_componentInline VALIDATOR for a single file's code (component, page, function, …). Returns violations + warnings (≈1K chars). Use during generation. Pass file_path (e.g. 'functions/listQuerySet.js') so the rules that depend on the file's folder apply where it lives — without it the code is audited as a component. It also warns on four STRICT shape rules a default project audit does not run (frank-audit's opt-in FA810–FA813): one condition repeated across 3+ CSS props (Rule 19), an interactive element with :hover but no :active (Rule 65), a state-driven if: on an element in flow beside siblings (Rule 66), a built-in Button call site overriding padding/height (Rule 68). Pass include_playbook=True to also dump the AUDIT.md playbook.
audit_projectReturns the multi-phase project audit PLAYBOOK (instructions for the agent — Phase 0 setup → Phase 5 report). Pair with bin/symbols-audit.cjs CLI for the static-audit phase.

For filesystem-wide audits the package ships a CLI: npx -y -p @symbo.ls/mcp symbols-audit <symbols-dir> (strict by default, exit 1 on findings). -p names the package and runs its symbols-audit bin; every release supports it. The short form npx -y @symbo.ls/mcp symbols-audit <symbols-dir> (and npx -y @symbo.ls/mcp init-rules) needs a release with the package's mcp bin — on an older one npx answers "could not determine executable to run"; use npx -y -p @symbo.ls/mcp symbols-audit / npx -y -p @symbo.ls/mcp symbols-mcp-init-rules there. Under the hood it runs frank-audit audit --strict — the audit core is now @symbo.ls/frank-audit, the AST-based engine that owns the canonical 59-rule registry, prescription generation, and verify-or-rollback fixers.

lib/audit.js is preserved as a backward-compat shim that delegates to frank-audit (subprocess CLI, or the /audit-content HTTP endpoint when FRANK_AUDIT_URL is set). The legacy programmatic API stays callable for non-CLI consumers (the @symbo.ls/cli, the MCP HTTP worker, web/edge clients):

js
const {  auditContent,         // audit one component string (delegates to frank-audit)  auditFiles,           // audit a list of {path, content}  auditDirectory,       // walk a symbols/ dir via `frank-audit audit <dir>`  mergeFindings,        // preserve status across runs  summarize,            // breakdown by severity / category / origin} = require('@symbo.ls/mcp/lib/audit')

Findings drift vs the old regex output is expected and correct — frank-audit detects more issues with higher accuracy. Field names stay the same (file, line, rule, severity, category, snippet, suggested_fix). To inspect the rule registry, query frank-audit directly: npx frank-audit explain <id>.

Project Management & Publishing

ToolDescription
loginLog in to Symbols platform — returns a JWT token.
list_projectsList the user's projects (names, keys, IDs) to choose from.
create_projectCreate a new Symbols project on the platform.
get_projectGet a project's current data (components, pages, design system, state).
save_to_projectSave components/pages/data to a project — creates a new version with change tuples, granular changes, orders, and auto-generated schema entries.
publishPublish a version (make it live).
pushDeploy a project to an environment (production, staging, dev).

End-to-End Flow (from any MCP client)

1. get_project_context  → resolve owner/key/env/auth state from cwd's symbols.json2. generate_component   → JS source code3. audit_component      → inline check (saves a roundtrip if violations exist)4. convert_to_json      → platform JSON5. login                → only if token_present was false in step 16. create_project       → (if new project needed)   list_projects        → (or pick existing)7. save_to_project      → push JSON to platform (creates version)8. publish              → make version live7. push                → deploy to environment

Resources

Skills (documentation)

URIDescription
symbols://skills/frameworkAuthoritative framework reference — project structure, plugins, theming, SSR, publish pipeline (mirrors smbls/FOR_MCP.md)
symbols://skills/rules62 strict rules for AI agents working in Symbols/DOMQL projects
symbols://skills/syntaxComplete DOMQL syntax language reference (flat API, signal reactivity)
symbols://skills/modern-stackModern smbls stack — fetch, polyglot, helmet (full metadata catalog), router, scratch theme runtime, brender SSR
symbols://skills/componentsDOMQL component reference (flat props on element, flat onX events)
symbols://skills/project-structureProject folder structure and file conventions
symbols://skills/shared-librariessharedLibraries pattern — config, runtime merge, precedence
symbols://skills/design-systemDesign system contract + token catalog (colors, theme, typography, spacing, etc.)
symbols://skills/designUI/UX direction + design-to-code translator + 7 specialist personas (consolidated)
symbols://skills/patternsUI patterns, accessibility, AI optimization
symbols://skills/migrationMigration guide for legacy projects + React/Angular/Vue → Symbols
symbols://skills/auditFull audit playbook (Phase 0–5, executable end-to-end)
symbols://skills/common-mistakesWrong vs correct DOMQL patterns with zero-tolerance enforcement
symbols://skills/frankabilityPatterns that survive frank.toJSON — every @symbo.ls/frank-audit rule with wrong vs canonical examples
symbols://skills/learningsFramework internals, technical gotchas, deep runtime knowledge
symbols://skills/cookbookCookbook of small reactive recipes (toggle, fetch, modal, tabs, etc.)
symbols://skills/snippetsProduction-ready component snippets (nav, hero, pricing card, footer, etc.)
symbols://skills/default-projectDefault starter — library catalog (127+ components) + pre-configured design system tokens
symbols://skills/default-componentsComplete source code of 130+ default template components (heavy reference, on demand)
symbols://skills/running-apps4 ways to run Symbols apps (local, CDN, JSON, remote)
symbols://skills/cliSymbols CLI (@symbo.ls/cli) complete command reference
symbols://skills/sdkSymbols SDK (@symbo.ls/sdk) complete API reference

Reference (inline)

URIDescription
symbols://reference/spacing-tokensSpacing token table (golden-ratio scale)
symbols://reference/atom-componentsBuilt-in atom/primitive components
symbols://reference/event-handlersEvent handler signatures and patterns

Prompts

PromptDescription
symbols_component_promptGenerate a component from a description
symbols_migration_promptMigrate code from React/Angular/Vue
symbols_project_promptScaffold a complete project
symbols_review_promptReview code for compliance
symbols_convert_html_promptConvert HTML/CSS to DOMQL
symbols_design_review_promptVisual/design audit against the design system

Quickstart

Two commands and a one-line config — works for every major MCP client.

1. Install

Pick whichever runtime you have:

bash
uvx symbols-mcp           # uv  — recommended, zero installpip install symbols-mcp   # pip — global binarynpx -y @symbo.ls/mcp      # npm — Node-friendly wrapper

2. Configure your editor

The standard MCP config snippet (works for Claude Code, Claude Desktop, Cursor, Windsurf, Cline, Continue, Zed, Goose, Gemini CLI — wrap it in whatever shape that editor expects):

json
{  "mcpServers": {    "symbols-mcp": {      "type": "stdio",      "command": "uvx",      "args": ["--refresh", "symbols-mcp"]    }  }}

--refresh pulls the latest from PyPI on every launch (~1–2s startup tax — drop it for pinned/offline runs).

3. Verify

In your editor's chat, ask the assistant:

Use symbols-mcp to call get_project_rules, then summarize the modern stack rules.

If that returns a long ruleset, you're set. Try audit_component on a deliberately broken snippet to confirm Rule 62 (the banned inline-SVG-for-icon rule) fires.


Auto-bootstrapping a Symbols project — no more "use symbols-mcp" reminders

Once symbols-mcp is configured in your editor, drop project-level rule files so every editor auto-loads the framework rules on every chat:

bash
# from your Symbols project rootnpx -y @symbo.ls/mcp init-rules

Writes CLAUDE.md, .cursor/rules/symbols.md, .windsurfrules, .clinerules, and AGENTS.md — each tailored to its editor, all pointing at the symbols-mcp tools (get_project_context, get_project_rules, generate_component, audit_component, etc.). Idempotent; pass --force to overwrite or --only=cursor,claude to scope.

Agent skills — one-shot install for every agent on your machine

The wrangler-style path: detect which AI coding agents are installed (Claude Code, Cursor, Codex, GitHub Copilot, Gemini CLI, Windsurf, Cline, Goose, Warp, Antigravity, Zed, Aider) and install the Symbols rules + skills for exactly those:

bash
npx -y @symbo.ls/mcp skills          # detect agents → install rules + skills for them# equivalent: npx -y @symbo.ls/mcp init-rules --detect# from the Symbols CLI: smbls skills

For Claude Code this also installs a proper agent skill at .claude/skills/symbols/SKILL.md — it auto-loads whenever the agent works on Symbols/DOMQL (its description triggers on symbols.json projects, DOMQL components, design tokens, the smbls CLI), carrying the must-do tool sequence and the hard-rules digest. --global installs it once at ~/.claude/skills/ for every project; --no-skills opts out.

Combined with the MCP server's instructions field (auto-loaded on connect by every MCP-aware editor — Claude Code, Cursor, GitHub Copilot, Windsurf, Cline, Continue, Roo, Zed, Goose, Gemini CLI, Codex, Antigravity, Cody), this means you never have to remind the agent to "use symbols-mcp" — the workflow is bootstrapped on first interaction.

Claude Code: enforcement hooks (installed by default)

Project-level rule files (CLAUDE.md, AGENTS.md, etc.) are best-effort — long contexts dilute them and the agent can drift. For Claude Code, init-rules also installs a hooks layer that the harness enforces directly:

HookTriggerWhat it does
symbols-mcp-require.shPreToolUse Edit|Write|MultiEditBLOCKS Edit/Write on *.js/*.ts/*.tsx inside any directory tree containing symbols.json, until the session has called mcp__symbols-mcp__get_project_rules (or get_project_context/generate_component/audit_component).
symbols-mcp-reminder.shUserPromptSubmitInjects the MUST-DO sequence + frankability FA-rule cheatsheet on every turn when cwd is inside a Symbols project. Per-turn injection isn't diluted by long contexts the way CLAUDE.md is.
symbols-mcp-audit.shPostToolUse Edit|Write|MultiEditAfter every JS edit inside a Symbols project, runs frank-audit plus an inline FA-rule pattern check (FA101/102/103/105/106/206/207/513/514) and surfaces violations back to Claude.

Files installed:

.claude/settings.json                       # wires the three hooks.claude/hooks/symbols-mcp-require.sh        # PreToolUse  — block edit until rules loaded.claude/hooks/symbols-mcp-reminder.sh       # UserPromptSubmit — inject directive.claude/hooks/symbols-mcp-audit.sh          # PostToolUse — frank-audit + FA-rule check

Skip hooks: npx -y @symbo.ls/mcp init-rules --no-hooks. Disable a single hook at runtime: SYMBOLS_MCP_REQUIRE_RULES=0, SYMBOLS_MCP_REMINDER=0, SYMBOLS_MCP_POST_AUDIT=0.

Hooks require bash and jq on PATH (already standard on macOS / most Linux distros). frank-audit is invoked via npx -y --no-install @symbo.ls/frank-audit — if not installed, the inline pattern check still runs.

See SETUP.md → Bootstrapping for the layered model and verification steps.


What about /symbols-audit?

The /symbols-audit slash command is Claude Code-only, but the underlying capability works in every MCP-aware editor — Cursor, GitHub Copilot, Windsurf, Cline, Continue, Roo, Zed, Goose, Gemini CLI, Codex, Antigravity (Google), Cody, Claude.ai web, and any custom MCP client.

Three patterns:

  1. Natural language (zero setup) — just say "Run a full Symbols audit on this project using symbols-mcp." The agent calls get_project_context → audit_project (playbook) → bin/symbols-audit.cjs CLI → iterates fixes with audit_component.
  2. Custom command — register a Cursor rule, Continue customCommand, Windsurf workflow, etc. for one-keystroke parity. Templates in SETUP.md.
  3. Pure shell — npx -y -p @symbo.ls/mcp symbols-audit ./symbols works from any terminal, no editor needed. Strict by default, exit 1 on findings.

Full setup guide

See SETUP.md for:

  • Per-editor configs: Claude Code · Claude Desktop · Claude.ai (web) · Cursor · GitHub Copilot (VS Code / CLI) · Windsurf · Zed · Cline · Continue · Roo · Cody · Gemini CLI · OpenAI Codex · Goose · Antigravity · generic clients
  • Per-tool quick-starts with workspace connection (s1m0ne Bridge + MCP + rules): docs.symbols.app/simone
  • Local development: clone the repo, run from source, .mcp.json template
  • Using /symbols-audit & other tools in non-Claude-Code editors: natural language, custom commands per editor, shell fallback, sourcing the bundled venv directly
  • Transport modes: stdio (default) and SSE (for claude.ai web / remote clients)
  • Audit CLI: standalone bin/symbols-audit.cjs for CI / pre-commit
  • Updating and Troubleshooting (PATH issues, stale versions, missing tools)

来源:README.md,提交 72571ac

工具

28

get_project_rules

ALWAYS call this first before any generate_* tool — the mandatory Symbols.app rules. Call with NO arguments first. That returns the compact CORE bundle (well under 80k chars — it survives every client's tool-output cap): - the built-in-reuse directive (Atoms/Components catalog — REUSE via bare PascalCase keys), - RULES essentials: the RULES.md preamble (canonical-syntax table, flat API) + EVERY STRICT rule in full + an index of all rule headings, - the FRANKABILITY hard checklist (patterns that survive frank.toJSON), - a SECTION INDEX (all 16 sections, sizes, parts, how to fetch), - a NEXT STEP table telling you which sections to pull for your task. Then fetch sections on demand, one call each: get_project_rules(section="SYNTAX") → DOMQL v3.14 syntax reference get_project_rules(section="COMPONENTS") → built-in component catalog get_project_rules(section="RULES", part=2) → large sections come in parts get_project_rules(section="FRANKABILITY_CATALOG") Sections: FRAMEWORK, DESIGN_SYSTEM, RULES, COMPONENTS, DEFAULT_COMPONENTS, SYNTAX, PATTERNS, SNIPPETS, SHARED_LIBRARIES, WORKSPACE, FRANKABILITY, FRANKABILITY_CATALOG, FRANK_FIX_WORKFLOW, COMMON_MISTAKES, LEARNINGS, DEFAULT_PROJECT (case-insensitive, `.md` optional; several small sections may be comma-separated if they fit the cap). Unknown section names raise a clear error listing the valid names. full=True returns the legacy one-shot concatenation of all 16 sections (~590k chars). Use it ONLY on a client with no tool-output cap — Claude Code truncates it to a file path and the rules never reach the model. Minimum for any code-writing task: core + SYNTAX + COMPONENTS + FRANKABILITY. Violations cause silent failures — black page, nothing renders, or a working app with degraded UX you'll later have to rebuild. The single most-violated rule is reusing built-in components: a bare `Ava

输入参数fullpartsection

search_symbols_docs

Search the Symbols documentation knowledge base for relevant information. Ranked by section: every skill file is split at its headings, and the sections that hold the most of the query — option names (`camelCase`, `dotted.paths`, `snake_case`) weigh most and must be present, headings count again, words found in every file weigh little — come back first, at most two per file. Each result: file, section heading path, line, score, snippet. Args: query: Natural language search query about Symbols/DOMQL. Name the option exactly (`prepareDesignSystem`, `fetch.early`) for the best match. max_results: Maximum number of results to return (1-5).

输入参数query必填max_results

generate_component

Generate a Symbols.app DOMQL component from a description. Returns the rules, syntax reference, component catalog, cookbook examples, and default library reference as context. The calling LLM uses this context to generate a correct, compliant component. Args: description: What the component should do and look like. component_name: PascalCase name for the component.

输入参数description必填component_name

generate_page

Generate a Symbols.app DOMQL page with routing + helmet metadata + fetch integration. Returns rules, project structure, patterns, snippets, and default library reference as context for page generation. Args: description: What the page should contain and do. page_name: camelCase name for the page (used in route map).

输入参数page_namedescription必填

convert_react

Convert React/JSX code to Symbols.app DOMQL. Provide React component code and receive the conversion context including migration rules, syntax reference, and examples. Args: source_code: The React/JSX source code to convert.

输入参数source_code必填

convert_html

Convert raw HTML/CSS to Symbols.app DOMQL components. Provide HTML code and receive the conversion context including component catalog, syntax reference, and design system tokens. Args: source_code: The HTML/CSS source code to convert.

输入参数source_code必填

audit_component

Inline VALIDATOR for a single Symbols/DOMQL file (component, page, function, …). Runs the @symbo.ls/frank-audit rules (flat element API, signal reactivity, design system tokens, declarative fetch/polyglot/helmet/router, no DOM manipulation, Rule 62 icon ban, …) against an in-memory string of code. Returns a tight report with violations + warnings. It also warns on four STRICT shape rules: one condition repeated across 3+ CSS props (Rule 19 — use isX + '.isX'), an interactive element with ':hover' but no ':active' (Rule 65), a state-driven `if:` on an element in flow beside siblings (Rule 66 — keep it mounted, toggle visibility), a built-in Button call site overriding padding / height (Rule 68). Pass `file_path` so the rules that depend on the file's folder apply where the file really lives: a `functions/` file is not a component (no FA903 "exported as a function", no FA009 file-name check), `pages/` files get the page rules, a file outside every frank folder gets FA006. Without it the code is audited as a component, `components/<FirstExport>.js`. Project-level checks (the folder's `index.js` re-exports the file, `context.js` exists) need the whole project and are not reported here — run `bin/symbols-audit <symbols-dir>` for those. Use this: - During generation, to verify a freshly-generated file before saving - In any client without shell access (claude.ai web, hosted MCP) where the CLI is unreachable - On a single file's contents, not a whole project Adjacent tools — call these for different scopes: - `audit_project()` — returns the MULTI-PHASE PROJECT AUDIT PLAYBOOK (instructions for the agent to follow). Use when the user asks for a full project audit. - `bin/symbols-audit <symbols-dir>` (CLI, ships with this package) — the same rules across an entire project. Use during the playbook's static-audit phase. By default returns ONLY the findings (≈1–2K c

输入参数file_pathcomponent_code必填include_playbook

audit_and_fix_frankability

Run frank-audit and optionally apply fixes — supports a sampling-driven LLM loop that resolves findings the mechanical fixer can't safely handle. Modes: 'report' — run audit, list findings, do not modify files 'safe-fix' — apply mechanical fixes with verify-or-rollback safety (every applied fix is verified against frank.toJSON; regressions roll back) 'full' — run safe-fix first, THEN drive an LLM loop via MCP sampling over the remaining prescriptions: 1. prescribe_frankability_fixes(dir) → JSON prescriptions 2. for each prescription (capped by max_iterations): a. ctx.session.create_message() with the strict edit-op contract prompt b. parse the LLM's JSON response c. apply_frankability_edit_ops with verify-or-rollback d. one retry on malformed JSON 3. report aggregate (mechanical + LLM fixes) Requires the host to support MCP sampling (Claude Code does; some hosts don't — falls back gracefully to safe-fix mode with a warning when ctx.session is unavailable). Args: symbols_dir: Absolute path to the symbols/ directory. mode: 'report' | 'safe-fix' | 'full' aggressive: With safe-fix or full, also apply medium-confidence fixes. max_iterations: Cap on LLM-driven prescriptions in 'full' mode (default 20). Returns: JSON-stringified result with schema, opId, findings, applied/skipped, rolledBack, baseline, finalState, and (in 'full' mode) llmRounds[].

输入参数modeaggressivesymbols_dir必填max_iterations

prescribe_frankability_fixes

Generate LLM-ready prescriptions for frank-audit findings that can't be auto-fixed. Each prescription contains: - finding (rule, file, line, refusal reason) - sourceContext (~30 lines around the finding) - relatedFiles (other places that mention the same symbol) - **proposedOps** — array of edit ops the rule's helper logic produced (e.g. FA304 already mapped 36px → 'C2' from the project's spacing scale; FA301 already matched the closest palette token). The agent can submit these verbatim to apply_frankability_edit_ops, or modify before submitting. - explanation (the rule's docs) - safetyCheck (verify command run after apply) Workflow for the agent: 1. Call this tool to get prescriptions. 2. Inspect each `proposedOps` array. Either submit verbatim or modify. For findings with no proposedOps (structural refactors like FA2xx multifile-helpers, FA5xx DOM bans), construct your own ops from the 12 strict op kinds: removeImport | moveFile | addToIndexFile | addToGlobalScope | removeTopLevelDecl | addElementScope | replaceTokenValue | renameObjectKey | removeObjectKey | setObjectProperty | addDesignToken | skip 3. Call apply_frankability_edit_ops(symbols_dir, ops) — frank-audit validates every op, snapshots, applies, runs verify, rolls back on regression. Failed ops return structured details (E_OLDVALUE_NOT_FOUND with actualLine, E_KEY_NOT_FOUND with availableKeys, etc.) so you can retry intelligently. 4. Repeat until prescriptions are exhausted or no progress. Args: symbols_dir: Absolute path to the symbols/ directory. Returns: JSON with schema version, opId, list of prescriptions.

输入参数symbols_dir必填

apply_frankability_edit_ops

Apply LLM-generated edit ops to a Symbols project with verify-or-rollback. Pass `ops_json` as a JSON string of either: - { "ops": [...] } - or just an array of op objects. Each op must be one of the 8 strict kinds (see prescribe_frankability_fixes). The applier validates every op, snapshots affected files, applies, runs frank.toJSON to verify, and rolls back if the result regresses against the pre-apply state. Args: symbols_dir: Absolute path to the symbols/ directory. ops_json: JSON string containing the edit ops. Returns: JSON with applied/skipped/rolledBack/baseline/finalState.

输入参数ops_json必填symbols_dir必填

verify_frankability

Verify a Symbols project bundles cleanly via frank.toJSON. Independent of audit/fix — runs the same round-trip that apply-edits uses after every mutation, but as a standalone check. Useful for the agent to confirm a project is in a known-good state before starting a fix loop, or after a series of manual edits. Returns: JSON with { ok, bundleable, scanIssues, ... }.

输入参数symbols_dir必填

rollback_frankability

Restore a Symbols project to its state before a specific op ran. Every apply-edits run snapshots affected files under `<symbols_dir>/.frank-audit/snapshots/<opId>/` before mutating. Use this to undo a specific op (or a chain by walking backwards through opIds listed by `snapshots_frankability`). Args: symbols_dir: Absolute path to the symbols/ directory. op_id: The opId to roll back to (from a prior apply-edits result). Returns: JSON with { ok, restored: [...filePaths], opId }.

输入参数op_id必填symbols_dir必填

snapshots_frankability

List recent snapshotted opIds for a Symbols project. Each entry corresponds to a frank-audit op that wrote files. Pass an opId to `rollback_frankability` to restore that op's pre-state. Returns: JSON with { ok, opIds: [{ opId, timestamp, files }] }.

输入参数symbols_dir必填

frankability_log

Tail the audit log for a Symbols project. Returns the most recent NDJSON entries from `<symbols_dir>/.frank-audit/log`. Each entry records audit/fix/apply-edits/rollback events with opId, timestamp, and outcome — useful for understanding history without re-running ops. Args: symbols_dir: Absolute path to the symbols/ directory. limit: Maximum number of entries to return (default 50). Returns: JSON with { ok, entries: [...] }.

输入参数limitsymbols_dir必填

explain_frankability_rule

Return the documentation block for a specific frank-audit rule. Each rule (FA001 through FA902) has an `explain()` method that returns a human-readable description, examples of the bad/good patterns, and the rationale. Use this when an agent encounters an unfamiliar finding and needs context before deciding on a fix. Args: rule_id: The rule ID (e.g. 'FA301', 'FA806'). Returns: JSON with { ok, ruleId, name, severity, description, explanation }.

输入参数rule_id必填

get_cli_reference

Returns the complete `smbls` CLI reference (`@symbo.ls/cli`). Mirrors `smbls/CLI_FOR_MCP.md`. Covers: configuration files (symbols.json, .symbols_local/), API URL resolution order + env-var overrides, common flag conventions, full command map (project lifecycle, auth, sync, project mgmt, workspace ops, files & assets, integrations, GitHub, Frank JSON↔FS, dev/build/deploy, code transformation, SDK proxy, ask), publish flow (one-shot + granular), MCP/agent usage rules (--non-interactive + --yes + NODE_ENV + SYMBOLS_AUTH_TOKEN), error-handling contracts (AUTH_REQUIRED, ECONNREFUSED, missing app key), source-file map, and CLI-specific anti-patterns.

无需输入参数。

get_sdk_reference

Returns the complete `@symbo.ls/sdk` API reference (3.14.0). Mirrors `sdk/SDK_FOR_MCP.md`. Covers all 24 services with full method lists: auth, collab, project, plan, subscription, file, payment, dns, branch, pullRequest, admin, screenshot, tracking, waitlist, metrics, integration, featureFlag, organization, workspace, workspaceData (typed wrapper for /workspace/*), kv, allocationRule, sharedAsset, credits. Plus: SDK class lifecycle, BaseService contract, TokenManager (singleton, auto-refresh), environment matrix (channel URLs), root event bus (sdk.rootBus with last-payload replay), validation surface, federation primitive (multi-Supabase registry), permissions reference (ROLE_PERMISSIONS, PROJECT_ROLE_PERMISSIONS, TIER_FEATURES), error handling contract, and MCP integration notes.

无需输入参数。

audit_project

Returns the multi-phase PROJECT AUDIT PLAYBOOK (instructions for the agent). Strict mode is the default. Strict means EXHAUSTIVE — the agent does not stop until every finding is `resolved`, `framework_bug` (in framework_audit_results.md), or an active `🟢 ASK USER` block awaiting user input. No finding stays `open`. Two CLI flags (default ON in strict mode, both opt-out via --no-...): - `--deep-fix`: agent does NOT stop at first blocker (missing project key, auth-protected route, missing CLI subcommand). Surfaces ASK-USER blocks or runs documented fallbacks (e.g. publish blocked → local frank+brender preview). - `--deep-framework-audit`: every framework_bug entry includes a Read+Grep trace into smbls/ source identifying the suspected function, plus a suggested patch. Two report files the CLI emits + the agent appends to: - `audit/symbols_audit_results.md` — PROJECT findings + resolutions - `audit/framework_audit_results.md` — FRAMEWORK bugs + repro + smbls/ trace + suggested patch (each entry must be debuggable by someone who's never seen the code; vague "doesn't work" entries are not acceptable in strict mode) Findings have an `origin` field (project | framework | shared) classified by `bin/symbols-audit` heuristically, then refined by the agent during Phase 2. This tool is a **playbook getter**, not an executor. The agent runs the playbook itself using: - `get_project_context` — call FIRST to resolve owner/key/env. Missing values surface as `🟢 ASK USER` blocks (NEVER hardcoded). - `bin/symbols-audit <symbols-dir>` — deterministic regex sweep + dual-report template emission. Strict + deep modes default ON. - `audit_component(code, file_path)` — inline single-file validator (no filesystem). - chrome-mcp tools — for the Phase 3c local-vs-remote UI testing protocol. Phase summary: - Phase 0: setup + baseline metrics + project-context resolution. M

输入参数phase

convert_to_json

Convert DOMQL JavaScript source code to platform JSON format. Parses export statements from generated component/page code and converts them into the structured JSON the Symbols platform expects. Functions are automatically stringified (as the platform stores them as strings). Use this after generate_component or generate_page to get JSON that can be passed directly to save_to_project. Mirrors the @symbo.ls/frank toJSON + stringifyFunctions pipeline that the CLI uses when running `smbls push`. Args: source_code: JavaScript source code with export const/default statements. section: Target section — "components", "pages", "functions", "snippets", "designSystem", "state". Determines how exports are categorized.

输入参数sectionsource_code必填

detect_environment

[Legacy] Detect Symbols environment from caller-supplied file flags. **Prefer `get_project_context`** — it does the same classification by inspecting the filesystem directly (no caller-supplied flags needed) AND returns project owner/key/auth state in the same call. Kept for backward compatibility with older agent prompts. New code should call `get_project_context(cwd)` instead — its response includes `env_type`, `env_evidence`, and `env_guidance` fields equivalent to this tool's output, plus `owner`, `key`, `token_present`, and `next_step` guidance. Args: has_symbols_json: Whether symbols.json exists in the project root. has_symbols_dir: Whether a symbols/ directory exists with components/, pages/, etc. has_package_json: Whether package.json exists with smbls dependency. has_cdn_import: Whether HTML files contain CDN imports (esm.sh/smbls, etc.). has_iife_script: Whether HTML files use script src smbls (IIFE global). has_json_data: Whether the project uses frank-generated JSON data files. has_mermaid_config: Whether mermaid/wrangler config or GATEWAY_URL/JSON_PATH env vars are present. file_list: Comma-separated list of key files in the project root.

输入参数file_listhas_json_datahas_cdn_importhas_iife_scripthas_symbols_dirhas_package_jsonhas_symbols_jsonhas_mermaid_config

get_project_context

Read the current Symbols project context — START HERE for any Symbols task. Walks up from `cwd` (or the MCP process's working directory) looking for `symbols.json`, parses it, classifies the environment from filesystem signals, and returns a single JSON payload with everything an agent needs to begin work. Returns: - **owner**, **key**, **dir**, **bundler**, **sharedLibraries**, **brender** — from symbols.json - **project_root** — absolute path of the project root - **symbols_dir** — absolute path of the symbols/ source dir (or null) - **env_type** — `local | cdn | json_runtime | remote_server | unknown` - **env_evidence** — the filesystem signals that produced the classification - **env_guidance** — one-line guidance for that env type - **token_present** — whether `SYMBOLS_TOKEN` env var or `~/.smblsrc` token exists - **api_base** — the Symbols API base URL (defaults to https://api.symbols.app) - **next_step** — what the agent should do next (ask user / log in / proceed) **ALWAYS call this first** for any Symbols-project task. It replaces the older `detect_environment` tool (which required the caller to pre-compute file flags). Use this BEFORE calling any auth-required tool (save_to_project, publish, push, get_project) — combine with `token_present` to know whether to prompt for `login`. Never hardcode owner/key/credentials. If `next_step` says "ask the user", ASK. Args: cwd: Directory to start searching from. Defaults to the MCP server's process cwd. Pass an absolute path when the agent's cwd differs from the project root.

输入参数cwd

login

Log in to the Symbols platform and get an access token. Use this when the user needs to authenticate before any project operation. Returns a JWT token that can be used with all project tools. Args: email: Symbols account email address. password: Symbols account password.

输入参数email必填password必填

list_projects

List the user's Symbols projects. Returns project names, keys, and IDs so the user can choose which project to save to or publish. Requires authentication. Args: token: JWT access token from login. api_key: API key (sk_live_...) from project integration settings.

输入参数tokenapi_key

create_project

Create a new Symbols project on the platform. Use this when the user wants to save generated components to a new project. Returns the project ID and key for use with save_to_project and publish. Args: name: Project display name. key: Project key (pr_xxxx format). Auto-generated from name if empty. token: JWT access token from login. api_key: API key (sk_live_...) from project integration settings. visibility: Project visibility — "private", "public", or "password-protected". language: Project language (default: "javascript").

输入参数keyname必填tokenapi_keylanguagevisibility

get_project

Get a Symbols project's current data (components, pages, designSystem, state). Use this to inspect what's already in a project before saving changes. Args: project: Project key (pr_xxxx) or project ID. token: JWT access token from login. api_key: API key (sk_live_...) from project integration settings. branch: Branch to read from (default: "main").

输入参数tokenbranchapi_keyproject必填

save_to_project

Save components, pages, or design system data to a Symbols project. This applies changes to the project and creates a new version. Use after generate_component/generate_page to persist the output. The changes parameter is a JSON string with the data to merge into the project. Structure mirrors the project data format: ```json { "components": { "Header": { "extends": "Flex", "props": { "flow": "x", "gap": "B", "padding": "A B" }, "Logo": { "extends": "Icon", "props": { "name": "logo" } }, "Nav": { "extends": "Flex", "gap": "A" } } }, "pages": { "home": { "extends": "Page", "Header": {}, "Hero": { "extends": "Flex" } } }, "designSystem": { ... }, "state": { ... }, "functions": { ... } } ``` Only include the sections you want to update — omitted sections are left unchanged. Args: project: Project key (pr_xxxx) or project ID. changes: JSON string with project data to save (components, pages, designSystem, state, functions). token: JWT access token from login. api_key: API key (sk_live_...) from project integration settings. message: Version commit message describing the changes. branch: Branch to save to (default: "main"). force_shared_library: Explicitly allow writing to a project flagged isSharedLibrary when this tree's .symbols_local/lock.json does not carry that record's id. Without it the server refuses such saves (403 shared_library_lock_required) — shared libraries feed every consumer project, so an accidental write is an incident.

输入参数tokenbranchapi_keychanges必填messageproject必填force_shared_library

publish

Publish a version of a Symbols project to the platform. Makes the specified version (or latest) the published/live version. Call save_to_project first to save your changes, then publish to make them live. Requires authentication — provide either token or api_key. Args: project: Project ID (MongoDB ObjectId) or project key (pr_xxxx). token: JWT access token from login or ~/.smblsrc. api_key: API key (sk_live_...) from project integration settings. Alternative to token. version: Version string or version ID to publish. Leave empty for latest. branch: Branch to publish from (default: "main").

输入参数tokenbranchapi_keyproject必填version

push

Push/deploy a Symbols project to a specific environment. Deploys the project to a target environment (production, staging, dev). Call publish first to set the live version, then push to deploy. Requires authentication — provide either token or api_key. Args: project: Project ID (MongoDB ObjectId) or project key (pr_xxxx). token: JWT access token from login or ~/.smblsrc. api_key: API key (sk_live_...) from project integration settings. Alternative to token. environment: Target environment key (e.g. "production", "staging", "dev"). mode: Deploy mode — "latest" (newest from branch), "published" (current published version), "version" (specific version), or "branch" (track a branch). version: Required when mode is "version" — the version string or ID to deploy. branch: Branch to deploy from when mode is "latest" or "branch" (default: "main").

输入参数modetokenbranchapi_keyproject必填versionenvironment

版本历史

8
  1. v3.14.784最新Oct 30, 2026
  2. v3.14.783Oct 29, 2026
  3. v3.14.779Oct 22, 2026
  4. v3.14.772Oct 10, 2026
  5. v3.14.771Oct 9, 2026
  6. v3.14.770Oct 3, 2026
  7. v3.14.769Oct 2, 2026
  8. v3.14.763Sep 16, 2026

评分

已满足适用检查项的 80%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。