Getting Started

MCP Server

Connect your agents to the standard, so they can read the contracts, every rule and the docs a section at a time as they build and review components.

Our MCP server gives your agents the whole standard as tools: the contracts, every rule, the docs and the reference implementations. Connect it once, then ask your agent to build or review a component. It reads only what the task needs, then checks its work rule by rule, citing each rule by its ID.

It works with Claude, ChatGPT, Codex, Cursor, VS Code, GitHub Copilot, Gemini CLI and any other client that supports remote servers over the Model Context Protocol. It's free, with nothing to install and no account or API key to set up.

This page covers:

  • Quick start - connect it and try it in a minute
  • Connect your client - the setup for each client, step by step
  • What you can ask - prompts for building, reviewing and learning the standard
  • How it works - what your agent reads, and in what order
  • Tools, prompts and resources - everything the server offers
  • Privacy and security - what it sees, and what it can't do
  • Troubleshooting - what to check when it doesn't connect

At a glance

AspectMCP server
URLhttps://mcp.opencomponents.dev/mcp
Nameopen-components, the name to add it under
TransportStreamable HTTP
AuthenticationNone, so where a client asks, choose none
AccessRead-only. It serves the standard and changes nothing
CostFree
Toolslist-components, get-contract, list-rules, get-page, search-docs and get-reference-implementation
Promptsbuild-component, review-component, review-usage and adopt-token-paths
ContentThe same files as this site, redeployed whenever they change

Quick start

Add the server

In a coding agent, it takes one command:

claude mcp add --transport http open-components https://mcp.opencomponents.dev/mcp

In an editor, open the Cursor install link or the VS Code install link. On every page of these docs, the menu next to Copy page can also copy the server's URL for you, with Copy MCP Server URL, or install it in Cursor, with Add MCP Server. For any other client, see Connect your client.

To get skills that build and review components along with the server, install our agent plugin instead.

Check that it's connected

Run /mcp in Claude Code, Codex or Gemini CLI, or /mcp show open-components in Copilot CLI, to check that open-components is connected. In an editor, look for it in the MCP settings, along with its six tools.

Ask your agent

Ask for what you need in your own words. Mention the server by name the first time, so your agent knows to reach for it:

Build a Button component for our React design system that meets the Open Components
standard, using the open-components MCP server. Check your work against every rule
with a component or both scope, and cite the rule ID for any rule you can't meet.

What you can ask has more prompts to start from.

Connect your client

Every client needs the same three things: the URL, https://mcp.opencomponents.dev/mcp, the name, open-components, and no authentication. Most take a single command or a few lines of configuration. There's nothing to sign in to, so where a client asks about authentication, choose none.

Coding agents

claude mcp add --transport http open-components https://mcp.opencomponents.dev/mcp

That adds it for you, in the project you're in. Add --scope user to use it in every project, or --scope project to share it with your team through the project's .mcp.json, which asks each of them to approve it once.

Run /mcp in Claude Code to check that it's connected.

Editors

Open the Cursor install link, or add the server to .cursor/mcp.json in your project, or to ~/.cursor/mcp.json to use it in every project:

.cursor/mcp.json
{
  "mcpServers": {
    "open-components": {
      "url": "https://mcp.opencomponents.dev/mcp"
    }
  }
}

Chat apps

In Claude and Claude Desktop, add the server as a custom connector:

  1. Go to Customize > Connectors, click + Add, then Add custom connector.
  2. Name it open-components and enter the URL.
  3. Under Authentication, choose No sign in.

You can then turn it on for a conversation from the + button, under Connectors.

On Team and Enterprise plans, an owner adds it for everyone first, under Organization settings > Connectors.

Cloud agents and APIs

For Copilot's cloud agent on github.com, a repository admin pastes this under the repository's Settings > Copilot > MCP servers, then clicks Save MCP configuration:

{
  "mcpServers": {
    "open-components": {
      "type": "http",
      "url": "https://mcp.opencomponents.dev/mcp",
      "tools": ["*"]
    }
  }
}
On Copilot Business and Enterprise, an organization owner turns on the MCP servers in Copilot and Copilot cloud agent policies first.

Other clients

  • Amp:
    amp mcp add open-components https://mcp.opencomponents.dev/mcp
    
  • Cline: open Customize (the wrench), then MCP > Add Remote Server, and keep Streamable HTTP as its transport.
  • Continue: add the server to the mcpServers list in ~/.continue/config.yaml. Continue uses it in Agent and Plan modes.
    mcpServers:
      - name: open-components
        type: streamable-http
        url: https://mcp.opencomponents.dev/mcp
    
  • Crush: from Crush 0.88, add this line to ~/.config/crush/crushrc:
    mcp add open-components --type http --url https://mcp.opencomponents.dev/mcp
    
  • Factory Droid:
    droid mcp add open-components https://mcp.opencomponents.dev/mcp --type http
    
  • goose: in the desktop app, go to Extensions > Add custom extension, choose Streamable HTTP as its type and enter the URL as its endpoint. In the CLI, run goose configure and choose Add Extension > Remote Extension (Streamable HTTP).
  • LM Studio: add the server under mcpServers in ~/.lmstudio/mcp.json, which Program > Install > Edit mcp.json opens:
    {
      "mcpServers": {
        "open-components": {
          "url": "https://mcp.opencomponents.dev/mcp"
        }
      }
    }
    
  • OpenCode:
    opencode mcp add open-components --url https://mcp.opencomponents.dev/mcp
    

    In releases from before June 2026, run opencode mcp add and answer its questions instead.
  • Qwen Code:
    qwen mcp add --transport http open-components https://mcp.opencomponents.dev/mcp
    
  • Warp: under Settings > Agents > MCP servers, click + Add and paste:
    {
      "open-components": {
        "url": "https://mcp.opencomponents.dev/mcp"
      }
    }
    

Any other client that supports remote MCP servers over streamable HTTP only needs the URL. If yours only runs local servers, it can still reach this one through mcp-remote, which you add as a local server with this command:

npx -y mcp-remote https://mcp.opencomponents.dev/mcp

What you can ask

Once the server is connected, ask in your own words. Mention it by name the first time, and your agent takes it from there: the server tells it which tools to use, and in what order. Here's what it can help with, and a prompt to start from for each.

Build a component

Build a Button component for our React design system that meets the Open Components
standard, using the open-components MCP server. Check your work against every rule
with a component or both scope, and cite the rule ID for any rule you can't meet.

Your agent reads the Button's contract with get-contract, ports the reference implementation and its tests from get-reference-implementation, and reads how the API looks in React with get-page. Then it checks its work against the contract's rules with a component or both scope. For a component on the Roadmap, which has no contract yet, it holds it to the three layers and Design Tokens instead, following the Button's structure. The build-component prompt asks for the same.

Review a component

Review our Button, in src/components/Button.tsx, against the Open Components standard,
using the open-components MCP server. Report every rule with a component or both scope
as pass or fail, with its rule ID and the evidence from our code. Then fix the failures.

Your agent lists the rules to report on with list-rules, then checks your code against each one. For a rule it's unsure of, it finds the section that explains it with search-docs, and reads it with get-page. The review-component prompt asks for the same.

Review a screen

Review how our checkout page uses buttons against the Open Components standard, using
the open-components MCP server. Report every rule with a usage or both scope as pass
or fail, with its rule ID and the evidence from our code.

Usage rules are the ones the code using a component meets, like button/one-primary, which keeps one solid primary button per view. Your agent lists them with list-rules, with a usage or both scope. The review-usage prompt asks for the same.

Move to token paths

Rename our CSS variables to follow the Open Components token paths, using the
open-components MCP server. List our token groups first, then rename every variable
along with every var() that reads it, keeping the values as they are. Then add the
Stylelint rule from the standard, and fix anything it reports.

Your agent reads the Design Tokens contract with get-contract, and the Stylelint rule from the page's Lint section with get-page. The adopt-token-paths prompt asks for the same.

Learn the standard

Using the open-components MCP server, how should a button behave while it's loading?
Link to the sections you used.

Your agent finds the sections that cover it with search-docs, then reads them with get-page, with the examples in your framework if you name one. To see what the standard covers so far, and what's planned, ask which components it has, and your agent lists them with list-components.

How it works

You could point your agent at a page instead, but component pages are long. The Button's is about 35,000 tokens, mostly reasoning and examples in seven frameworks, which is far more than any one task needs. Its contract holds every requirement in about 3,000.

When your agent connects, the server tells it how to use it, so you don't have to. Your agent:

  1. Finds what the task is about, with list-components, or search-docs for a topic.
  2. Reads the contract first, with get-contract: the component's API, its DOM contract, its tokens and every rule.
  3. Reads only the sections it needs, with get-page, for the reasoning or an example behind a rule, in your framework.
  4. Starts from the reference implementation, with get-reference-implementation, when it builds a component.
  5. Checks its work rule by rule, with list-rules, citing every rule by its ID, like button/keep-focus, exactly as the server writes it, so you can look each one up.

Rules and scopes

Every rule has a level. A component meets the standard when it meets every must rule, and each should rule is expected unless there's a good reason not to follow it.

A component's rules also have a scope, which says whose code to check them against:

ScopeMet byCheck it when you
componentThe component itselfBuild or review a component
usageThe code that uses itReview a screen
bothThe two together, like naming an icon-only buttonDo either

Always in step with the site

The server is built from the same files as this site, and redeployed whenever they change, so it serves the standard exactly as the site publishes it. A contract from get-contract is the same file as its /raw/docs/<path>.yaml, and a page from the resources is the same as its /raw/docs/<path>.md.

Tools, prompts and resources

Tools

Your agent calls these on its own, following the instructions the server gives it. Every tool is read-only, and tells your client so.

ToolWhat it returnsArguments
list-componentsWhat the standard covers, shipped or planned, with the name the other tools take, like buttonOptionally, status
get-contractThe contract of a component or foundation, as YAML: its API, its DOM contract, its tokens and every rulecomponent
list-rulesRules as records, each with its ID, level, scope, requirement and how to check itOptionally, component, ids, scope, layer, level, check or automated
get-pageA page, or only the sections you name, with the examples in one frameworkpath, and optionally sections and framework
search-docsThe sections and rules that best match a query, across the whole standardquery, and optionally component, type and limit
get-reference-implementationA component's reference implementation in Vue 3 and its tests, or only the files you namecomponent, and optionally files

A page longer than about 8,000 tokens, like the Button's, comes back as its outline, every heading with its anchor and length, so your agent can ask for the sections it needs. No reply is longer than about 36,000 characters, so clients like Gemini CLI and Codex pass it on whole.

Prompts

Prompts are requests you start yourself, usually as slash commands. They ask for what the prompts on our pages ask for, then point your agent at the tools.

PromptWhat it doesArguments
build-componentBuilds a component in your framework, from its contract, reference implementation and tests, or for one on the Roadmap, following the Button's structurecomponent, and optionally framework
review-componentReviews the code of a component or foundation, reporting every rule as pass or fail with its ID and the evidence, then fixes the failurescomponent, and optionally code
review-usageDoes the same for a screen that uses a component, against the rules the screen meetscomponent, and optionally screen
adopt-token-pathsRenames your CSS variables to token paths, then adds the Stylelint rule that keeps them that wayNone

How you start one depends on your client:

ClientCommand
Claude Code/mcp__open-components__build-component button react
Gemini CLI/build-component button --framework=react
VS Code/mcp.open-components.build-component, which then asks for its arguments

Not every client runs them: Codex doesn't, and Continue, OpenCode and Zed can't pass their arguments yet, so only adopt-token-paths works there. Where yours doesn't, ask for the same in your own words, as in What you can ask, or install our agent plugin, whose skills your agent picks up on its own.

Resources

Resources are files you attach to a conversation yourself, with @ in Claude Code, or Add Context > MCP Resources in VS Code. They're every contract and every page, at the same URLs as on this site, /raw/docs/<path>.yaml and .md, and the contract schema.

Privacy and security

The server only serves the standard, so there's little that can go wrong, but here's exactly what it does and doesn't do:

  • It's read-only. Its tools read the standard and change nothing, on our side or in your project. Your agent makes every change to your code itself, with the permissions you give it.
  • It takes no credentials. There's no account, API key or token, so there's nothing to set up, store or leak.
  • It only sees what your agent sends it. Each call carries a few arguments, like a component's name, a search query or the sections to read. The exception is the code and screen arguments of the review prompts, which send whatever you pass in. To keep your code on your machine, pass the paths of your files instead, like src/components/Button.tsx, and your agent reads them itself.
  • It serves what the site publishes. Everything it returns comes from the same files as this site, in its public repository, so you can read any of it before your agent does.

Troubleshooting

Still stuck? Open an issue with your client, its version and what you tried, and we'll help you connect.

Copyright © 2026