Skip to main content
Glama

Radix UI MCP Server

npm version License: MIT

A lightweight Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to Radix UI libraries including Themes, Primitives, and Colors. This server enables AI tools like Claude Desktop, Continue.dev, VS Code, Cursor, and other MCP-compatible clients to retrieve and work with Radix UI components seamlessly.

Built upon the excellent foundation of shadcn-ui-mcp-server by @Jpisnice. This project adapts that work to focus specifically on the Radix UI ecosystem while maintaining the same powerful MCP integration capabilities.

πŸš€ Key Features

  • Radix Themes: Access high-level styled components with built-in design system

  • Radix Primitives: Get unstyled, accessible component implementations

  • Radix Colors: Retrieve semantic color scales with light/dark mode support

  • Component Source Code: Get the latest Radix UI component TypeScript source

  • Installation Guides: Dynamic installation instructions for all package managers

  • GitHub API Integration: Intelligent caching with p-memoize and respectful rate limiting

  • Lightweight: Built with modern Sindre Sorhus packages (ky, p-limit, p-memoize) for minimal bundle size

Related MCP server: OriginUI MCP Server

πŸ“¦ Quick Start

The fastest way to get started - no installation required!

# Basic usage (rate limited to 60 requests/hour)
npx @gianpieropuleo/radix-mcp-server@latest

# With GitHub token for better rate limits (5000 requests/hour)
npx @gianpieropuleo/radix-mcp-server@latest --github-api-key ghp_your_token_here

# Short form
npx @gianpieropuleo/radix-mcp-server@latest -g ghp_your_token_here

# Using environment variable
export GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here
npx @gianpieropuleo/radix-mcp-server@latest

# Select specific library
npx @gianpieropuleo/radix-mcp-server@latest --library themes
npx @gianpieropuleo/radix-mcp-server@latest --library primitives
npx @gianpieropuleo/radix-mcp-server@latest --library colors

# All libraries (default)
npx @gianpieropuleo/radix-mcp-server@latest --library all

# Using environment variable for library
export RADIX_LIBRARY=themes
npx @gianpieropuleo/radix-mcp-server@latest

🎯 Try it now: Run npx @gianpieropuleo/radix-mcp-server@latest --help to see all options!

πŸ”§ Command Line Options

radix-mcp-server [options]

Options:
  --library, -l <library>         Radix library: 'themes', 'primitives', 'colors', or 'all' (default: all)
  --github-api-key, -g <token>    GitHub Personal Access Token for API access
  --help, -h                      Show this help message
  --version, -v                   Show version information

Environment Variables:
  GITHUB_PERSONAL_ACCESS_TOKEN    Alternative way to provide GitHub token
  RADIX_LIBRARY                   Library to use: 'themes', 'primitives', 'colors', or 'all' (default: all)
  LOG_LEVEL                       Log level (debug, info, warn, error) - default: info

Examples:
  npx @gianpieropuleo/radix-mcp-server@latest
  npx @gianpieropuleo/radix-mcp-server@latest --library themes
  npx @gianpieropuleo/radix-mcp-server@latest --library primitives --github-api-key ghp_your_token_here
  npx @gianpieropuleo/radix-mcp-server@latest -l colors -g ghp_your_token_here
  npx @gianpieropuleo/radix-mcp-server@latest -l all

🎨 Radix UI Libraries

🎭 Radix Themes

High-level React components with a built-in design system. Perfect for rapid application development.

// Example: Get Button component from Themes
{
  "tool": "themes_get_component_source",
  "arguments": { "componentName": "button" }
}

🧩 Radix Primitives

Low-level, unstyled, accessible React components. Maximum flexibility for custom designs.

// Example: Get Dialog primitive
{
  "tool": "primitives_get_component_source",
  "arguments": { "componentName": "dialog" }
}

🌈 Radix Colors

Beautiful, accessible color scales with semantic meanings and dark mode support.

// Example: List all color scales
{
  "tool": "colors_list_scales",
  "arguments": {}
}

πŸ”‘ GitHub API Token Setup

Why do you need a token?

  • Without token: Limited to 60 API requests per hour

  • With token: Up to 5,000 requests per hour

  • Better reliability and faster responses

πŸ“ Getting Your Token (2 minutes)

  1. Go to GitHub Settings:

  2. Generate New Token:

    • Click "Generate new token (classic)"

    • Add a note: "Radix UI MCP server"

    • Expiration: Choose your preference (90 days recommended)

    • Scopes: βœ… No scopes needed! (public repository access is sufficient)

  3. Copy Your Token:

    • Copy the generated token (starts with ghp_)

    • ⚠️ Save it securely - you won't see it again!

πŸš€ Using Your Token

Method 1: Command Line (Quick testing)

npx @gianpieropuleo/radix-mcp-server@latest --github-api-key ghp_your_token_here

Method 2: Environment Variable (Recommended)

# Add to your shell profile (~/.bashrc, ~/.zshrc, etc.)
export GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here

# Then simply run:
npx @gianpieropuleo/radix-mcp-server@latest

πŸ› οΈ Editor Integration

Claude Desktop Integration

Add to your Claude Desktop configuration (~/.config/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "radix-ui": {
      "command": "npx",
      "args": [
        "@gianpieropuleo/radix-mcp-server@latest",
        "--github-api-key",
        "ghp_your_token_here"
      ]
    },
    // Or for specific library only:
    "radix-themes": {
      "command": "npx",
      "args": [
        "@gianpieropuleo/radix-mcp-server@latest",
        "--library",
        "themes",
        "--github-api-key",
        "ghp_your_token_here"
      ]
    }
  }
}

Or with environment variable:

{
  "mcpServers": {
    "radix-ui": {
      "command": "npx",
      "args": ["@gianpieropuleo/radix-mcp-server@latest"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

VS Code Integration

Method 1: Using Continue Extension

{
  "continue.server": {
    "mcpServers": {
      "radix-ui": {
        "command": "npx",
        "args": [
          "@gianpieropuleo/radix-mcp-server@latest",
          "--github-api-key",
          "ghp_your_token_here"
        ]
      }
    }
  }
}

Method 2: Using Claude Extension

{
  "claude.mcpServers": {
    "radix-ui": {
      "command": "npx",
      "args": ["@gianpieropuleo/radix-mcp-server@latest"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

Cursor Integration

Create a .cursorrules file in your project root:

{
  "mcpServers": {
    "radix-ui": {
      "command": "npx",
      "args": ["@gianpieropuleo/radix-mcp-server@latest"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

🎯 Usage Examples

Getting Radix Themes Components

Ask your AI assistant:

"Show me the source code for the Radix Themes Button component"
"List all available Radix Themes components"
"How do I install and set up Radix Themes?"

Working with Radix Primitives

Ask your AI assistant:

"Get the Dialog primitive from Radix UI"
"Show me how to use the Accordion primitive"
"List all available Radix Primitives"

Using Radix Colors

Ask your AI assistant:

"Show me the blue color scale from Radix Colors"
"How do I set up Radix Colors with CSS variables?"
"List all available color scales"

Building a Complete UI

Ask your AI assistant:

"Create a dashboard using Radix Themes components"
"Build a modal dialog using Radix Primitives"
"Set up a design system with Radix Colors"

πŸ› οΈ Available Tools

The MCP server provides these tools for AI assistants:

Radix Themes Tools

  • themes_list_components - List all available Radix Themes components

  • themes_get_component_source - Get Radix Themes component source code

  • themes_get_component_documentation - Get Radix Themes component documentation

  • themes_get_getting_started - Get installation instructions for Radix Themes

Radix Primitives Tools

  • primitives_list_components - List all available Radix Primitives

  • primitives_get_component_source - Get Radix Primitive component source code

  • primitives_get_component_documentation - Get Radix Primitive component documentation

  • primitives_get_getting_started - Get installation instructions for Radix Primitives

Radix Colors Tools

  • colors_list_scales - List all available color scales

  • colors_get_scale - Get specific color scale definition

  • colors_get_scale_documentation - Get Radix Colors documentation

  • colors_get_getting_started - Get installation instructions for Radix Colors

Example Tool Usage

// Get Radix Themes Button component
{
  "tool": "themes_get_component_source",
  "arguments": { "componentName": "button" }
}

// List all Radix Primitives
{
  "tool": "primitives_list_components",
  "arguments": {}
}

// Get blue color scale
{
  "tool": "colors_get_scale",
  "arguments": { "scaleName": "blue" }
}

// Get installation guide for Radix Colors
{
  "tool": "colors_get_getting_started",
  "arguments": {}
}

⚑ Architecture & Performance

Modern, Lightweight Stack

This MCP server is built with a carefully curated set of modern, lightweight packages:

  • ky - Elegant HTTP client (replaces heavier alternatives)

  • p-limit - Concurrency control for respectful API usage

  • p-memoize - Intelligent function memoization with TTL

  • expiry-map - TTL cache support for automatic expiration

  • pino - Fast, structured logging

  • zod - Runtime type validation

Smart Caching Strategy

  • 24-hour TTL: All GitHub API responses are cached for 24 hours

  • Function-level memoization: Each API function is individually memoized

  • Automatic expiration: Cache entries expire automatically, preventing stale data

  • Memory efficient: Only active data is kept in memory

Rate Limiting & API Respect

  • Concurrency control: Maximum 1 concurrent request to GitHub API

  • Intelligent batching: Related requests are batched when possible

  • Graceful degradation: Fallback to cached data when rate limits hit

  • Token support: GitHub tokens increase limits from 60 to 5,000 requests/hour

πŸ› Troubleshooting

Common Issues

"Rate limit exceeded" errors:

# Solution: Add GitHub API token
npx @gianpieropuleo/radix-mcp-server --github-api-key ghp_your_token_here

"Command not found" errors:

# Solution: Install Node.js 18+ and ensure npx is available
node --version  # Should be 18+
npx --version   # Should work

Component not found:

# Check available components first
npx @gianpieropuleo/radix-mcp-server --library themes
# Then call appropriate list tool via your MCP client

Library selection issues:

# Verify library parameter
npx @gianpieropuleo/radix-mcp-server --library themes  # βœ… Valid
npx @gianpieropuleo/radix-mcp-server --library invalid # ❌ Invalid

Debug Mode

Enable verbose logging:

# Set debug environment variable
LOG_LEVEL=debug npx @gianpieropuleo/radix-mcp-server --github-api-key ghp_your_token

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

🀝 Contributing

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

πŸ“ž Support

⭐ Acknowledgments

  • Radix UI Team for the amazing component libraries

  • Anthropic for the Model Context Protocol specification

  • The open source community for inspiration and contributions


Made with ❀️ by Gianpiero Puleo and Claude Code

Built upon the excellent work of shadcn-ui-mcp-server by @Jpisnice

Star ⭐ this repo if you find it helpful! Also consider starring the original project that made this possible.

Available Tools

11 tools
colors_get_scaleA

Get the source code for a specific Radix colors color scale

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNameYesName of the Radix colors color scale (e.g., "blue", "green")

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It indicates a read-only retrieval operation ('get') with no side effects, but lacks additional context such as return format, permissions, or any potential limitations. This is adequate but not enriched beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no unnecessary words. It efficiently states the verb, resource, and scope. Every word contributes to comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with no output schema, the description is nearly complete. It tells what the tool does and what parameter to provide. However, it does not specify the return format of the source code (e.g., string, file), which could be useful. Still, it is sufficient for most use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter, and the description does not add meaning beyond that. The schema already explains what scaleName is, with examples. The tool description simply restates the context. Baseline 3 is appropriate given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves source code for a specific Radix color scale, with a specific verb ('get') and resource ('source code for a color scale'). It distinguishes from sibling tools like colors_get_scale_documentation and colors_list_scales by explicitly focusing on source code rather than documentation or listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when you need source code for a color scale) but provides no explicit exclusions or mentions of alternatives. Sibling tools like colors_get_scale_documentation exist, but the description does not guide the agent to choose between them. Usage context is clear but not elaborated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

colors_get_scale_documentationB

Get the documentation for a Radix colors color scale

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNameYesName of the Radix colors color scale (e.g., "blue", "green")

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It merely restates the function without disclosing details such as the return format, whether the operation is read-only, any authentication requirements, or potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no extraneous words. It is front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with a close sibling (colors_get_scale), the description is too minimal. It does not explain what the documentation contains, how it differs from the scale itself, or any preconditions, making it insufficient for an agent to confidently select this tool over alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the scaleName parameter with an example, providing 100% coverage. The description adds no additional parameter semantics beyond what the schema already communicates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and identifies a concrete resource: 'documentation for a Radix colors color scale'. This clearly distinguishes it from the sibling tool colors_get_scale, which presumably retrieves the scale values themselves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as colors_get_scale or other documentation tools. The usage context is only implied by the tool's name and the existence of siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

colors_list_scalesA

Get all available Radix colors color scales

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. The verb 'Get' and the name 'list' clearly indicate a read-only operation with no side effects. It does not mention return format or pagination, but for a zero-parameter list tool with no likely side effects, this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. It efficiently communicates the tool's purpose without any filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (zero params, no output schema), the description fully explains what the tool does. Return values are implied: all available Radix color scales. No additional context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty, so according to the rule '0 params = baseline 4'. There is no parameter information to add beyond what the schema already declares.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get all available Radix colors color scales' with a specific verb ('Get') and resource ('all available...scales'). It distinguishes itself from sibling tools like colors_get_scale by emphasizing 'all available', which implies a list operation as opposed to fetching a specific scale.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: this tool is for retrieving the entire set of Radix color scales. While it does not explicitly name alternatives, the phrase 'all available' contrasts with sibling tools like colors_get_scale, implying the appropriate use case. There are no exclusions or prerequisites to mention.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

primitives_get_component_documentationA

Get the documentation for a specific Radix primitives component

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNameYesName of the Radix primitives component (e.g., "accordion", "dialog")

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get the documentation' with no mention of return format, authentication requirements, side effects, or error behavior, leaving significant behavioral traits undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that exactly states the tool's purpose without any redundant or extraneous content, earning a perfect score for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 1-parameter tool with no output schema, the description conveys the core action but omits details about the returned documentation content or how to choose this tool against siblings. This is adequate but leaves modest gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for the single 'componentName' parameter, including a description and example. The tool description adds no additional meaning beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and clearly identifies the resource: 'documentation for a specific Radix primitives component'. This distinguishes it from sibling tools like primitives_list_components, primitives_get_component_source, and themes_get_component_documentation by scoping to primitives and documentation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving documentation of a named Radix primitives component, which clearly sets it apart from list or source tools. However, it does not explicitly state when not to use it (e.g., for Radix themes components) or mention alternatives, lacking an explicit exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

primitives_get_component_sourceA

Get the source code for a specific Radix primitives component

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNameYesName of the Radix primitives component (e.g., "accordion", "dialog")

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It states the action and resource but does not disclose return format, error behavior, or read-only nature beyond the verb 'Get'. The description is minimal and lacks behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the verb and resource, and contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no nested objects) and no output schema, the description sufficiently indicates the return value (source code). It could be slightly more detailed about what the source code includes, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not add parameter semantics beyond the schema, but the schema already fully documents the single parameter with an example. Baseline 3 is appropriate since schema coverage is 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Get' and identifies the resource as 'source code' for a 'Radix primitives component'. It clearly distinguishes itself from sibling tools like primitives_get_component_documentation and themes_get_component_source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving source code but does not explicitly state when to use this tool versus alternatives. No exclusions or alternative recommendations are provided, leaving usage somewhat implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

primitives_get_getting_startedA

Get official getting started guide for Radix primitives

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description must carry the burden of behavioral disclosure. It only states the purpose ('Get...') without disclosing whether the operation is read-only, what format the guide is returned in, or any potential limitations. This lacks substantive behavioral information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that efficiently states the tool's purpose. There is no unnecessary wordiness or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description provides enough context to understand that this tool retrieves the getting started guide. It could benefit from explicitly describing the return format or read-only nature, but it is adequate for a zero-parameter getter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, and the schema is an empty object. The description does not need to explain parameters, and with 0 params the baseline is 4, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('official getting started guide for Radix primitives'), clearly distinguishing it from sibling tools like themes_get_getting_started and primitives_get_component_documentation. It is immediately obvious what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: use this tool when you need the getting started guide for Radix primitives. It does not explicitly mention alternatives or exclusions, but the tool name and sibling set make the context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

primitives_list_componentsA

Get all available Radix primitives components

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. The verb 'Get' implies a read-only operation, but the description does not explicitly state 'read-only' or note any side effects. It also does not describe return format or behavior. It is minimally transparent but adequate for a simple list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence: 'Get all available Radix primitives components'. Every word is necessary and no redundant information is included. It is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (no parameters, no output schema), the description is sufficiently complete. It explains the main function, and the output (a list of components) is implied. It could mention that the result is a list, but this is not critical due to the simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 0 parameters, so the baseline is 4. The description does not need to clarify parameter meanings as there are none. It correctly implies the tool takes no input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get all available Radix primitives components'. It uses a specific verb ('Get') and resource ('Radix primitives components'), and the inclusion of 'primitives' distinguishes it from sibling tools like 'themes_list_components'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: it is for listing primitives components, as opposed to themes components. However, it does not explicitly mention when to use this tool versus alternatives, nor does it state any exclusions. The context is clear but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

themes_get_component_documentationC

Get the documentation for a specific Radix themes component

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNameYesName of the Radix themes component (e.g., "accordion", "dialog")

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only restates the read operation without explaining output format, error handling, or what 'documentation' includes. No additional behavioral traits are revealed beyond what the name and schema already imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no filler. It is front-loaded with the action and clearly readable. While minimal, it is appropriately sized for the simple parameter set and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, and the description does not explain what the returned documentation looks like (format, structure, or content). While the parameter set is simple, the absence of output context leaves an agent uncertain about the tool's response, making the description incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a full description of componentName with an example, so the description adds little semantic value. It only confirms it is for Radix themes components, which the schema also states. Baseline of 3 is appropriate due to high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it gets documentation for a specific Radix themes component, using a clear verb and resource. It is distinct from sibling tools like themes_list_components and themes_get_component_source, though it does not explicitly contrast with primitives_get_component_documentation beyond the 'themes' context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., listing components first) or scenarios where themes_get_component_source or primitives_get_component_documentation would be more appropriate. The description lacks any usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

themes_get_component_sourceA

Get the source code for a specific Radix themes component

ParametersJSON Schema
NameRequiredDescriptionDefault
componentNameYesName of the Radix themes component (e.g., "accordion", "dialog")

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only says 'Get' without disclosing return format, error behavior, permissions, or side effects. The agent must infer this is a safe read operation, which is a gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words or unnecessary details. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the description is minimally adequate but leaves gaps. It doesn't clarify what 'source code' includes, whether the component name should match a specific casing, or how it relates to sibling tools like themes_get_component_documentation. The lack of annotations and output schema increases the burden, which the description only partially meets.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage, already describing componentName with examples ('accordion', 'dialog'). The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('source code for a specific Radix themes component'), using a specific verb and resource that distinguishes it from sibling tools like themes_get_component_documentation and primitives_get_component_source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving source code but provides no explicit when-to-use guidance, exclusions, or mentions of alternatives. Sibling tool names offer context externally, but the description itself does not guide the agent on choosing between source and documentation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

themes_get_getting_startedA

Get official getting started guide for Radix themes

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden of disclosing behavior. The description only says 'Get official getting started guide' without explaining whether it returns the guide text, a link, or what to expect. It also does not clarify that this is a safe read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence containing no superfluous words. It effectively front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with zero parameters and no output schema, the description provides a clear but minimal context: it exists to deliver the getting started guide. It omits details about return format or content, but given the tool's simplicity, it is largely sufficient, though not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, and the baseline for 0 params is 4. The description adds little parameter-specific meaning, but since there are no parameters, the schema fully covers this aspect.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to retrieve the official getting started guide for Radix themes. This specific verb-resource combination distinguishes it from sibling tools like primitives_get_getting_started and themes_get_component_documentation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The tool's purpose implies when to use it (when needing the getting started guide for Radix themes), but it does not explicitly state when to prefer this over alternatives or mention any exclusions. Sibling tools exist, but no comparative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

themes_list_componentsA

Get all available Radix themes components

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'Get all', which indicates a read operation, but it does not disclose what the returned data looks like (e.g., names only), whether any authentication is required, or any potential rate limits. For a tool with no output schema, this leaves some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word contributes to conveying the tool's purpose, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description covers the core functionality sufficiently. It could perhaps mention that the list contains component names or is sorted, but this is not essential for basic use. Overall, it is complete for a straightforward list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema shows zero parameters, so there are no parameter semantics to explain. The baseline for a 0-parameter tool is 4, and the description adds no unnecessary parameter-related information, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get all available Radix themes components' uses a specific verb 'Get all' and clearly identifies the resource 'Radix themes components'. It is distinct from sibling tools like themes_get_component_source and themes_get_component_documentation, which focus on fetching specific component details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: to discover available components before diving into individual source or documentation. However, it does not explicitly state when to use this tool versus alternatives, or mention any exclusions. For a simple list tool, the implied usage is clear but not formally articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct domain (themes, primitives, colors) and action (list, get source, get documentation, get started), with clear prefixes preventing confusion. Even similar actions are cleanly separated by domain.

Naming Consistency5/5

All tool names follow a consistent pattern of domain_verb_object using lowercase and underscores (e.g., themes_get_component_source, colors_list_scales). The verbs are uniformly 'list' or 'get', making the pattern highly predictable.

Tool Count5/5

With 11 tools covering three main areas (themes, primitives, colors), the count is well within the ideal range. Each tool earns its place by providing distinct retrieval actions for its domain.

Completeness4/5

The tool set provides comprehensive coverage for a documentation-focused server: listing, source retrieval, and documentation access for components and color scales, plus getting started guides for themes and primitives. The only minor gap is the absence of a getting started guide for colors, but this is not a critical missing operation.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gianpieropuleo/radix-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server