MCP server

MCP server for the @soroush.tech design system. It gives AI coding tools - Claude Code, Claude, Cursor, or anything else that speaks the Model Context Protocol - the component inventory, every component's README, and the theme token contract, so they write UI that matches the library instead of guessing at it.

Use it

The hosted server needs no install:

claude mcp add --transport http soroush https://mcp.soroush.design/mcp

Or run it locally over stdio - useful offline, or to pin a version:

npx -y @soroush.design/mcp

For a client configured by file:

{
  "mcpServers": {
    "soroush": { "command": "npx", "args": ["-y", "@soroush.design/mcp"] },
  },
}

Tools

ToolArgumentsReturns
list_componentspackage?Every component with its category, summary, and exact subpath import
get_componentname, part? (all/intro/api/examples)The component's README - api is its props with token values and defaults
get_tokensscale?The token contract from baseTheme: space, palette, radii, typography, ...
list_docs-The guide index: installation, usage, theming, layout kit, styled-system
get_docidOne guide or reference in full
search_docsqueryBest matches across components and guides, with snippets

A typical run starts with list_components, then get_component with part: "api" before writing markup, and get_tokens instead of hardcoding a value.

Programmatic use

import { createMcpServer } from '@soroush.design/mcp'

const server = createMcpServer()
await server.connect(myTransport)

content, findComponent, findDoc, and search are exported too, for reading the bundle without going through MCP.

How the content stays current

Nothing here is hand-written documentation. At build time the package reads the component registry and README splitter from the workspace, pulls each component's README.md, and serializes the live baseTheme object. The docs site at docs.soroush.tech renders the same sources, so the two cannot drift.

License

MIT