mozaic-mcp-server 1.0.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 (161) hide show
  1. package/INSTALLATION.md +232 -0
  2. package/README.md +262 -0
  3. package/SKILLS.md +411 -0
  4. package/bin/install-skills.js +171 -0
  5. package/data/mozaic.db +0 -0
  6. package/data/mozaic.db-shm +0 -0
  7. package/data/mozaic.db-wal +0 -0
  8. package/dist/__tests__/sanity-check.test.d.ts +2 -0
  9. package/dist/__tests__/sanity-check.test.d.ts.map +1 -0
  10. package/dist/__tests__/sanity-check.test.js +167 -0
  11. package/dist/__tests__/sanity-check.test.js.map +1 -0
  12. package/dist/__tests__/tools.integration.test.d.ts +2 -0
  13. package/dist/__tests__/tools.integration.test.d.ts.map +1 -0
  14. package/dist/__tests__/tools.integration.test.js +220 -0
  15. package/dist/__tests__/tools.integration.test.js.map +1 -0
  16. package/dist/db/queries.d.ts +144 -0
  17. package/dist/db/queries.d.ts.map +1 -0
  18. package/dist/db/queries.js +536 -0
  19. package/dist/db/queries.js.map +1 -0
  20. package/dist/db/schema.d.ts +4 -0
  21. package/dist/db/schema.d.ts.map +1 -0
  22. package/dist/db/schema.js +253 -0
  23. package/dist/db/schema.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +416 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/parsers/__tests__/docs-parser.test.d.ts +2 -0
  29. package/dist/parsers/__tests__/docs-parser.test.d.ts.map +1 -0
  30. package/dist/parsers/__tests__/docs-parser.test.js +251 -0
  31. package/dist/parsers/__tests__/docs-parser.test.js.map +1 -0
  32. package/dist/parsers/__tests__/icons-parser.test.d.ts +2 -0
  33. package/dist/parsers/__tests__/icons-parser.test.d.ts.map +1 -0
  34. package/dist/parsers/__tests__/icons-parser.test.js +169 -0
  35. package/dist/parsers/__tests__/icons-parser.test.js.map +1 -0
  36. package/dist/parsers/__tests__/react-parser.test.d.ts +2 -0
  37. package/dist/parsers/__tests__/react-parser.test.d.ts.map +1 -0
  38. package/dist/parsers/__tests__/react-parser.test.js +274 -0
  39. package/dist/parsers/__tests__/react-parser.test.js.map +1 -0
  40. package/dist/parsers/__tests__/scss-parser.test.d.ts +2 -0
  41. package/dist/parsers/__tests__/scss-parser.test.d.ts.map +1 -0
  42. package/dist/parsers/__tests__/scss-parser.test.js +364 -0
  43. package/dist/parsers/__tests__/scss-parser.test.js.map +1 -0
  44. package/dist/parsers/__tests__/tokens-parser.test.d.ts +2 -0
  45. package/dist/parsers/__tests__/tokens-parser.test.d.ts.map +1 -0
  46. package/dist/parsers/__tests__/tokens-parser.test.js +172 -0
  47. package/dist/parsers/__tests__/tokens-parser.test.js.map +1 -0
  48. package/dist/parsers/__tests__/vue-parser.test.d.ts +2 -0
  49. package/dist/parsers/__tests__/vue-parser.test.d.ts.map +1 -0
  50. package/dist/parsers/__tests__/vue-parser.test.js +207 -0
  51. package/dist/parsers/__tests__/vue-parser.test.js.map +1 -0
  52. package/dist/parsers/docs-parser.d.ts +4 -0
  53. package/dist/parsers/docs-parser.d.ts.map +1 -0
  54. package/dist/parsers/docs-parser.js +237 -0
  55. package/dist/parsers/docs-parser.js.map +1 -0
  56. package/dist/parsers/icons-parser.d.ts +33 -0
  57. package/dist/parsers/icons-parser.d.ts.map +1 -0
  58. package/dist/parsers/icons-parser.js +125 -0
  59. package/dist/parsers/icons-parser.js.map +1 -0
  60. package/dist/parsers/react-parser.d.ts +3 -0
  61. package/dist/parsers/react-parser.d.ts.map +1 -0
  62. package/dist/parsers/react-parser.js +406 -0
  63. package/dist/parsers/react-parser.js.map +1 -0
  64. package/dist/parsers/scss-parser.d.ts +9 -0
  65. package/dist/parsers/scss-parser.d.ts.map +1 -0
  66. package/dist/parsers/scss-parser.js +351 -0
  67. package/dist/parsers/scss-parser.js.map +1 -0
  68. package/dist/parsers/tokens/border-parser.d.ts +3 -0
  69. package/dist/parsers/tokens/border-parser.d.ts.map +1 -0
  70. package/dist/parsers/tokens/border-parser.js +83 -0
  71. package/dist/parsers/tokens/border-parser.js.map +1 -0
  72. package/dist/parsers/tokens/color-parser.d.ts +3 -0
  73. package/dist/parsers/tokens/color-parser.d.ts.map +1 -0
  74. package/dist/parsers/tokens/color-parser.js +88 -0
  75. package/dist/parsers/tokens/color-parser.js.map +1 -0
  76. package/dist/parsers/tokens/grid-parser.d.ts +3 -0
  77. package/dist/parsers/tokens/grid-parser.d.ts.map +1 -0
  78. package/dist/parsers/tokens/grid-parser.js +97 -0
  79. package/dist/parsers/tokens/grid-parser.js.map +1 -0
  80. package/dist/parsers/tokens/index.d.ts +9 -0
  81. package/dist/parsers/tokens/index.d.ts.map +1 -0
  82. package/dist/parsers/tokens/index.js +10 -0
  83. package/dist/parsers/tokens/index.js.map +1 -0
  84. package/dist/parsers/tokens/screen-parser.d.ts +3 -0
  85. package/dist/parsers/tokens/screen-parser.d.ts.map +1 -0
  86. package/dist/parsers/tokens/screen-parser.js +54 -0
  87. package/dist/parsers/tokens/screen-parser.js.map +1 -0
  88. package/dist/parsers/tokens/shadow-parser.d.ts +3 -0
  89. package/dist/parsers/tokens/shadow-parser.d.ts.map +1 -0
  90. package/dist/parsers/tokens/shadow-parser.js +62 -0
  91. package/dist/parsers/tokens/shadow-parser.js.map +1 -0
  92. package/dist/parsers/tokens/spacing-parser.d.ts +4 -0
  93. package/dist/parsers/tokens/spacing-parser.d.ts.map +1 -0
  94. package/dist/parsers/tokens/spacing-parser.js +85 -0
  95. package/dist/parsers/tokens/spacing-parser.js.map +1 -0
  96. package/dist/parsers/tokens/types.d.ts +33 -0
  97. package/dist/parsers/tokens/types.d.ts.map +1 -0
  98. package/dist/parsers/tokens/types.js +42 -0
  99. package/dist/parsers/tokens/types.js.map +1 -0
  100. package/dist/parsers/tokens/typography-parser.d.ts +3 -0
  101. package/dist/parsers/tokens/typography-parser.d.ts.map +1 -0
  102. package/dist/parsers/tokens/typography-parser.js +76 -0
  103. package/dist/parsers/tokens/typography-parser.js.map +1 -0
  104. package/dist/parsers/tokens-parser.d.ts +18 -0
  105. package/dist/parsers/tokens-parser.d.ts.map +1 -0
  106. package/dist/parsers/tokens-parser.js +57 -0
  107. package/dist/parsers/tokens-parser.js.map +1 -0
  108. package/dist/parsers/vue-parser.d.ts +3 -0
  109. package/dist/parsers/vue-parser.d.ts.map +1 -0
  110. package/dist/parsers/vue-parser.js +343 -0
  111. package/dist/parsers/vue-parser.js.map +1 -0
  112. package/dist/tools/generate-react-component.d.ts +35 -0
  113. package/dist/tools/generate-react-component.d.ts.map +1 -0
  114. package/dist/tools/generate-react-component.js +81 -0
  115. package/dist/tools/generate-react-component.js.map +1 -0
  116. package/dist/tools/generate-vue-component.d.ts +35 -0
  117. package/dist/tools/generate-vue-component.d.ts.map +1 -0
  118. package/dist/tools/generate-vue-component.js +81 -0
  119. package/dist/tools/generate-vue-component.js.map +1 -0
  120. package/dist/tools/get-component-info.d.ts +52 -0
  121. package/dist/tools/get-component-info.d.ts.map +1 -0
  122. package/dist/tools/get-component-info.js +94 -0
  123. package/dist/tools/get-component-info.js.map +1 -0
  124. package/dist/tools/get-css-utility.d.ts +41 -0
  125. package/dist/tools/get-css-utility.d.ts.map +1 -0
  126. package/dist/tools/get-css-utility.js +57 -0
  127. package/dist/tools/get-css-utility.js.map +1 -0
  128. package/dist/tools/get-design-tokens.d.ts +44 -0
  129. package/dist/tools/get-design-tokens.d.ts.map +1 -0
  130. package/dist/tools/get-design-tokens.js +124 -0
  131. package/dist/tools/get-design-tokens.js.map +1 -0
  132. package/dist/tools/get-icon.d.ts +32 -0
  133. package/dist/tools/get-icon.d.ts.map +1 -0
  134. package/dist/tools/get-icon.js +108 -0
  135. package/dist/tools/get-icon.js.map +1 -0
  136. package/dist/tools/get-install-info.d.ts +39 -0
  137. package/dist/tools/get-install-info.d.ts.map +1 -0
  138. package/dist/tools/get-install-info.js +160 -0
  139. package/dist/tools/get-install-info.js.map +1 -0
  140. package/dist/tools/list-components.d.ts +32 -0
  141. package/dist/tools/list-components.d.ts.map +1 -0
  142. package/dist/tools/list-components.js +62 -0
  143. package/dist/tools/list-components.js.map +1 -0
  144. package/dist/tools/list-css-utilities.d.ts +27 -0
  145. package/dist/tools/list-css-utilities.d.ts.map +1 -0
  146. package/dist/tools/list-css-utilities.js +48 -0
  147. package/dist/tools/list-css-utilities.js.map +1 -0
  148. package/dist/tools/search-documentation.d.ts +37 -0
  149. package/dist/tools/search-documentation.d.ts.map +1 -0
  150. package/dist/tools/search-documentation.js +120 -0
  151. package/dist/tools/search-documentation.js.map +1 -0
  152. package/dist/tools/search-icons.d.ts +41 -0
  153. package/dist/tools/search-icons.d.ts.map +1 -0
  154. package/dist/tools/search-icons.js +134 -0
  155. package/dist/tools/search-icons.js.map +1 -0
  156. package/package.json +98 -0
  157. package/skills/mozaic-css-utilities/skill.md +633 -0
  158. package/skills/mozaic-design-tokens/skill.md +621 -0
  159. package/skills/mozaic-icons/skill.md +624 -0
  160. package/skills/mozaic-react-builder/skill.md +652 -0
  161. package/skills/mozaic-vue-builder/skill.md +491 -0
@@ -0,0 +1,160 @@
1
+ import { getComponentBySlug, listComponents } from "../db/queries.js";
2
+ const PACKAGES = {
3
+ vue: {
4
+ name: "@mozaic-ds/vue-3",
5
+ peerDependencies: ["vue@^3.0"],
6
+ },
7
+ react: {
8
+ name: "@mozaic-ds/react",
9
+ peerDependencies: ["react@^17 || ^18", "react-dom@^17 || ^18"],
10
+ },
11
+ };
12
+ const RELATED_PACKAGES = {
13
+ styles: "@mozaic-ds/styles",
14
+ icons: "@mozaic-ds/icons",
15
+ };
16
+ function pascalCase(str) {
17
+ return str
18
+ .split(/[-_\s]+/)
19
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
20
+ .join("");
21
+ }
22
+ function getInstallCommand(packageName, packageManager) {
23
+ switch (packageManager) {
24
+ case "yarn":
25
+ return `yarn add ${packageName}`;
26
+ case "pnpm":
27
+ return `pnpm add ${packageName}`;
28
+ default:
29
+ return `npm install ${packageName}`;
30
+ }
31
+ }
32
+ export function handleGetInstallInfo(db, input) {
33
+ const { component, framework = "vue", packageManager = "npm" } = input;
34
+ if (!component || component.trim().length === 0) {
35
+ const components = listComponents(db).slice(0, 10);
36
+ return {
37
+ content: [
38
+ {
39
+ type: "text",
40
+ text: JSON.stringify({
41
+ error: "Please provide a component name",
42
+ example: 'get_install_info({ component: "button", framework: "vue" })',
43
+ availableComponents: components.map((c) => c.slug),
44
+ }, null, 2),
45
+ },
46
+ ],
47
+ };
48
+ }
49
+ // Find the component in database
50
+ const componentData = getComponentBySlug(db, component);
51
+ if (!componentData) {
52
+ // Try to find similar components
53
+ const allComponents = listComponents(db);
54
+ const searchTerm = component.toLowerCase();
55
+ const similar = allComponents
56
+ .filter((c) => c.slug.toLowerCase().includes(searchTerm) || searchTerm.includes(c.slug.toLowerCase()))
57
+ .slice(0, 5);
58
+ return {
59
+ content: [
60
+ {
61
+ type: "text",
62
+ text: JSON.stringify({
63
+ error: `Component "${component}" not found`,
64
+ suggestions: similar.length > 0 ? similar.map((c) => c.slug) : undefined,
65
+ hint: "Use list_components to see all available components",
66
+ }, null, 2),
67
+ },
68
+ ],
69
+ };
70
+ }
71
+ const packageInfo = PACKAGES[framework];
72
+ const componentName = `M${pascalCase(componentData.slug)}`;
73
+ const response = {
74
+ component: componentName,
75
+ componentSlug: componentData.slug,
76
+ framework,
77
+ package: packageInfo.name,
78
+ installCommand: getInstallCommand(packageInfo.name, packageManager),
79
+ imports: {
80
+ component: framework === "vue"
81
+ ? `import { ${componentName} } from "${packageInfo.name}";`
82
+ : `import { ${componentName} } from "${packageInfo.name}";`,
83
+ styles: `@import "${RELATED_PACKAGES.styles}/lib/index.css";`,
84
+ },
85
+ peerDependencies: packageInfo.peerDependencies,
86
+ relatedPackages: {
87
+ styles: {
88
+ name: RELATED_PACKAGES.styles,
89
+ installCommand: getInstallCommand(RELATED_PACKAGES.styles, packageManager),
90
+ description: "Required CSS styles for Mozaic components",
91
+ },
92
+ icons: {
93
+ name: RELATED_PACKAGES.icons,
94
+ installCommand: getInstallCommand(RELATED_PACKAGES.icons, packageManager),
95
+ description: "SVG icons library (optional)",
96
+ },
97
+ },
98
+ quickStart: framework === "vue"
99
+ ? {
100
+ setup: `// main.ts
101
+ import { createApp } from "vue";
102
+ import App from "./App.vue";
103
+ import "${RELATED_PACKAGES.styles}/lib/index.css";
104
+
105
+ createApp(App).mount("#app");`,
106
+ usage: `<template>
107
+ <${componentName} />
108
+ </template>
109
+
110
+ <script setup lang="ts">
111
+ import { ${componentName} } from "${packageInfo.name}";
112
+ </script>`,
113
+ }
114
+ : {
115
+ setup: `// index.tsx
116
+ import "${RELATED_PACKAGES.styles}/lib/index.css";`,
117
+ usage: `import { ${componentName} } from "${packageInfo.name}";
118
+
119
+ function MyComponent() {
120
+ return <${componentName} />;
121
+ }`,
122
+ },
123
+ };
124
+ return {
125
+ content: [
126
+ {
127
+ type: "text",
128
+ text: JSON.stringify(response, null, 2),
129
+ },
130
+ ],
131
+ };
132
+ }
133
+ // Tool definition for MCP
134
+ export const getInstallInfoTool = {
135
+ name: "get_install_info",
136
+ description: "Get installation commands and import statements for a Mozaic component. Returns package name, install command (npm/yarn/pnpm), import statements, peer dependencies, and quick start code.",
137
+ inputSchema: {
138
+ type: "object",
139
+ properties: {
140
+ component: {
141
+ type: "string",
142
+ description: 'Component name (e.g., "button", "modal", "text-input")',
143
+ },
144
+ framework: {
145
+ type: "string",
146
+ enum: ["vue", "react"],
147
+ default: "vue",
148
+ description: "Target framework: vue (@mozaic-ds/vue-3) or react (@mozaic-ds/react)",
149
+ },
150
+ packageManager: {
151
+ type: "string",
152
+ enum: ["npm", "yarn", "pnpm"],
153
+ default: "npm",
154
+ description: "Package manager for install commands",
155
+ },
156
+ },
157
+ required: ["component"],
158
+ },
159
+ };
160
+ //# sourceMappingURL=get-install-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-install-info.js","sourceRoot":"","sources":["../../src/tools/get-install-info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type Database from "better-sqlite3";
2
+ export interface ListComponentsInput {
3
+ category?: "form" | "navigation" | "feedback" | "layout" | "data-display" | "action" | "all";
4
+ }
5
+ export interface ComponentListItem {
6
+ name: string;
7
+ slug: string;
8
+ category: string;
9
+ description?: string;
10
+ }
11
+ export declare function handleListComponents(db: Database.Database, input: ListComponentsInput): {
12
+ content: Array<{
13
+ type: "text";
14
+ text: string;
15
+ }>;
16
+ };
17
+ export declare const listComponentsTool: {
18
+ name: string;
19
+ description: string;
20
+ inputSchema: {
21
+ type: "object";
22
+ properties: {
23
+ category: {
24
+ type: string;
25
+ enum: string[];
26
+ default: string;
27
+ description: string;
28
+ };
29
+ };
30
+ };
31
+ };
32
+ //# sourceMappingURL=list-components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-components.d.ts","sourceRoot":"","sources":["../../src/tools/list-components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,cAAc,GAAG,QAAQ,GAAG,KAAK,CAAC;CAC9F;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,mBAAmB,GACzB;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAkDpD;AAGD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;CAe9B,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { listComponents as dbListComponents } from "../db/queries.js";
2
+ export function handleListComponents(db, input) {
3
+ const { category = "all" } = input;
4
+ const components = dbListComponents(db, category === "all" ? undefined : category);
5
+ if (components.length === 0) {
6
+ return {
7
+ content: [
8
+ {
9
+ type: "text",
10
+ text: category === "all"
11
+ ? "No components found in the database."
12
+ : `No components found in category: ${category}`,
13
+ },
14
+ ],
15
+ };
16
+ }
17
+ // Group by category for better readability
18
+ const grouped = {};
19
+ for (const component of components) {
20
+ const cat = component.category || "other";
21
+ if (!grouped[cat]) {
22
+ grouped[cat] = [];
23
+ }
24
+ grouped[cat].push({
25
+ name: component.name,
26
+ slug: component.slug,
27
+ category: cat,
28
+ description: component.description,
29
+ });
30
+ }
31
+ // Format output
32
+ const output = {
33
+ total: components.length,
34
+ categories: Object.keys(grouped),
35
+ components: category === "all" ? grouped : components,
36
+ };
37
+ return {
38
+ content: [
39
+ {
40
+ type: "text",
41
+ text: JSON.stringify(output, null, 2),
42
+ },
43
+ ],
44
+ };
45
+ }
46
+ // Tool definition for MCP
47
+ export const listComponentsTool = {
48
+ name: "list_components",
49
+ description: "List available Mozaic framework components (Vue/React) by category. For CSS-only utilities (Flexy, Margin, etc.), use list_css_utilities instead.",
50
+ inputSchema: {
51
+ type: "object",
52
+ properties: {
53
+ category: {
54
+ type: "string",
55
+ enum: ["form", "navigation", "feedback", "layout", "data-display", "action", "all"],
56
+ default: "all",
57
+ description: "Filter components by category",
58
+ },
59
+ },
60
+ },
61
+ };
62
+ //# sourceMappingURL=list-components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-components.js","sourceRoot":"","sources":["../../src/tools/list-components.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,IAAI,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAatE,MAAM,UAAU,oBAAoB,CAClC,EAAqB,EACrB,KAA0B;IAE1B,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IAEnC,MAAM,UAAU,GAAG,gBAAgB,CAAC,EAAE,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEnF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,QAAQ,KAAK,KAAK;wBAChB,CAAC,CAAC,sCAAsC;wBACxC,CAAC,CAAC,oCAAoC,QAAQ,EAAE;iBACrD;aACF;SACF,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,MAAM,OAAO,GAAwC,EAAE,CAAC;IAExD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAChB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,GAAG;YACb,WAAW,EAAE,SAAS,CAAC,WAAW;SACnC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,UAAU,CAAC,MAAM;QACxB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAChC,UAAU,EAAE,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU;KACtD,CAAC;IAEF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC;AAED,0BAA0B;AAC1B,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,mJAAmJ;IACrJ,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,CAAC;gBACnF,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,+BAA+B;aAC7C;SACF;KACF;CACF,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type Database from "better-sqlite3";
2
+ export interface ListCssUtilitiesInput {
3
+ category?: "layout" | "utility" | "all";
4
+ }
5
+ export declare function handleListCssUtilities(db: Database.Database, input: ListCssUtilitiesInput): {
6
+ content: Array<{
7
+ type: "text";
8
+ text: string;
9
+ }>;
10
+ };
11
+ export declare const listCssUtilitiesTool: {
12
+ name: string;
13
+ description: string;
14
+ inputSchema: {
15
+ type: "object";
16
+ properties: {
17
+ category: {
18
+ type: string;
19
+ enum: string[];
20
+ default: string;
21
+ description: string;
22
+ };
23
+ };
24
+ required: never[];
25
+ };
26
+ };
27
+ //# sourceMappingURL=list-css-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-css-utilities.d.ts","sourceRoot":"","sources":["../../src/tools/list-css-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;CACzC;AAED,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,qBAAqB,GAC3B;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAgCpD;AAGD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;CAiBhC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import { listCssUtilities } from "../db/queries.js";
2
+ export function handleListCssUtilities(db, input) {
3
+ const { category = "all" } = input;
4
+ const utilities = listCssUtilities(db, category);
5
+ if (utilities.length === 0) {
6
+ return {
7
+ content: [
8
+ {
9
+ type: "text",
10
+ text: `No CSS utilities found for category: ${category}`,
11
+ },
12
+ ],
13
+ };
14
+ }
15
+ const output = utilities.map((u) => ({
16
+ name: u.name,
17
+ slug: u.slug,
18
+ category: u.category,
19
+ description: u.description,
20
+ classCount: u.classCount,
21
+ }));
22
+ return {
23
+ content: [
24
+ {
25
+ type: "text",
26
+ text: JSON.stringify(output, null, 2),
27
+ },
28
+ ],
29
+ };
30
+ }
31
+ // Tool definition for MCP
32
+ export const listCssUtilitiesTool = {
33
+ name: "list_css_utilities",
34
+ description: "List available Mozaic CSS utility classes by category. These are CSS-only utilities for layout (Flexy, Container) and spacing (Margin, Padding, Ratio, Scroll). Use get_css_utility to get detailed class names and examples.",
35
+ inputSchema: {
36
+ type: "object",
37
+ properties: {
38
+ category: {
39
+ type: "string",
40
+ enum: ["layout", "utility", "all"],
41
+ default: "all",
42
+ description: "Filter by category: 'layout' (Flexy, Container), 'utility' (Margin, Padding, etc.), or 'all'",
43
+ },
44
+ },
45
+ required: [],
46
+ },
47
+ };
48
+ //# sourceMappingURL=list-css-utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-css-utilities.js","sourceRoot":"","sources":["../../src/tools/list-css-utilities.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMpD,MAAM,UAAU,sBAAsB,CACpC,EAAqB,EACrB,KAA4B;IAE5B,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IAEnC,MAAM,SAAS,GAAG,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEjD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,wCAAwC,QAAQ,EAAE;iBACzD;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACF;KACF,CAAC;AACJ,CAAC;AAED,0BAA0B;AAC1B,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EACT,+NAA+N;IACjO,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC;gBAClC,OAAO,EAAE,KAAK;gBACd,WAAW,EACT,8FAA8F;aACjG;SACF;QACD,QAAQ,EAAE,EAAE;KACb;CACF,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type Database from "better-sqlite3";
2
+ export interface SearchDocumentationInput {
3
+ query: string;
4
+ limit?: number;
5
+ }
6
+ export interface SearchResult {
7
+ title: string;
8
+ path: string;
9
+ snippet: string;
10
+ category?: string;
11
+ }
12
+ export declare function handleSearchDocumentation(db: Database.Database, input: SearchDocumentationInput): {
13
+ content: Array<{
14
+ type: "text";
15
+ text: string;
16
+ }>;
17
+ };
18
+ export declare const searchDocumentationTool: {
19
+ name: string;
20
+ description: string;
21
+ inputSchema: {
22
+ type: "object";
23
+ properties: {
24
+ query: {
25
+ type: string;
26
+ description: string;
27
+ };
28
+ limit: {
29
+ type: string;
30
+ default: number;
31
+ description: string;
32
+ };
33
+ };
34
+ required: string[];
35
+ };
36
+ };
37
+ //# sourceMappingURL=search-documentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-documentation.d.ts","sourceRoot":"","sources":["../../src/tools/search-documentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,wBAAwB,GAC9B;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAsCpD;AAiFD,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;CAkBnC,CAAC"}
@@ -0,0 +1,120 @@
1
+ import { searchDocumentation as dbSearchDocumentation } from "../db/queries.js";
2
+ export function handleSearchDocumentation(db, input) {
3
+ const { query, limit = 5 } = input;
4
+ if (!query || query.trim().length === 0) {
5
+ return {
6
+ content: [
7
+ {
8
+ type: "text",
9
+ text: "Please provide a search query.",
10
+ },
11
+ ],
12
+ };
13
+ }
14
+ // Generate multiple search strategies from strict to fuzzy
15
+ const searchStrategies = buildSearchStrategies(query);
16
+ // Try each strategy until we find results
17
+ for (const ftsQuery of searchStrategies) {
18
+ try {
19
+ const results = dbSearchDocumentation(db, ftsQuery, limit);
20
+ if (results.length > 0) {
21
+ return formatResults(results, query);
22
+ }
23
+ }
24
+ catch {
25
+ // FTS5 syntax error - try next strategy
26
+ continue;
27
+ }
28
+ }
29
+ return {
30
+ content: [
31
+ {
32
+ type: "text",
33
+ text: `No documentation found for: "${query}". Try different keywords or use list_components to see available components.`,
34
+ },
35
+ ],
36
+ };
37
+ }
38
+ // Build multiple FTS5 search strategies from strict to fuzzy
39
+ function buildSearchStrategies(query) {
40
+ // Remove special characters that might break FTS5
41
+ // Also replace hyphens with spaces since FTS5 tokenizes on hyphens
42
+ const cleaned = query.replace(/[^\w\s]/g, " ");
43
+ // Split into terms and filter short ones
44
+ const terms = cleaned
45
+ .trim()
46
+ .split(/\s+/)
47
+ .filter((term) => term.length > 1);
48
+ if (terms.length === 0) {
49
+ return [query.trim()];
50
+ }
51
+ // Single term: just use prefix matching
52
+ if (terms.length === 1) {
53
+ return [`${terms[0]}*`];
54
+ }
55
+ // Multiple terms: try strategies from strict to fuzzy
56
+ return [
57
+ // 1. Exact phrase match
58
+ `"${terms.join(" ")}"`,
59
+ // 2. All terms required with prefix (AND)
60
+ terms.map((t) => `${t}*`).join(" AND "),
61
+ // 3. Any term matches with prefix (OR) - most fuzzy
62
+ terms.map((t) => `${t}*`).join(" OR "),
63
+ ];
64
+ }
65
+ function formatResults(results, originalQuery) {
66
+ const output = {
67
+ query: originalQuery,
68
+ resultCount: results.length,
69
+ results: results.map((r) => ({
70
+ title: r.title,
71
+ path: r.path,
72
+ category: r.category,
73
+ snippet: cleanSnippet(r.snippet),
74
+ url: `https://mozaic.adeo.cloud${r.path}`,
75
+ })),
76
+ };
77
+ return {
78
+ content: [
79
+ {
80
+ type: "text",
81
+ text: JSON.stringify(output, null, 2),
82
+ },
83
+ ],
84
+ };
85
+ }
86
+ // Clean up FTS5 snippet output
87
+ function cleanSnippet(snippet) {
88
+ if (!snippet)
89
+ return "";
90
+ // Remove HTML tags but keep the text
91
+ let cleaned = snippet.replace(/<mark>/g, "**").replace(/<\/mark>/g, "**");
92
+ // Normalize whitespace
93
+ cleaned = cleaned.replace(/\s+/g, " ").trim();
94
+ // Truncate if too long
95
+ if (cleaned.length > 200) {
96
+ cleaned = cleaned.substring(0, 200) + "...";
97
+ }
98
+ return cleaned;
99
+ }
100
+ // Tool definition for MCP
101
+ export const searchDocumentationTool = {
102
+ name: "search_documentation",
103
+ description: "Search Mozaic Design System documentation for components, patterns, and guidelines",
104
+ inputSchema: {
105
+ type: "object",
106
+ properties: {
107
+ query: {
108
+ type: "string",
109
+ description: "Search query (e.g., 'button variants', 'form validation', 'color tokens')",
110
+ },
111
+ limit: {
112
+ type: "number",
113
+ default: 5,
114
+ description: "Maximum number of results to return",
115
+ },
116
+ },
117
+ required: ["query"],
118
+ },
119
+ };
120
+ //# sourceMappingURL=search-documentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-documentation.js","sourceRoot":"","sources":["../../src/tools/search-documentation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type Database from "better-sqlite3";
2
+ export interface SearchIconsInput {
3
+ query: string;
4
+ type?: string;
5
+ size?: number;
6
+ limit?: number;
7
+ }
8
+ export declare function handleSearchIcons(db: Database.Database, input: SearchIconsInput): {
9
+ content: Array<{
10
+ type: "text";
11
+ text: string;
12
+ }>;
13
+ };
14
+ export declare const searchIconsTool: {
15
+ name: string;
16
+ description: string;
17
+ inputSchema: {
18
+ type: "object";
19
+ properties: {
20
+ query: {
21
+ type: string;
22
+ description: string;
23
+ };
24
+ type: {
25
+ type: string;
26
+ description: string;
27
+ };
28
+ size: {
29
+ type: string;
30
+ description: string;
31
+ };
32
+ limit: {
33
+ type: string;
34
+ default: number;
35
+ description: string;
36
+ };
37
+ };
38
+ required: string[];
39
+ };
40
+ };
41
+ //# sourceMappingURL=search-icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-icons.d.ts","sourceRoot":"","sources":["../../src/tools/search-icons.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,gBAAgB,GACtB;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CA2DpD;AA6ED,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;CA4B3B,CAAC"}