Component Library MCP
Click on "Install 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., "@Component Library MCPlist all React components used more than once"
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.
Component Library MCP
An MCP (Model Context Protocol) server that scans React and Vue projects, extracts component metadata (props, slots, events, imports, usage), and exposes it to AI coding agents via structured tools.
What it solves: When an AI coding agent writes UI code without context, it produces three recurring problems:
Duplicate components — creates
<UserCard>when<UserProfile>already exists.Wrong prop APIs — passes
labelwhen the component expectstitle, or misses a required prop.Inconsistent patterns — builds a one-off dialog instead of using the project's
<BaseDialog>.
This MCP gives the agent full visibility into your component library before it writes any UI code.
Requirements
Node.js ≥ 20
pnpm (other package managers also work — install deps however you like, the server is a plain Node script at runtime)
Related MCP server: tsx-query
Install & build
git clone <this-repo>
cd component-library-mcp
pnpm install
pnpm buildpnpm build emits a runnable server at dist/index.js.
Configure in Claude Code
The server scans whatever directory it is launched from (process.cwd()). Pick one of the two setups below — no PROJECT_ROOT needed.
Option A — Per-project .mcp.json (recommended)
Drop a .mcp.json file at the root of every React/Vue project you want to use the MCP with:
{
"mcpServers": {
"component-library": {
"command": "node",
"args": ["/absolute/path/to/component-library-mcp/dist/index.js"]
}
}
}Claude Code auto-loads .mcp.json from the open workspace. Each project can have its own env overrides (see below) without polluting other projects.
Option B — Global ~/.claude.json
If you usually work in one project at a time and always launch Claude Code from that project's directory:
{
"mcpServers": {
"component-library": {
"command": "node",
"args": ["/absolute/path/to/component-library-mcp/dist/index.js"]
}
}
}With no env vars set, the server scans process.cwd() — which is the directory Claude Code is opened in. Switch projects by opening a different folder in your editor / re-launching Claude Code from a different directory.
Restart Claude Code after changing either config. The server runs on stdio — there's no port, no daemon.
Environment variables (optional)
All env vars are optional. Set them under env: { ... } in the MCP config only when you need to override defaults.
Variable | Default | Description |
|
| Absolute path to scan. Usually you don't need to set this — the server uses the directory it was launched from. Only set it when that isn't what you want. |
|
| Comma-separated dirs to scan. |
|
|
|
|
| Comma-separated dir names or globs. Bare names become |
|
| Max recursion depth for |
|
| Parse |
|
|
|
Example .mcp.json with overrides:
{
"mcpServers": {
"component-library": {
"command": "node",
"args": ["/absolute/path/to/component-library-mcp/dist/index.js"],
"env": {
"COMPONENT_DIRS": "src/components,src/ui",
"FRAMEWORK": "react",
"EXCLUDE_PATTERNS": "node_modules,dist,__tests__,stories",
"INCLUDE_STORIES": "false",
"LOG_LEVEL": "info"
}
}
}
}Available tools
All 7 tools accept Zod-validated JSON input and return both content (text) and structuredContent (same data as structured output).
1. list_components
Summary of every component in the project. Agents typically call this first.
{ "framework": "react", "min_usage": 1, "include_props": false }Returns an alphabetically sorted array: { name, file_path, framework, prop_count, usage_count, has_stories, description?, tags? }.
2. get_component_details
Full metadata for one component — props, slots, events, description, story examples.
{ "name": "Button" }
// or
{ "file_path": "src/components/Button.tsx" }Fuzzy fallback: if name has no exact match, suggestions within Levenshtein distance ≤ 3 are returned.
3. search_components
Natural-language + structured search.
{
"query": "dialog modal",
"prop_type": "boolean",
"has_slot": "footer",
"limit": 10
}Returns ranked { name, score, reasons[] } hits. Weights: name 1.0, description 0.5, tags 0.6, prop names 0.35, path 0.2.
4. get_import_graph
Who imports what.
{ "component_name": "Button", "direction": "both", "depth": 2 }Returns dependencies[] (what this component imports) and dependents[] (who imports it, with is_page: true for pages/routes). Barrel files are followed through but not counted as dependents.
5. check_duplicate — highest-value tool
Call this before creating a new component.
{
"proposed_name": "UserCard",
"proposed_props": ["user", "size", "avatarUrl"],
"purpose": "display user profile card"
}Returns { has_duplicates, existing_matches[], recommendation } where recommendation is use_existing | extend_existing | create_new. Score combines name similarity (0.45), prop overlap (0.35), and purpose/description overlap (0.2), with a short-circuit to use_existing when proposed props are a full subset of an existing component.
6. get_component_usage_example
Real usage snippets from the codebase.
{ "component_name": "Button", "limit": 3 }Returns up to limit { file_path, code_snippet, props_used[] } examples (5–15 lines around the import line), plus story_examples[] from any matching .stories.(t|j)sx files.
7. refresh_cache
Force re-scan. Incremental by default.
{ "full_scan": true }Returns { components_found, scan_duration_ms, new_components[], removed_components[], reparsed_files[] }.
How it works
First tool call triggers a full scan. Subsequent calls do an
mtime-based incremental scan — only re-parses files that changed.React parsing handles function/arrow/FC components, HOC unwrapping (
memo,forwardRef,observer, nested), legacypropTypes, JSDoc, and cross-file type expansion via the TypeScript compiler API.Vue parsing handles
<script setup>typed + runtimedefineProps/defineEmits, Options API,defineComponent, named + scoped slots.Import graph includes page/route directories as consumers (so
usage_countreflects imports fromsrc/pages/**), follows barrel re-exports to source files, and resolves tsconfigpathsaliases.Performance — 200-component project scans in ~150ms; 2-file incremental scans in ~30ms.
Development
pnpm dev # tsx watch mode
pnpm test # vitest, all tests
pnpm test:perf # perf tests only
pnpm test:watch # vitest watch mode
pnpm build # tsc → dist/Troubleshooting
The server returns { components: [], total: 0 } for my project.
Make sure Claude Code was launched from (or has opened) the project root — where
package.jsonlives. The server scansprocess.cwd()by default.If the project root is somewhere else, set
PROJECT_ROOTin the MCP config'senvblock as a last resort.Run with
LOG_LEVEL=info. stderr will show which dirs the scanner tried and how many files it found.If you have a non-standard layout, set
COMPONENT_DIRSexplicitly (e.g.,"lib/ui,packages/core/components").
Framework is wrong.
Set
FRAMEWORK=reactorFRAMEWORK=vueexplicitly. Auto-detection readspackage.jsondeps (react,next,vue,nuxt).
Cross-file types show up as "Props" instead of "a" | "b".
The TS type resolver runs automatically. If it fails, the parser falls back to the alias name. Check
LOG_LEVEL=debugfor resolver errors — usually a missingtsconfig.jsonpath alias.
usage_count is 0 for a component that's clearly used.
Your importing files must live inside the scanned directories, or inside one of the auto-detected page dirs (
src/pages,src/routes,src/app,pages,routes,app). If imports come from a non-standard dir, add it toCOMPONENT_DIRS.
JSON-RPC protocol errors from the client.
The server writes only JSON-RPC to stdout. If you see garbage there, a dependency is using
console.log— open an issue. All of our logging goes to stderr viasrc/logger.ts.
Project layout
src/
index.ts # stdio entry point
server.ts # MCP server + tool registration
config.ts # env var parsing
logger.ts # stderr-only logger
lib/
types.ts # ComponentInfo, PropInfo, etc.
schemas.ts # Zod schemas for tool inputs
scanner/
file-scanner.ts # component dir discovery
page-scanner.ts # page/route dir discovery (for graph only)
framework-detector.ts # react vs vue
import-resolver.ts # relative + tsconfig paths
import-extractor.ts # AST → import statements
import-graph.ts # dependencies / dependents / usages
parsers/
react-parser.ts # TSX + HOC unwrap
vue-sfc-parser.ts # <script setup> / Options API / template slots
vue-tsx-parser.ts # Vue TSX (thin wrapper over react parser)
story-parser.ts # .stories.tsx
jsdoc-parser.ts # @tag, @param, description
ts-type-resolver.ts # cross-file type expansion via ts.Program
shared.ts
search/
fuzzy-match.ts # Levenshtein + token overlap
text-search.ts # ranked + structured filters
duplicate-detector.ts # name + prop + purpose scoring
cache/
component-cache.ts # in-memory file_path → entry
incremental-scan.ts # mtime diff + graph rebuild + story join
tools/
list-components.ts
get-component-details.ts
search-components.ts
get-import-graph.ts
check-duplicate.ts
get-usage-example.ts
refresh-cache.ts
tests/
fixtures/ # react-project, vue-project, mixed, nonstandard
parsers/ scanner/ search/ cache/ tools/ perf/License
ISC.
Available Tools
7 toolscheck_duplicateA
Check if a proposed component would duplicate an existing one. Call this BEFORE creating a new component. Returns similarity-ranked matches and a recommendation.
| Name | Required | Description | Default |
|---|---|---|---|
| proposed_name | Yes | ||
| proposed_props | No | ||
| purpose | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It states the tool is a 'check' and returns matches and a recommendation, implying read-only behavior. However, it does not explicitly confirm non-destructive nature or disclose any side effects, leaving 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two sentences that front-load the action and usage. Every word adds value, with no unnecessary 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 the lack of output schema, annotations, and parameter explanations, the description provides basic purpose and usage but omits details on what constitutes a duplicate or how the recommendation is structured. It is adequate but not fully complete for a tool of this 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 description coverage is 0%, and the description does not explain the parameters beyond their names (proposed_name, proposed_props, purpose). It fails to add meaning about formats, constraints, or usage rules for these parameters, which is insufficient for a tool with three parameters.
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: 'Check if a proposed component would duplicate an existing one.' It also specifies when to call it ('BEFORE creating a new component') and what it returns ('similarity-ranked matches and a recommendation'), making it distinct from sibling tools like search_components.
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: 'Call this BEFORE creating a new component.' This clearly indicates when to use the tool. However, it does not discuss when not to use it or suggest alternatives, but the context is sufficient for an AI agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_component_detailsA
Get full metadata for a specific component: props, slots, events, description, and story examples. Accepts component name or file_path.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description indicates a read operation (retrieving metadata) but does not explicitly state it is non-destructive or disclose potential errors, auth needs, or side effects. For a read-only tool, basic transparency is present but could be more explicit.
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 fluff. The main purpose is front-loaded, and every sentence adds value. Efficiently conveys 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?
Given no output schema and no annotations, the description provides essential info but lacks details on return format, error handling, behavior when both parameters are used, and what happens if both are omitted. Adequate but not fully 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 description coverage is 0%. The description adds meaning by stating that the tool accepts either 'name' or 'file_path' as identifiers, implying they are alternatives. However, it does not explain constraints, precedence if both are provided, or what happens if neither is given.
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 verb 'Get', the resource 'full metadata for a specific component', and lists specific metadata types (props, slots, events, description, story examples). It also mentions the two parameters, distinguishing it from sibling tools like 'list_components'.
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 mentions the tool accepts component name or file_path but does not provide explicit guidance on when to use this tool versus siblings like 'list_components' or 'search_components'. No when-not-to-use or alternative suggestions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_component_usage_exampleC
Get real usage examples of a component from the codebase (JSX/template snippets with surrounding context).
| Name | Required | Description | Default |
|---|---|---|---|
| component_name | Yes | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It mentions 'real usage examples' and 'snippets with context', but does not specify if it is read-only, performance implications, or what happens with limit. Minimal transparency.
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 a single sentence, concise and without redundancy. However, it is under-specified given the lack of parameter info, so it could be improved without sacrificing conciseness.
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?
With two parameters and no output schema, the description does not fully inform the agent. It omits return format, limit behavior, and edge cases, leaving the agent underinformed for a low-complexity tool.
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 0%, and the description does not explain the parameters at all. The agent has no guidance on what 'component_name' or 'limit' mean, despite 'limit' having an exclusiveMinimum constraint.
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 retrieves real usage examples of a component from the codebase, specifying snippets with context. It is not explicitly differentiated from siblings, but the purpose is specific enough.
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?
No guidelines are provided about when to use this tool versus alternatives like search_components or get_component_details. The agent has no indication of when to choose this over sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_import_graphC
Get dependencies and dependents for a component. Shows composition patterns and which pages/components use it.
| Name | Required | Description | Default |
|---|---|---|---|
| component_name | No | ||
| direction | No | ||
| depth | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits like whether the tool is read-only, any performance implications of depth, or required permissions. The agent has no information about side effects or limitations.
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 effectively front-load the action ('Get dependencies and dependents') and add context ('Shows composition patterns'). 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?
With three parameters, no output schema, and no annotations, the description is insufficient for complete understanding. It lacks details on parameter constraints, return format, and edge cases, making it hard for an agent to invoke correctly.
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 description coverage is 0%, and the description does not explain the three parameters (component_name, direction, depth). The agent must infer what values to use, especially for direction and depth, without any guidance.
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 indicates the tool retrieves dependencies and dependents for a component, distinguishing it from siblings like get_component_details (which gives broader details) and get_component_usage_example (which shows usage patterns). It mentions composition and page usage, adding specificity.
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?
No guidance on when to use this tool versus siblings. The description only states what it does, not context or alternatives. For example, it doesn't say when to prefer this over get_component_details or search_components.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_componentsC
List all components in the project with summary info (name, path, prop count, usage count). Call this first to see what's available.
| Name | Required | Description | Default |
|---|---|---|---|
| directory | No | ||
| framework | No | ||
| min_usage | No | ||
| include_props | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It indicates a read operation (listing), which is appropriate. However, it lacks details about pagination, ordering, or whether the list is live or cached. For a simple list tool, this is adequate but not thorough.
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 very concise (two sentences), front-loading the core purpose and a usage hint. No unnecessary words, though it could be slightly more structured.
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 tool with four parameters and no output schema, the description is incomplete. It omits parameter explanations, output format, and any constraints. The agent would need additional information to use the tool effectively, especially given the parameter 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?
The description does not explain any of the four parameters (directory, framework, min_usage, include_props). Since schema description coverage is 0%, the description fails to add meaning beyond the schema. The agent has no guidance on how to use these parameters, which is a critical gap.
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 lists all components and specifies the summary info fields (name, path, prop count, usage count). The verb 'list' and resource 'components' are unambiguous, and the suggestion to call it first gives context, though it does not explicitly distinguish from sibling tools like search_components.
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 to 'call this first to see what's available,' providing a general usage hint. However, it does not specify when not to use this tool (e.g., when filtering or searching is needed) or mention alternatives like search_components or get_component_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_cacheA
Force re-scan of all component files. Incremental by default; pass full_scan=true to clear the cache entirely.
| Name | Required | Description | Default |
|---|---|---|---|
| full_scan | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses incremental vs full scan behavior but omits details like side effects, performance impact, or safety of repeated calls.
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 with no wasted words, front-loaded purpose, and clear conditional guidance.
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 tool with one boolean param, the description covers the core behavior. Lacks context about what 'component files' are or any prerequisites, but still adequate.
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 0%, but the description explains the sole parameter (full_scan=true clears cache entirely), adding meaning beyond the schema's type-only definition.
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 action ('force re-scan of all component files') and differentiates from siblings (check_duplicate, get_component_details, etc.) by its cache refresh function.
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 explains when to use the full_scan parameter (to clear cache entirely) but does not provide explicit guidance on when to use this tool vs alternatives, nor any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_componentsA
Search components by natural-language query, prop name, prop type, or slot name. Returns ranked results.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| prop_name | No | ||
| prop_type | No | ||
| has_slot | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that results are ranked, but lacks details on the ranking mechanism, potential side effects, authentication requirements, or result limits. The behavior is partially transparent 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?
The description is extremely concise with two sentences. The first sentence front-loads the purpose and lists search criteria. No unnecessary 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?
For a tool with 5 parameters, no output schema, and no annotations, the description is insufficient. It lacks explanation of how multiple search criteria interact, result format, pagination, ranking details, and any constraints. More information is needed for an agent to use this tool reliably.
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 description coverage is 0%, so the description must add meaning beyond parameter names. It mentions the search modes (query, prop_name, prop_type, has_slot) which clarifies their role as search criteria. However, it does not explain parameter formats, combinations, or default behavior. This is adequate but not complete.
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 components by multiple criteria (natural-language query, prop name, prop type, slot name) and returns ranked results. This distinguishes it from sibling tools like list_components (lists all) and get_component_details (retrieves specific component info).
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 implies usage for searching components but does not explicitly state when to use this tool vs alternatives like list_components or get_component_details. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct purpose: checking duplicates, getting details, usage examples, import graph, listing, refreshing cache, and searching. No overlap, clear boundaries.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., check_duplicate, list_components, refresh_cache), making them predictable and readable.
Seven tools cover the essential operations for a component library: discovery, inspection, dependency analysis, and cache management. The scope is well-balanced, neither too sparse nor excessive.
The tool surface covers querying and analysis well (list, search, details, examples, dependencies) but lacks any creation or modification tools, which is a notable gap given the server's domain.
Maintenance
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
An MCP server that gives your AI access to the source code and docs of all public github repos
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
A registry of AI agent tools — MCP servers, APIs, CLIs, SDKs — kept current by automated ingestion.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that scans codebases to extract structural information (classes, functions, etc.) with flexible filtering options and outputs in LLM-friendly formats.12GPL 3.0
- AlicenseAqualityDmaintenanceSemantic React/TSX analysis MCP server that saves 70-90% tokens by using AST to retrieve precise component usages, prop flow, and state update information for AI coding assistants.1010MIT
- AlicenseNot gradedqualityDmaintenanceUniversal MCP server that analyzes any codebase and provides structured context to AI assistants. Dynamic, accurate, and token-efficient.14MIT
- AlicenseAqualityBmaintenanceAn MCP server that exposes a Svelte/SvelteKit project's component dependency graph over stdio, enabling AI coding assistants to query component imports, unused components, and route dependencies without an editor.515MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/vasyl-bilous/component-library-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server