Skip to main content
Glama

@galaxy-stack/nebula-mcp

npm version npm downloads License: MIT

Nebula MCP Server — exposes Galaxy UI components to AI assistants through the Model Context Protocol. Works with Claude Desktop, Cursor, Windsurf, Cline, and any MCP-compatible client.

Tools

Tool

Description

list_components

All components with per-framework availability (React, Vue, Angular, React Native, Flutter)

get_component

Detailed manifest — props, files, dependencies, framework status

get_component_source

Actual source code for a specific component file

get_coverage

Coverage matrix across all 5 frameworks (67 components)

search_components

Search by name or description

All component data + 700 source files are bundled inside the package — zero setup, works offline.

Related MCP server: Grafana UI MCP Server

Install

npx -y @smithery/cli@latest install galaxy-stack/design-mcp --client claude

npx (manual)

Add to your MCP client config:

{
  "mcpServers": {
    "galaxy-ui": {
      "command": "npx",
      "args": ["-y", "@galaxy-stack/nebula-mcp"]
    }
  }
}
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Cursor: ~/.cursor/mcp.json

Remote endpoint

Paste into clients that support remote MCP (Claude web Custom Connectors):

https://nebula-mcp--galaxy-stack.run.tools

Try it

"List Galaxy UI components for React"

"Show me the source code of the Vue Select component"

"Which components are missing in Flutter?"

Registries

Publishing (maintainers)

  1. Bump version in package.json

  2. Push to main — GitHub Actions workflow publish-mcp.yml builds contracts artifacts, bundles data, verifies the version is new, and publishes via npm Trusted Publishing (OIDC) — no NPM_TOKEN required

  3. Rebuild the MCPB bundle and run smithery mcp publish for Smithery

License

MIT © Bùi Trọng Hiếu (kevinbui)

Available Tools

5 tools
get_componentA

Get detailed metadata for a specific component including props, files, and per-framework status

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComponent ID (e.g. button, dialog)

TDQS

A4/5.0
Behavior3/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 indicates a read operation ('Get') and enumerates returned content, which implies no destructive side effects. But it does not explicitly state that it is read-only, nor does it mention error behavior (e.g., invalid ID) or any auth/rate-limit considerations, leaving some transparency gap.

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, efficiently front-loaded sentence that begins with the action and object, then adds relevant detail. No filler or redundant phrasing.

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 one required parameter and no output schema, the description communicates the core purpose and the kind of data returned. It does not cover edge-case behavior like not-found responses, but that is a minor omission for a simple read-only metadata call, so it is mostly complete.

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% (the 'id' parameter is described as 'Component ID (e.g. button, dialog)'). The description adds only the context of a 'specific component', which aligns with the schema but does not provide additional syntax, constraints, or examples beyond it, so baseline 3 applies.

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 names the resource ('detailed metadata for a specific component') with concrete content ('props, files, and per-framework status'). This clearly differentiates it from siblings like list_components (listing), get_component_source (source code), and search_components (searching).

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 phrase 'for a specific component' establishes a clear context: use this when you have a component ID and need details, not for browsing or searching. However, it does not explicitly name alternatives or state when not to use it, so it falls short of explicit exclusion guidance.

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

get_component_sourceC

Read the source code of a specific component file

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesComponent ID
fileYesFile name (e.g. Button.tsx)
frameworkYes

TDQS

C2.9/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. The word 'Read' implies a safe read-only operation, but the description does not state whether the full file is returned, how errors or missing files are handled, or whether any special permissions/framework context are needed.

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

Conciseness4/5

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

A single sentence with no filler or redundancy; the core action is front-loaded. It is appropriately concise for a simple tool, though it sacrifices useful context for brevity.

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 tool with three required parameters and no output schema, the description is minimal. It does not clarify return format, the meaning of the framework parameter in practice, or how 'file' should be specified relative to the component, leaving significant gaps for an agent.

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 coverage is 67%, with id and file already described in the schema and framework constrained by an enum. The description itself contributes no parameter-level meaning, so it adds little beyond the structured schema, but the schema covers most of the burden.

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 uses a clear verb ('read') and a specific resource ('source code of a specific component file'), which effectively conveys the core action and object. However, it does not differentiate this tool from the sibling get_component, so an agent must infer the boundary from the name alone.

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 given about when to use this tool versus siblings like get_component or search_components. There are no usage contexts, prerequisites, or exclusions stated, leaving the agent to guess based on the tool name.

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

get_coverageA

Get component availability coverage across all frameworks

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 full responsibility for behavioral disclosure. It only states what the tool does (gets coverage) without revealing whether it is a read-only operation, any performance implications, or what the response format looks like. For a tool with zero parameters and no output schema, this is a notable gap.

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, well-formed sentence that front-loads the action and scope. It contains no extraneous words and is immediately understandable.

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 tool with no parameters and no output schema, the description provides a minimal but sufficient idea of the tool's purpose. However, it does not clarify what 'coverage' means in terms of output structure, such as whether it returns counts, percentages, or per-framework breakdowns. An agent might need more detail to interpret the result correctly.

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 0 parameters, so the baseline is 4. The description does not need to explain parameters, and it correctly omits any parameter-specific information. This score reflects the absence of parameter complexity rather than any descriptive effort.

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 verb 'Get', the resource 'component availability coverage', and the scope 'across all frameworks'. This differentiates it from sibling tools like list_components (which lists components) and get_component (which fetches a specific component) by focusing on coverage metrics.

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 that this tool is used when coverage data is needed, but it does not explicitly state when to prefer it over alternatives or mention any exclusion criteria. No alternatives are referenced, leaving the agent to infer the appropriate context from the tool's purpose.

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

list_componentsA

List all available Galaxy UI components with their availability per framework

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkNoFilter by framework (optional)

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 behavioral disclosure burden. It indicates a read-only listing operation and mentions that output includes framework availability, but it does not describe potential limitations like pagination, sorting, or response size. For a simple list tool, this is adequate but leaves some behavioral aspects 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, efficient sentence that front-loads the primary action and scope. No unnecessary words 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 simple optional parameter (fully documented in schema) and no output schema, the description is sufficiently informative. It communicates the main purpose and output content (framework availability). Minor omissions like pagination or result ordering are acceptable for a list tool and do not hinder correct invocation.

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 schema fully documents the single optional 'framework' parameter with enum values and a clear description (100% coverage). The tool description does not add any additional meaning beyond the schema, so the baseline of 3 applies.

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 ('List') and a clear resource ('all available Galaxy UI components'), and adds a distinguishing detail ('with their availability per framework'). This clearly separates it from siblings like get_component (retrieves a specific component) and search_components (searches for components).

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 clearly states the tool's purpose, making it obvious when to use it (when you need a complete list of components). However, it does not explicitly exclude alternatives or mention when not to use it (e.g., for a specific component or search), so it lacks explicit guidance but is contextually clear.

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

search_componentsB

Search components by name or description

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry full behavioral disclosure. It only says 'Search', which implies a read operation, but doesn't describe matching behavior (partial/fuzzy), result ordering, pagination, or what happens with an empty query. This is a significant gap for a tool with no annotation safety net.

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?

A single, front-loaded sentence with no filler. Every word contributes: the verb, target, and searchable fields are all present, making it maximally concise while remaining informative.

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 tool this is thin: the query parameter is not marked required, yet the description gives no clue about calling with an empty query or what the output looks like. Compound that with zero annotations and usage guidance, and the agent is left to guess at core calling expectations.

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 schema only says 'Search query' for the query parameter. The tool description adds that the query matches against name or description, giving the parameter meaningful context beyond the schema. Although coverage is 100%, this added semantic value lifts the score above baseline.

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 states a clear action ('Search'), a resource ('components'), and the search fields ('name or description'). It is specific enough to distinguish from list_components (list all vs query-based search) and get_component (retrieve specific by ID), though it doesn't explicitly name alternatives.

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 given about when to use this tool versus siblings like list_components or get_component. An agent cannot infer whether search is for free-text exploration or exact lookups, and there is no mention of exclusions, prerequisites, or query optionality.

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.

  1. 5 tool updatesv1.0.1
    • First observedget_component
    • First observedget_component_source
    • First observedget_coverage
    • First observedlist_components
    • First observedsearch_components

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing all, getting metadata, reading source, coverage statistics, and searching. There is no ambiguity between them.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (list_, get_, get_, get_, search_) with clear resource names, making them predictable and easy to distinguish.

Tool Count5/5

With 5 tools, the set is well-scoped for a component registry server, providing exactly the necessary operations without unnecessary bloat or gaps.

Completeness5/5

The read-only surface covers all core needs: listing, detailed metadata, source retrieval, coverage reporting, and search. There are no obvious missing operations for this domain.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Provides AI assistants with comprehensive access to Grafana's React component library, including TypeScript source code, MDX documentation, Storybook examples, test files, and design system tokens for building Grafana-compatible interfaces.
    1
    13 npm
    9
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI assistants with access to AegisX UI components, CRUD generator commands, development patterns, and API contract discovery tools. It enables developers to browse component documentation, build generation commands, and test authenticated API endpoints through the Model Context Protocol.
    6 npm
    MIT