c2n Web Components

io.github.code2nguyenPublished by GitHub account code2nguyenv1.0.23Updated Nov 7, 2026

Exact APIs, examples, theme tokens and markup validation for the c2n (c2-*) Lit web components.

VerifiedSTDIODesktop onlyKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Local MCP server that gives an assistant the APIs, examples, theme tokens and markup validation for the c2n (c2-*) Lit web components.

What you can do
  • List and search components, with tag, package, category and installed version
  • Read one component's full API: attributes, slots, events, CSS parts and variables with theme tokens
  • Browse usage examples and gallery looks, and search looks across all components
  • Get curated presets and the --c2-theme--* tokens with install and mapping snippets
  • Generate variant code as CSS class, HTML with style, Lit subclass or JSON
  • Validate markup and CSS against the installed component API, from a tool or the command line
When to use it
Useful when building or theming a UI with the c2n web components and you want the assistant to use exact component APIs, copy gallery looks, generate variants, or check markup for unknown tags, attributes, slots, events and variables.
Requirements
Runs locally over stdio, typically launched with npx from the @c2n/mcp npm package, so Node.js and npm are needed. Run it from the project directory; the optional C2N_PROJECT_ROOT variable sets which project's installed @c2n/* packages are reported. The registry is bundled, so tool calls need no network access after installation.
Before you install
The server only supplies component facts; it does not install packages or edit your application. Validation reads project source files and, in hook mode, reads a payload from stdin and reports findings on stderr with exit code 2. Installing the optional skill package registers a Claude Code hook in the project settings.

Installation

In SourceWeft

  1. Open c2n Web Components in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

@c2n/mcp

Model Context Protocol server that exposes the c2n web components to AI agents: component APIs (attributes, slots, events, native CSS parts, CSS variables with their theme tokens), usage and gallery examples, curated presets, the @c2n/theme tokens, variant code generation and the application workflow guides. Everything is bundled in data/registry.json, so it works offline in any project.

[c2n Web Components MCP server]

Use

The server uses stdio and can be launched by any MCP host:

bash
npx -y @c2n/mcp

Claude Code project .mcp.json:

json
{ "mcpServers": { "c2n": { "type": "stdio", "command": "npx", "args": ["-y", "@c2n/mcp"] } } }

Codex project .codex/config.toml:

toml
[mcp_servers.c2n]command = "npx"args = ["-y", "@c2n/mcp"]

Google Antigravity project .agents/mcp_config.json uses the same mcpServers command/args structure as the Claude example. The @c2n/skill package can install the skill and merge these configurations automatically.

Run the server from a project directory: it reports which @c2n/* packages are installed and serves the bundled API when the installed version differs. The registry is packaged locally, so tool calls do not require network access after installation.

Use c2n-mcp --version to inspect the installed server version and c2n-mcp --help for CLI usage.

The MCP server supplies structured component facts; it does not install component packages or edit an application by itself. Pair it with @c2n/skill when you also want the agent to follow c2n's application, theming and variant conventions. See the AI tools guide for the complete setup and example prompts.

Verify the connection

Restart the agent after adding its MCP configuration, then ask it to use the c2n MCP server to list components or inspect c2-button. A connected client should expose the tools below and report @c2n/* packages installed in the current project. If the server cannot start, run npx -y @c2n/mcp --version in that project to distinguish an npm/runtime problem from an MCP client configuration problem.

Tools

ToolPurpose
list_componentsEvery component with tag, package, category, description, installed version
search_componentsFree-text search across names, descriptions, attributes, slots, events, examples, icons
get_componentFull API of one component, CSS variables grouped by part/state with their theme token
get_examplesUsage rows and gallery cards; view: "index" lists every look (summary, screenshot)
search_examplesFind a look across every component's gallery ("glass", "pill", "underline")
get_presetsCurated presets as CSS variable values
get_themeThe --c2-theme--* tokens, install/mapping snippets; per-component mapping with tag
generate_variantCSS class / HTML + style / Lit subclass / JSON from overrides, a preset or a gallery card
validate_markupChecks markup/CSS you wrote: native controls to replace, unknown tags/attributes/slots/events/variables
get_workflow_guideworkflow, theming, variant-components, frameworks

Gallery cards are served with a generated summary of what they change and CSS whose colours follow the --c2-theme--* tokens wherever a literal equals a token's value (var(--c2-theme--color-outline, #d4d4d8)), so a copied card follows the application's theme and dark mode. Each card also links light and dark PNG captures hosted with the docs site (gallery-shots/<component>/<slug>.<theme>.png, written by apps/ui/scripts/gallery-shots.mjs in the Pages deploy).

Validate from the command line

validate_markup is also a CLI, for CI and editor hooks. It reads HTML, JSX/TSX, Vue, Svelte, Astro, Angular and Lit templates and CSS, and checks them against the API of the @c2n/* packages the project has installed:

bash
npx -y @c2n/mcp validate src            # exit 1 on errorsnpx -y @c2n/mcp validate src --strict   # warnings fail too (native controls, box styling on a c2 host)npx -y @c2n/mcp validate --hook         # Claude Code PostToolUse hook: reads the payload on stdin

It reports native <button>/<input>/<select>/<textarea>/<dialog>/<details>/<progress> elements that a c2-* element replaces, unknown c2-* tags, attributes, slots and --c2-* variables (with "did you mean"), events a c2-* element does not fire (with its event list), a static camelCase attribute the element ignores (rowKey for row-key), and box styling on a c2-* host (border, padding, background, box-shadow, outline; a radius alone is fine). A line holding c2n-ignore, or the line after a comment holding it, is skipped. In hook mode the findings go to stderr with exit code 2, which Claude Code hands back to the agent; npx -y @c2n/skill install registers that hook in .claude/settings.json.

Resources: c2n://components, c2n://components/{tag}, c2n://theme, c2n://guide/{topic}.

Development

  • data/registry.json is an ignored build artifact. npm run build:tools (repo root) regenerates it from the component manifests, docs content, presets and theme, then compiles dist/ and refreshes the committed skill fallback.
  • dev, inspect, smoke and npm pack automatically build the registry when needed.
  • npm run smoke -w packages/tools/mcp spawns the server over stdio and checks every tool.
  • npm run inspect -w packages/tools/mcp opens the MCP Inspector against the source entry (node src/cli.ts, Node 24 type stripping).

Source: packages/tools/mcp/README.md at commit 14ff619

Tools

10

list_components

List components

Lists every c2n component (tag, package, category, one-line description, installed version in the current project).

ParametersformatkeywordcategoryinstalledOnly

get_component

Get component API

Full API of one component: install/import lines, attributes, slots, events, native CSS parts, CSS variables grouped by semantic target and state (with the theme token each follows), composition and preset names. Examples are served by get_examples.

Parameterstagrequiredformatinclude

search_components

Search components

Free-text search across component names, descriptions, attributes, slots, events, example labels and icon names. Use it to find the component for a UI need ("dropdown", "dialog", "avatar with status", "arrow icon").

Parameterslimitqueryrequired

get_examples

Get examples

Markup examples of a component: usage rows from the docs, styled gallery cards (the looks shown on the docs site, each with a summary of what it changes and light/dark screenshots) and the landing preview. Start with `view: "index"` to see every look on one page, then fetch the chosen card by its slug.

Parameterstagrequiredkindviewlabellimitqueryformatoffsetsection

search_examples

Search gallery looks

Search every component's gallery for a look or a use case ("compact", "glass", "pill", "danger", "underline input", "KPI"): returns matching cards across components with their summary and screenshot. Fetch one with get_examples `label: <slug>`.

Parameterstaglimitqueryrequired

get_presets

Get presets

Curated presets of a component ("inspiration" looks): base markup plus each preset as CSS variable values and attributes.

Parameterstagrequirednameformat

get_theme

Get theme tokens

The @c2n/theme design tokens (--c2-theme--*) with light/dark defaults, how to install and map your own tokens, and dark mode. With `tag`: which of that component's variables follow which token.

Parameterstagformat

generate_variant

Generate a variant component

Turns CSS variable / attribute overrides of a component into copy-paste code: a CSS class, HTML + <style>, a Lit subclass registered under your own tag, or JSON. Validates variable and attribute names against the component API. Start from a curated preset with `preset`, or from a gallery card with `example` (its slug or label).

Parameterscsstagrequiredhtmlnamerequiredformatpresetexampleattributes

validate_markup

Validate markup

Checks HTML, JSX, Vue, Svelte, Astro, Angular or Lit markup and CSS you wrote against the installed c2n API: native controls a c2-* element replaces (<button>, <input>, <select>, <textarea>, <dialog>, <details>, <progress>), unknown c2-* tags, attributes, slots, events and --c2-* variables (with "did you mean"), and box styling on a c2-* host. Lists the imports that register the elements used. Call it on every file you write before finishing.

Parameterscoderequiredformatfilename

get_workflow_guide

Get workflow guide

The c2n application workflow guides: `workflow` (theme once, use tags, name what repeats), `theming`, `variant-components`, `frameworks` (plain HTML, Lit, Astro, React, Vue, SSR).

Parameterstopic

Version history

7
  1. v1.0.23LatestNov 7, 2026
  2. v1.0.22Nov 7, 2026
  3. v1.0.21Nov 5, 2026
  4. v1.0.20Nov 3, 2026
  5. v1.0.19Nov 3, 2026
  6. v1.0.18Oct 29, 2026
  7. v1.0.17Oct 25, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts