This MCP server has significant definition quality gaps. Both tools are registered with schemas and descriptions, but several critical quality issues reduce their utility for LLM agents. Tool names follow verb conventions (searchComponents, getComponentInfo), which is positive. However, descriptions are minimal (34-56 chars, below the 50-200 char baseline for LLM optimization), parameter descriptions lack detail about constraints and valid values, and output schemas are not formally documented. Error handling returns basic error messages but lacks recovery guidance or error classification. The server lacks validation of critical security concerns like path traversal in the getComponentInfo tool.
Get the component source code of the specified path.
Search for components and retrieve their names and file paths.
Insufficient parameter descriptions. The 'query' parameter in searchComponents and 'path' parameter in getComponentInfo lack format constraints, valid value ranges, and usage guidance. LLMs cannot infer whether 'path' accepts relative or absolute paths, or validate against path traversal attacks.
Minimal tool descriptions (34-56 characters, well below 50-200 char baseline). Descriptions do not explain when to use each tool, what structure is returned, or how the tools compose. 'Search for components and retrieve their names and file paths' is functional but lacks context for agent decision-making.
No documented output schemas. Neither tool explicitly documents its response structure (e.g., the format of the filtered component array from searchComponents or the sourceCode field from getComponentInfo). LLMs cannot reliably extract or chain data without knowing the shape of responses.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 43 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 9 | - | v1 |
Path traversal vulnerability in getComponentInfo. The tool resolves user-supplied paths via path.resolve(componentsPath, componentPath) but does not validate that the resolved path remains within componentsPath. An attacker could pass '../../sensitive.txt' to read files outside the components directory.
Error responses lack recovery guidance. When searchComponents or getComponentInfo fail, error messages (e.g., 'An error occurred: ENOENT') provide no actionable next step for the LLM. Errors should indicate whether to retry, try alternative parameters, or escalate.
No pagination support in searchComponents. If COMPONENTS_PATH contains thousands of files, the tool returns all matching results, risking context window exhaustion. A production tool should accept limit and offset parameters and return a total count.
Hard-coded filtering logic (case-insensitive substring match) offers no control to the agent. If the agent needs exact matching or regex search, this tool cannot provide it. Consider parameterizing the search mode.