@maltjoy/mcp-server 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +30 -28
  2. package/dist/doc/VJoyAdminBanner/metadata.json +2 -0
  3. package/dist/doc/VJoyAvailability/metadata.json +2 -0
  4. package/dist/doc/VJoyAvatar/metadata.json +2 -0
  5. package/dist/doc/VJoyAvatarsList/metadata.json +2 -0
  6. package/dist/doc/VJoyBadge/metadata.json +2 -0
  7. package/dist/doc/VJoyBadgeLevel/metadata.json +2 -0
  8. package/dist/doc/VJoyBlockSkeleton/metadata.json +2 -0
  9. package/dist/doc/VJoyBottomSheet/metadata.json +2 -0
  10. package/dist/doc/VJoyBottomSheetTrigger/metadata.json +2 -0
  11. package/dist/doc/VJoyButton/metadata.json +2 -0
  12. package/dist/doc/VJoyButtonCard/JoyButtonCard.types.ts +15 -0
  13. package/dist/doc/VJoyButtonCard/metadata.json +78 -0
  14. package/dist/doc/VJoyCheckbox/JoyCheckbox.types.ts +26 -0
  15. package/dist/doc/VJoyCheckbox/metadata.json +29 -27
  16. package/dist/doc/VJoyCheckboxCard/JoyCheckboxCard.types.ts +8 -0
  17. package/dist/doc/VJoyCheckboxCard/metadata.json +221 -0
  18. package/dist/doc/VJoyCheckboxGroup/metadata.json +338 -0
  19. package/dist/doc/VJoyCollapse/metadata.json +2 -0
  20. package/dist/doc/VJoyCollapseItem/metadata.json +2 -0
  21. package/dist/doc/VJoyCompanyAvatar/metadata.json +2 -0
  22. package/dist/doc/VJoyDialog/metadata.json +2 -0
  23. package/dist/doc/VJoyDialogTrigger/metadata.json +2 -0
  24. package/dist/doc/VJoyDot/metadata.json +2 -0
  25. package/dist/doc/VJoyDrawer/metadata.json +2 -0
  26. package/dist/doc/VJoyDrawerTrigger/metadata.json +2 -0
  27. package/dist/doc/VJoyDropdown/metadata.json +76 -74
  28. package/dist/doc/VJoyDropdownList/metadata.json +2 -0
  29. package/dist/doc/VJoyDropzone/metadata.json +2 -0
  30. package/dist/doc/VJoyFilterBar/metadata.json +2 -0
  31. package/dist/doc/VJoyFilterBarButton/metadata.json +2 -0
  32. package/dist/doc/VJoyFloatingActionsBar/metadata.json +70 -0
  33. package/dist/doc/VJoyFormError/metadata.json +2 -0
  34. package/dist/doc/VJoyFormFieldSkeleton/metadata.json +2 -0
  35. package/dist/doc/VJoyFormGroup/metadata.json +2 -0
  36. package/dist/doc/VJoyFunnel/metadata.json +2 -0
  37. package/dist/doc/VJoyFunnelFooter/metadata.json +2 -0
  38. package/dist/doc/VJoyFunnelHeader/metadata.json +2 -0
  39. package/dist/doc/VJoyHighlight/metadata.json +2 -0
  40. package/dist/doc/VJoyIcon/metadata.json +2 -0
  41. package/dist/doc/VJoyIconButton/JoyIconButton.types.ts +6 -0
  42. package/dist/doc/VJoyIconButton/metadata.json +116 -0
  43. package/dist/doc/VJoyIndicator/metadata.json +2 -0
  44. package/dist/doc/VJoyIndicators/metadata.json +2 -0
  45. package/dist/doc/VJoyInput/JoyInput.types.ts +1 -1
  46. package/dist/doc/VJoyInput/metadata.json +18 -14
  47. package/dist/doc/VJoyInputDigit/metadata.json +2 -0
  48. package/dist/doc/VJoyInputNumber/metadata.json +286 -0
  49. package/dist/doc/VJoyInputPassword/metadata.json +36 -32
  50. package/dist/doc/VJoyLabel/metadata.json +6 -4
  51. package/dist/doc/VJoyLink/metadata.json +11 -9
  52. package/dist/doc/VJoyListItem/metadata.json +2 -0
  53. package/dist/doc/VJoyMenu/metadata.json +2 -0
  54. package/dist/doc/VJoyMenuItem/metadata.json +3 -1
  55. package/dist/doc/VJoyMultiCheckbox/metadata.json +193 -12
  56. package/dist/doc/VJoyPagination/metadata.json +2 -0
  57. package/dist/doc/VJoyPanel/metadata.json +2 -0
  58. package/dist/doc/VJoyPanelSection/metadata.json +2 -0
  59. package/dist/doc/VJoyPasswordRequirement/metadata.json +2 -0
  60. package/dist/doc/VJoyProductTour/metadata.json +2 -0
  61. package/dist/doc/VJoyProductTourTrigger/metadata.json +2 -0
  62. package/dist/doc/VJoyProgressBar/metadata.json +2 -5
  63. package/dist/doc/VJoyRadio/metadata.json +2 -0
  64. package/dist/doc/VJoyRadioGroup/metadata.json +4 -2
  65. package/dist/doc/VJoyRatingStars/metadata.json +2 -0
  66. package/dist/doc/VJoyScreenLoader/metadata.json +2 -0
  67. package/dist/doc/VJoySelect/metadata.json +34 -32
  68. package/dist/doc/VJoySelectableItem/metadata.json +2 -0
  69. package/dist/doc/VJoySelectableItemGroup/metadata.json +2 -0
  70. package/dist/doc/VJoySeparator/metadata.json +2 -0
  71. package/dist/doc/VJoySnackbar/metadata.json +2 -0
  72. package/dist/doc/VJoySpinner/metadata.json +2 -0
  73. package/dist/doc/VJoyStep/metadata.json +2 -0
  74. package/dist/doc/VJoyStepper/metadata.json +2 -0
  75. package/dist/doc/VJoyTab/metadata.json +2 -0
  76. package/dist/doc/VJoyTabs/metadata.json +2 -0
  77. package/dist/doc/VJoyTag/metadata.json +6 -4
  78. package/dist/doc/VJoyTagsInput/metadata.json +2 -0
  79. package/dist/doc/VJoyTagsList/metadata.json +19 -17
  80. package/dist/doc/VJoyTemplate/metadata.json +2 -0
  81. package/dist/doc/VJoyText/metadata.json +2 -0
  82. package/dist/doc/VJoyTextarea/metadata.json +25 -23
  83. package/dist/doc/VJoyTitleBrand/metadata.json +2 -0
  84. package/dist/doc/VJoyToggle/metadata.json +15 -13
  85. package/dist/doc/VJoyTooltip/metadata.json +2 -0
  86. package/dist/doc/VJoyUserCard/metadata.json +2 -0
  87. package/dist/doc/VJoyWalkthrough/metadata.json +2 -0
  88. package/dist/doc/VJoyWalkthroughTrigger/metadata.json +2 -0
  89. package/dist/doc/VJoyWrapper/metadata.json +20 -18
  90. package/dist/doc/css-classes.json +2 -0
  91. package/dist/doc/design-tokens.json +30 -30
  92. package/dist/doc/index.json +223 -17
  93. package/dist/parser.d.ts +12 -0
  94. package/dist/parser.d.ts.map +1 -1
  95. package/dist/parser.js +25 -0
  96. package/dist/parser.js.map +1 -1
  97. package/dist/tools/get-component-info.js +1 -1
  98. package/dist/tools/get-component-info.js.map +1 -1
  99. package/dist/tools/list-components.d.ts +2 -4
  100. package/dist/tools/list-components.d.ts.map +1 -1
  101. package/dist/tools/list-components.js +24 -7
  102. package/dist/tools/list-components.js.map +1 -1
  103. package/package.json +3 -2
  104. package/dist/doc/VJoyTemplateShape/metadata.json +0 -9
package/dist/parser.d.ts CHANGED
@@ -7,11 +7,23 @@ export declare function parseComponentNames(): string[];
7
7
  * Get component count
8
8
  */
9
9
  export declare function getComponentCount(): number;
10
+ export interface ComponentSummary {
11
+ name: string;
12
+ description: string;
13
+ category: string;
14
+ }
15
+ /**
16
+ * Parse the Joy components documentation JSON file
17
+ * and extract component names with descriptions from the index
18
+ */
19
+ export declare function parseComponentSummaries(): ComponentSummary[];
10
20
  /**
11
21
  * Interface for component information
12
22
  */
13
23
  export interface ComponentInfo {
14
24
  name: string;
25
+ description: string;
26
+ category: string;
15
27
  props: PropInfo[];
16
28
  events: EventInfo[];
17
29
  slots: SlotInfo[];
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAmB9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,iBAAiB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAoC9E"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAmB9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,gBAAgB,EAAE,CAmB5D;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,iBAAiB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAsC9E"}
package/dist/parser.js CHANGED
@@ -31,6 +31,29 @@ export function parseComponentNames() {
31
31
  export function getComponentCount() {
32
32
  return parseComponentNames().length;
33
33
  }
34
+ /**
35
+ * Parse the Joy components documentation JSON file
36
+ * and extract component names with descriptions from the index
37
+ */
38
+ export function parseComponentSummaries() {
39
+ try {
40
+ const indexPath = join(__dirname, 'doc/index.json');
41
+ const content = readFileSync(indexPath, 'utf-8');
42
+ const data = JSON.parse(content);
43
+ if (data.components && Array.isArray(data.components)) {
44
+ return data.components.map((comp) => ({
45
+ name: comp.name,
46
+ description: comp.description || '',
47
+ category: comp.category || 'Uncategorized',
48
+ }));
49
+ }
50
+ return [];
51
+ }
52
+ catch (error) {
53
+ console.error('Error parsing component summaries:', error instanceof Error ? error.message : String(error));
54
+ return [];
55
+ }
56
+ }
34
57
  /**
35
58
  * Parse and extract all information for a specific component from JSON
36
59
  */
@@ -43,6 +66,8 @@ export function parseComponentInfo(componentName) {
43
66
  // Map JSON structure to ComponentInfo interface
44
67
  return {
45
68
  name: data.displayName || componentName,
69
+ description: data.description || '',
70
+ category: data.category || 'Uncategorized',
46
71
  props: data.props.map((prop) => ({
47
72
  name: prop.name,
48
73
  type: prop.type,
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,IAAI,CAAC;QACH,iFAAiF;QACjF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAEpD,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjC,oDAAoD;QACpD,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxG,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,mBAAmB,EAAE,CAAC,MAAM,CAAC;AACtC,CAAC;AAsCD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB;IACtD,IAAI,CAAC;QACH,8FAA8F;QAC9F,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEjC,gDAAgD;QAChD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,aAAa;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;gBACpC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,GAAG;gBAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS;aAC5F,CAAC,CAAC;YACH,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;YACH,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;gBACpC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAC;YACH,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAAC;gBAC7D,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU;aAC3C,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;SACT,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,aAAa,GAAG,EAAE,KAAK,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,MAAW;IACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { parseComponentInfo } from '../parser.js';
4
4
  */
5
5
  export const getComponentInfoTool = {
6
6
  name: 'joy_get_component_info',
7
- description: 'Retrieves detailed information about a specific Joy Vue3 component including props, events, slots, and exposed members. Provide the exact component name (e.g., VJoyButton).',
7
+ description: 'Retrieves detailed information about a specific Joy Vue3 component including description, category, props, events, slots, and exposed members. Provide the exact component name (e.g., VJoyButton).',
8
8
  inputSchema: {
9
9
  type: 'object',
10
10
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"get-component-info.js","sourceRoot":"","sources":["../../src/tools/get-component-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAiB,MAAM,cAAc,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,8KAA8K;IAC3L,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gEAAgE;aAC9E;SACF;QACD,QAAQ,EAAE,CAAC,eAAe,CAAC;KAC5B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,aAAqB;IAChE,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO;YACL,KAAK,EAAE,mFAAmF;SAC3F,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAExD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,KAAK,EAAE,cAAc,aAAa,6EAA6E;SAChH,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"get-component-info.js","sourceRoot":"","sources":["../../src/tools/get-component-info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAiB,MAAM,cAAc,CAAC;AAEjE;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE,qMAAqM;IAClN,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,aAAa,EAAE;gBACb,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gEAAgE;aAC9E;SACF;QACD,QAAQ,EAAE,CAAC,eAAe,CAAC;KAC5B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,aAAqB;IAChE,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACxD,OAAO;YACL,KAAK,EAAE,mFAAmF;SAC3F,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAExD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,KAAK,EAAE,cAAc,aAAa,6EAA6E;SAChH,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type ComponentSummary } from '../parser.js';
1
2
  /**
2
3
  * Tool definition for listing all Joy Vue components
3
4
  */
@@ -13,8 +14,5 @@ export declare const listComponentsTool: {
13
14
  /**
14
15
  * Handler for the list components tool
15
16
  */
16
- export declare function handleListComponents(): Promise<{
17
- components: string[];
18
- count: number;
19
- }>;
17
+ export declare function handleListComponents(): Promise<Record<string, Array<Pick<ComponentSummary, 'name' | 'description'>>>>;
20
18
  //# sourceMappingURL=list-components.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-components.d.ts","sourceRoot":"","sources":["../../src/tools/list-components.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;CAQ9B,CAAC;AAEF;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAO7F"}
1
+ {"version":3,"file":"list-components.d.ts","sourceRoot":"","sources":["../../src/tools/list-components.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;CAQ9B,CAAC;AAEF;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CA0B3H"}
@@ -1,10 +1,10 @@
1
- import { parseComponentNames } from '../parser.js';
1
+ import { parseComponentSummaries } from '../parser.js';
2
2
  /**
3
3
  * Tool definition for listing all Joy Vue components
4
4
  */
5
5
  export const listComponentsTool = {
6
6
  name: 'joy_list_components',
7
- description: 'Lists all available Joy Vue3 components from the @maltjoy/core-vue library. Returns an array of component names (e.g., VJoyButton, VJoyAvatar, etc.).',
7
+ description: 'Lists all available Joy Vue3 components from the @maltjoy/core-vue library as a flat object keyed by category name. Each entry contains components with their name and description.',
8
8
  inputSchema: {
9
9
  type: 'object',
10
10
  properties: {},
@@ -15,10 +15,27 @@ export const listComponentsTool = {
15
15
  * Handler for the list components tool
16
16
  */
17
17
  export async function handleListComponents() {
18
- const components = parseComponentNames();
19
- return {
20
- components,
21
- count: components.length
22
- };
18
+ const components = parseComponentSummaries();
19
+ const categoriesByName = new Map();
20
+ for (const component of components) {
21
+ const categoryName = component.category || 'Uncategorized';
22
+ const bucket = categoriesByName.get(categoryName);
23
+ const componentSummary = {
24
+ name: component.name,
25
+ description: component.description
26
+ };
27
+ if (bucket) {
28
+ bucket.push(componentSummary);
29
+ }
30
+ else {
31
+ categoriesByName.set(categoryName, [componentSummary]);
32
+ }
33
+ }
34
+ return Object.fromEntries(Array.from(categoriesByName.entries())
35
+ .sort(([left], [right]) => left.localeCompare(right))
36
+ .map(([name, categoryComponents]) => [
37
+ name,
38
+ categoryComponents.sort((left, right) => left.name.localeCompare(right.name))
39
+ ]));
23
40
  }
24
41
  //# sourceMappingURL=list-components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list-components.js","sourceRoot":"","sources":["../../src/tools/list-components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,uJAAuJ;IACpK,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IAEzC,OAAO;QACL,UAAU;QACV,KAAK,EAAE,UAAU,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"list-components.js","sourceRoot":"","sources":["../../src/tools/list-components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAyB,MAAM,cAAc,CAAC;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,qLAAqL;IAClM,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE;QACd,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC;IAC7C,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAiE,CAAC;IAElG,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,IAAI,eAAe,CAAC;QAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG;YACvB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,WAAW,EAAE,SAAS,CAAC,WAAW;SACnC,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,WAAW,CACvB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;SACrC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI;QACJ,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC9E,CAAC,CACH,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maltjoy/mcp-server",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "MCP server for Joy Design System - exposes Vue3 components information",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,7 +14,7 @@
14
14
  "build": "tsc && npm run generate:components-docs:json",
15
15
  "dev": "tsc --watch",
16
16
  "start": "node dist/index.js",
17
- "generate:components-docs:json": "node src/json-metadata-generator.mjs",
17
+ "generate:components-docs:json": "tsx src/json-metadata-generator.mjs",
18
18
  "inspector": "pnpx @modelcontextprotocol/inspector node ./dist/index.js"
19
19
  },
20
20
  "keywords": [
@@ -31,6 +31,7 @@
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "20.14.2",
34
+ "tsx": "^4.21.0",
34
35
  "typescript": "5.3.3",
35
36
  "vue-component-meta": "3.1.5"
36
37
  }
@@ -1,9 +0,0 @@
1
- {
2
- "name": "JoyTemplateShape",
3
- "displayName": "VJoyTemplateShape",
4
- "props": [],
5
- "events": [],
6
- "slots": [],
7
- "exposed": [],
8
- "hasVModel": false
9
- }