coss-ui-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@coss-ui-mcpPlan components for a billing settings page"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
coss-ui-mcp
A design-context MCP server for the coss ui component system — the base you build your apps on.
It does for coss ui what Atlassian's ADS MCP does for their design system: instead of pasting the whole component library into every prompt (expensive, and it goes stale), your coding agent calls tools to fetch only the components, install commands, props, and design tokens it needs, on demand.
Zero dependencies. Pure JS, only
node:*built-ins. No install step — runs on Node 18+, Bun, or Deno.Always current. Re-run the
syncscript any time to re-snapshot the live docs fromcoss.com/ui.Yours to own. Same spirit as coss ui itself — copy, paste, customize.
Why on-demand beats a static file
A single big DESIGN.md (or a pasted component list) loads everything, every time — high token cost, slower responses, and context truncation that hurts accuracy. An MCP server loads context on demand: the agent calls coss_plan("a settings page…") to get a shortlist, then coss_get_component("tabs") only for what it's actually building. That's the pattern Atlassian measured as materially cheaper and more accurate than a load-everything file.
Related MCP server: ds-mcp
Tools
Tool | What it does |
| Describe a screen/feature → ranked component shortlist + install commands + base setup. Start here. |
| Find components/hooks by name, keyword, or use case ("date range picker", "toast"). |
| Full docs for one component/hook: install (CLI + manual npm deps + CSS tokens), usage, props/API reference, examples. |
| Overview guides: |
| The design-token + font system: shadcn-style CSS variables, the extra |
| Cheap catalog of everything (components / hooks / overview). |
Install
Requires a JS runtime with node:* built-in support — Node 18+, Bun, or Deno. No dependencies.
1. Get the files & snapshot the docs
cd coss-ui-mcp
# with npm (or swap in pnpm/yarn/bun's equivalent "run" syntax)
npm run sync # downloads the coss ui docs into ./data (re-run to refresh)
npm run smoke # optional: verifies the server end-to-end
# or invoke the scripts directly with any runtime, no package manager needed
node scripts/sync.mjs
node scripts/smoke.mjs
# bun scripts/sync.mjs / deno run --allow-read --allow-write --allow-net scripts/sync.mjs
pwd # note this absolute path for the configs belowThe package ships with a
./datasnapshot already, so it works offline out of the box. Runsyncwhenever coss ui updates.
2. Point your agent at it (stdio)
Replace /ABS/PATH with the path from pwd.
Claude Code — .mcp.json (project root) or claude mcp add:
{
"mcpServers": {
"coss-ui": { "command": "node", "args": ["/ABS/PATH/coss-ui-mcp/server.mjs"] }
}
}Cursor — ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"coss-ui": { "command": "node", "args": ["/ABS/PATH/coss-ui-mcp/server.mjs"] }
}
}VS Code (GitHub Copilot) — .vscode/mcp.json:
{
"servers": {
"coss-ui": { "type": "stdio", "command": "node", "args": ["/ABS/PATH/coss-ui-mcp/server.mjs"] }
}
}Claude Desktop — claude_desktop_config.json (Settings → Developer → Edit Config): same mcpServers shape as Claude Code.
"command": "node"above is just the default — swap in"bun"or"deno"(with"args": ["run", "--allow-read", "/ABS/PATH/coss-ui-mcp/server.mjs"]) if that's your runtime of choice. No package manager is required to run the server itself. (sync.mjsadditionally needs network + write access to re-snapshot the docs.)
Restart the client, and you should see the coss_* tools available.
3. Use it
Just prompt normally — the agent will call the tools:
"Build a billing settings page with coss ui. Plan the components first, then use the real props."
A good agent will call coss_plan → coss_get_component for each → coss_theme, and generate code that uses your actual components and tokens instead of generic "slop".
Keep it fresh
npm run sync
# or: node scripts/sync.mjs (works with any package manager, or none at all)Re-downloads coss.com/ui/llms.txt and every referenced .md, rebuilds data/index.json. Diff data/meta.json to see what changed. (Two upstream links — radix-shadcn-migration and sidebar — currently 404 and are skipped automatically.)
Make it your design system
You build off coss ui as a starting point — so extend this to encode your conventions:
Rebrand tokens. Keep the CSS variable names, change their values in
globals.css. Ask the agent: "callcoss_theme, then give me aglobals.cssin a deep-navy brand palette." Every component updates at once.Add your own components. Drop extra
.mdfiles intodata/docs/components/(same frontmatter shape:title,description, an## Installationblock) and add matching entries todata/index.json. They'll show up in search/plan immediately — your in-house patterns become first-class context.Add house rules. Extend
coss_get_doc(or add acoss_conventionstool inserver.mjs) that returns your do/don't guidance — spacing scale, when to use Dialog vs Sheet, form patterns. This is where a generic system becomes your system.Ship a
DESIGN.mdtoo. For blue-sky prototyping in tools that don't speak MCP, generate a portableDESIGN.mdfrom the same data. MCP for daily driving (cheap, on-demand);DESIGN.mdfor portability.
Files
coss-ui-mcp/
├─ server.mjs # the MCP server (stdio, zero deps)
├─ scripts/
│ ├─ sync.mjs # snapshot coss.com/ui docs -> ./data
│ └─ smoke.mjs # drive the server like a real MCP client
├─ data/
│ ├─ index.json # catalog: slug, name, description, install, tokens, keywords
│ ├─ meta.json # sync timestamp + counts
│ └─ docs/**/*.md # snapshotted component/hook/overview markdown
├─ package.json
└─ README.mdHow it works (30s)
server.mjs speaks MCP's stdio transport directly — newline-delimited JSON-RPC 2.0 on stdin/stdout (initialize, tools/list, tools/call). It loads data/index.json at startup and reads individual markdown docs from disk only when a tool asks for them. That's the whole trick: cheap discovery, on-demand detail.
coss ui is Base UI + Tailwind CSS v4, shadcn-CLI compatible via the @coss/* registry. This server doesn't reimplement any of that — it just makes the official docs legible to your agent.
License
MIT — see LICENSE. The snapshotted docs in ./data are sourced from coss ui (apps/ui/), which is MIT-licensed (the parent monorepo defaults to AGPLv3, but apps/ui/ — where the docs and component registry live — is carved out as MIT).
Available Tools
6 toolscoss_get_componentA
Get the full docs for ONE coss ui component or hook: install (shadcn CLI + manual npm deps + CSS tokens), usage, full API/props reference, and examples. Fetch on demand after search/plan.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Component/hook slug, e.g. "button", "dialog", "use-media-query". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It describes what is returned but does not disclose any side effects, network calls, caching, or permissions. Adequate for a read operation but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences with zero wasted words. First sentence defines purpose and content; second provides usage timing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with no output schema, the description adequately covers what the tool does and when to use it. Could potentially mention return format, but not necessary given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds example values matching the schema, but does not provide additional semantic meaning beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves full documentation for one component/hook, listing contents (install, usage, API/props, examples). It distinguishes from sibling tools like coss_list_components (which lists) and coss_plan (which plans).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises 'Fetch on demand after search/plan,' providing context on when to use. Does not explicitly mention when not to use or alternatives, but sibling names are provided for distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coss_get_docA
Get an overview/guide doc: introduction, get-started, styling, or roadmap.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Which guide. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description indicates a read operation but doesn't disclose potential side effects, permissions, or return details. Adequate for a simple getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence (10 words) that front-loads the purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one parameter. Description covers what the tool does and what inputs are valid. Lacks return value info, but acceptable given low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% with enum and description. Description repeats the valid values, adding 'overview/guide doc' context, but doesn't extend beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool gets an overview/guide doc and lists the specific slugs (introduction, get-started, styling, roadmap). Distinguishes from sibling tools that handle components, planning, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage: to retrieve a specific doc. The enum values provide clear context, but no explicit exclusions or comparisons to siblings are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coss_list_componentsA
List the coss ui catalog (components, hooks, or overview docs) with one-line descriptions. Cheap overview — call before fetching full docs.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | Which catalog section to list. Default: components. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It mentions 'cheap overview' indicating low cost, but does not disclose potential outcomes, pagination, or permissions. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. The first states purpose, the second provides usage guidance. No unnecessary words, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is fairly complete. It covers purpose, parameter, and usage hint. It could mention return format explicitly, but 'one-line descriptions' implies it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (parameter has enum and default described). The description adds context about listing sections (components, hooks, overview) and one-line descriptions, but does not significantly extend beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the coss UI catalog (components, hooks, or overview docs) with one-line descriptions. It distinguishes from sibling tools like coss_get_component (detailed fetch) by noting it's a cheap overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises 'call before fetching full docs,' providing clear usage context. It implies when to use but does not explicitly mention when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coss_planA
Given a natural-language description of a screen or feature, return the recommended coss ui components (ranked, with install commands) plus base project setup. The token-efficient starting point — call this first, then coss_get_component for the ones you'll build with.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Describe the screen/feature, e.g. "a settings page with tabs, a profile form, and a danger-zone delete dialog". | |
| limit | No | Max components to suggest (default 10). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It discloses that the tool returns ranked recommendations with install commands and base project setup. However, it does not detail any behavioral traits like idempotency, data sources, or whether it modifies state. Still, the core behavior is clearly described, earning a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with the main action and result. Every sentence adds essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only 2 params, no output schema, and no annotations, the description is remarkably complete. It explains what the tool returns, the order, and how to sequence with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. The description adds meaning by framing 'task' as a natural-language description and noting that results are ranked and include install commands. For 'limit', it does not repeat the default but the context is clear. Overall, description adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: given a natural-language description, it returns recommended UI components (ranked with install commands) plus base project setup. It distinguishes from sibling tools by explicitly saying 'call this first, then coss_get_component'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'The token-efficient starting point — call this first, then coss_get_component for the ones you'll build with.' This tells when to use this tool and when to use the alternative sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coss_searchA
Search coss ui components/hooks by name, keyword, or use case (e.g. "date range picker", "toast notification"). Returns ranked matches with install commands. Use first to find the right component.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 8). | |
| query | Yes | What you're looking for. | |
| section | No | Restrict to a section. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It indicates a read-only search operation and returns ranked matches with install commands, but lacks explicit statements about side effects, authentication requirements, or result structure, which would be valuable for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with three short sentences that immediately convey the tool's purpose and usage. No redundant information, and key points are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers basic purpose and usage, it lacks details on result ranking, how install commands are presented, and the exact output format. Given no output schema, more context on what the agent can expect from results would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter descriptions in the schema cover 100% of the details (query, limit, section). The description adds minimal semantic value beyond schema, only clarifying the context of 'ranked matches with install commands.' Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for coss UI components/hooks by various criteria and returns ranked matches with install commands. It distinguishes itself from siblings like coss_get_component (which likely retrieves a single component) by indicating its role as the initial search step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises 'Use first to find the right component,' providing clear usage context. However, it does not explicitly state when not to use this tool or specify alternatives for known components, leaving some gap in guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
coss_themeA
Get coss ui's design-token + font conventions and setup commands — the shadcn-style CSS variables (colors, sidebar, --info/--success/--warning/--destructive-foreground), font tokens, and the full @theme block. Use when setting up a project or rebranding the look. Pass format:"full" for the complete styling guide.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | "summary" (default) or "full" styling doc. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It accurately describes what the tool returns (design tokens, font conventions, @theme block, etc.). Does not mention side effects, but as a 'get' tool it is likely read-only. Provides sufficient detail for an agent to understand its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with main purpose, then usage tips. Every sentence adds value with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description details the content returned (design tokens, font conventions, setup commands, @theme block). Covers both format options. For a simple single-parameter tool, this is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with enum description. Description adds value by explaining the effect of the 'full' format ('complete styling guide'), which goes beyond the schema's generic description. Helps agent choose parameter value correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves design tokens, font conventions, setup commands, and specifically shadcn-style CSS variables. Distinguishes from sibling tools like coss_get_component and coss_get_doc by focusing on theme/styling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('setting up a project or rebranding the look') and provides guidance on the format parameter ('Pass format:'full' for the complete styling guide'). No explicit alternatives but siblings are distinct, so context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
coss_get_component - First observed
coss_get_doc - First observed
coss_list_components - First observed
coss_plan - First observed
coss_search - First observed
coss_theme
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: listing all components, searching for specific ones, getting detailed docs for a component, getting overview docs, planning a UI with recommendations, and fetching theme info. No overlap in functionality, and descriptions guide appropriate use.
Tools follow a 'coss_<verb>_<noun>' pattern for most (get_component, get_doc, list_components), but three tools use a single verb without a noun (plan, search, theme). While readable and prefixed consistently, the lack of uniform verb-noun structure slightly reduces predictability.
With 6 tools covering exploration, search, detailed documentation, planning, and theming, the count is well-scoped for a UI component library reference server. Each tool provides essential functionality without unnecessary redundancy.
The tool set covers the full lifecycle of using the component library: discovering (list, search), understanding (get_component, get_doc), planning (plan), and styling (theme). No obvious gaps for a read-only reference MCP server.
Maintenance
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
MCP server for building and testing AI agents with multi-model experimentation and insights.
The Figma MCP server brings Figma design context directly into your AI workflow.
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server that exposes your design system components and tokens to AI agents, preventing duplicate component creation and hardcoded token values.9 npm9MIT
- AlicenseNot gradedqualityAmaintenanceA read-only MCP server that provides AI coding agents with a queryable contract for design system tokens, components, patterns, and anti-patterns.12 npm1Apache 2.0
- FlicenseBqualityDmaintenanceAutomated MCP server for the Insider Design System. Enables AI assistants to discover, understand, and generate code for over 60 Design System components with automated extraction from source code.14-
- FlicenseAqualityNot gradedmaintenanceMCP server enabling AI agents to search, retrieve details, and compare UI components from 13 popular UI libraries.3-