@udixio/mcp 0.3.2

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 (54) hide show
  1. package/README.md +127 -0
  2. package/dist/bundled/components-index.json +369 -0
  3. package/dist/bundled/doc-src/components/Code.astro +14 -0
  4. package/dist/bundled/doc-src/components/ComponentPreview.astro +218 -0
  5. package/dist/bundled/doc-src/data/components/button.overview.mdx +152 -0
  6. package/dist/bundled/doc-src/data/components/card.overview.mdx +91 -0
  7. package/dist/bundled/doc-src/data/components/carousel.overview.mdx +108 -0
  8. package/dist/bundled/doc-src/data/components/checkbox.overview.mdx +172 -0
  9. package/dist/bundled/doc-src/data/components/chip.overview.mdx +216 -0
  10. package/dist/bundled/doc-src/data/components/date-picker.overview.mdx +102 -0
  11. package/dist/bundled/doc-src/data/components/divider.overview.mdx +54 -0
  12. package/dist/bundled/doc-src/data/components/fab-menu.overview.mdx +69 -0
  13. package/dist/bundled/doc-src/data/components/fab.overview.mdx +80 -0
  14. package/dist/bundled/doc-src/data/components/icon-button.overview.mdx +155 -0
  15. package/dist/bundled/doc-src/data/components/navigation-rail.overview.mdx +142 -0
  16. package/dist/bundled/doc-src/data/components/progress-indicator.overview.mdx +49 -0
  17. package/dist/bundled/doc-src/data/components/slider.overview.mdx +64 -0
  18. package/dist/bundled/doc-src/data/components/snackbar.overview.mdx +37 -0
  19. package/dist/bundled/doc-src/data/components/switch.overview.mdx +41 -0
  20. package/dist/bundled/doc-src/data/components/tabs.overview.mdx +171 -0
  21. package/dist/bundled/doc-src/data/components/temp.md +506 -0
  22. package/dist/bundled/doc-src/data/components/text-field.overview.mdx +90 -0
  23. package/dist/bundled/doc-src/data/components/tooltip.overview.mdx +159 -0
  24. package/dist/bundled/doc-src/data/pages/mcp.mdx +92 -0
  25. package/dist/bundled/doc-src/layouts/components.astro +87 -0
  26. package/dist/bundled/doc-src/layouts/layout.astro +55 -0
  27. package/dist/bundled/doc-src/pages/404.astro +18 -0
  28. package/dist/bundled/doc-src/pages/[...url].astro +34 -0
  29. package/dist/bundled/doc-src/pages/animations.astro +322 -0
  30. package/dist/bundled/doc-src/pages/components/[component]/api.astro +89 -0
  31. package/dist/bundled/doc-src/pages/components/[component]/index.astro +5 -0
  32. package/dist/bundled/doc-src/pages/components/[component]/overview.astro +37 -0
  33. package/dist/bundled/doc-src/pages/components/index.astro +130 -0
  34. package/dist/bundled/doc-src/pages/index.astro +5 -0
  35. package/dist/bundled/doc-src/pages/search.astro +12 -0
  36. package/dist/bundled/doc-src/pages/themes.astro +86 -0
  37. package/dist/bundled/theme.json +359 -0
  38. package/dist/cli.mjs +450 -0
  39. package/dist/index.d.ts +4 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.mjs +5 -0
  42. package/dist/lib/cli.d.ts +3 -0
  43. package/dist/lib/cli.d.ts.map +1 -0
  44. package/dist/lib/loaders/components.d.ts +6 -0
  45. package/dist/lib/loaders/components.d.ts.map +1 -0
  46. package/dist/lib/loaders/docs.d.ts +11 -0
  47. package/dist/lib/loaders/docs.d.ts.map +1 -0
  48. package/dist/lib/loaders/theme.d.ts +37 -0
  49. package/dist/lib/loaders/theme.d.ts.map +1 -0
  50. package/dist/lib/main.d.ts +3 -0
  51. package/dist/lib/main.d.ts.map +1 -0
  52. package/dist/lib/mcp.d.ts +3 -0
  53. package/dist/lib/mcp.d.ts.map +1 -0
  54. package/package.json +61 -0
package/dist/cli.mjs ADDED
@@ -0,0 +1,450 @@
1
+ #!/usr/bin/env node
2
+ import { ResourceTemplate, McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { z } from "zod";
4
+ import { globby } from "globby";
5
+ import fs from "node:fs/promises";
6
+ import path from "node:path";
7
+ import matter from "gray-matter";
8
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
9
+ import express from "express";
10
+ function hereDir$2() {
11
+ const u = new URL(import.meta.url);
12
+ return path.dirname(u.pathname);
13
+ }
14
+ function bundledComponentsIndexPath() {
15
+ const candidates = [
16
+ path.resolve(hereDir$2(), "./bundled/components-index.json"),
17
+ path.resolve(hereDir$2(), "../bundled/components-index.json")
18
+ ];
19
+ return candidates[0];
20
+ }
21
+ function bundledDocSrc$1() {
22
+ const candidates = [
23
+ path.resolve(hereDir$2(), "./bundled/doc-src"),
24
+ path.resolve(hereDir$2(), "../bundled/doc-src")
25
+ ];
26
+ return candidates[0];
27
+ }
28
+ async function pathExists$2(p) {
29
+ try {
30
+ await fs.stat(p);
31
+ return true;
32
+ } catch {
33
+ return false;
34
+ }
35
+ }
36
+ async function loadComponentsIndex() {
37
+ const bundledIndex = bundledComponentsIndexPath();
38
+ if (await pathExists$2(bundledIndex)) {
39
+ const raw = await fs.readFile(bundledIndex, "utf8");
40
+ return JSON.parse(raw);
41
+ }
42
+ throw new Error("Bundled components-index.json not found. Please install @udixio/mcp package with bundled assets.");
43
+ }
44
+ async function loadComponentDoc(name) {
45
+ const base = bundledDocSrc$1();
46
+ if (!await pathExists$2(base)) {
47
+ throw new Error("Bundled docs not found.");
48
+ }
49
+ const patterns = [
50
+ `**/${name}.md*`,
51
+ `**/${name.toLowerCase()}.md*`,
52
+ `**/${name}.stories.@(mdx|tsx)`
53
+ ];
54
+ const matches = await globby(patterns, { cwd: base, absolute: true });
55
+ return {
56
+ name,
57
+ docs: matches.map((m) => path.relative(base, m))
58
+ };
59
+ }
60
+ function hereDir$1() {
61
+ const u = new URL(import.meta.url);
62
+ return path.dirname(u.pathname);
63
+ }
64
+ function bundledDocSrc() {
65
+ const candidates = [
66
+ path.resolve(hereDir$1(), "./bundled/doc-src"),
67
+ path.resolve(hereDir$1(), "../bundled/doc-src")
68
+ ];
69
+ for (const c of candidates) {
70
+ return c;
71
+ }
72
+ return path.resolve(hereDir$1(), "./bundled/doc-src");
73
+ }
74
+ async function pathExists$1(p) {
75
+ try {
76
+ await fs.stat(p);
77
+ return true;
78
+ } catch {
79
+ return false;
80
+ }
81
+ }
82
+ async function resolveDocBase() {
83
+ const bundled = bundledDocSrc();
84
+ if (await pathExists$1(bundled)) return bundled;
85
+ throw new Error("Bundled documentation not found.");
86
+ }
87
+ async function searchDocs(query, limit = 10) {
88
+ const DOC_BASE = await resolveDocBase();
89
+ const files = await globby(["**/*.{md,mdx,astro}"], {
90
+ cwd: DOC_BASE,
91
+ absolute: true
92
+ });
93
+ const scored = [];
94
+ for (const f of files) {
95
+ const text = await fs.readFile(f, "utf8");
96
+ const { content, data } = matter(text);
97
+ const score = (content.match(new RegExp(query, "ig")) || []).length + (JSON.stringify(data).match(new RegExp(query, "ig")) || []).length;
98
+ if (score > 0) {
99
+ scored.push({
100
+ file: path.relative(DOC_BASE, f),
101
+ score,
102
+ title: data.title,
103
+ snippet: content.slice(0, 240)
104
+ });
105
+ }
106
+ }
107
+ scored.sort((a, b) => b.score - a.score);
108
+ return scored.slice(0, limit);
109
+ }
110
+ async function getDocByPath(relPath) {
111
+ const DOC_BASE = await resolveDocBase();
112
+ const full = path.join(DOC_BASE, relPath);
113
+ const content = await fs.readFile(full, "utf8");
114
+ const mimeType = relPath.endsWith(".astro") ? "text/x-astro" : "text/markdown";
115
+ return { mimeType, content };
116
+ }
117
+ function hereDir() {
118
+ const u = new URL(import.meta.url);
119
+ return path.dirname(u.pathname);
120
+ }
121
+ function bundledThemePath() {
122
+ const candidates = [
123
+ path.resolve(hereDir(), "./bundled/theme.json"),
124
+ path.resolve(hereDir(), "../bundled/theme.json")
125
+ ];
126
+ return candidates[0];
127
+ }
128
+ async function pathExists(p) {
129
+ try {
130
+ await fs.stat(p);
131
+ return true;
132
+ } catch {
133
+ return false;
134
+ }
135
+ }
136
+ async function loadThemeTokens() {
137
+ const bundled = bundledThemePath();
138
+ if (await pathExists(bundled)) {
139
+ const raw = await fs.readFile(bundled, "utf8");
140
+ return JSON.parse(raw);
141
+ }
142
+ throw new Error("Bundled theme.json not found.");
143
+ }
144
+ async function getColor(name, mode = "light") {
145
+ const tokens = await loadThemeTokens();
146
+ const colors = mode === "dark" ? tokens.colors.dark : tokens.colors.light;
147
+ const color = colors[name];
148
+ if (!color) return null;
149
+ return { name, ...color };
150
+ }
151
+ async function listColors(mode = "light") {
152
+ const tokens = await loadThemeTokens();
153
+ const colors = mode === "dark" ? tokens.colors.dark : tokens.colors.light;
154
+ return Object.keys(colors);
155
+ }
156
+ async function listPalettes() {
157
+ const tokens = await loadThemeTokens();
158
+ return Object.entries(tokens.palettes).map(([name, palette]) => ({
159
+ name,
160
+ ...palette
161
+ }));
162
+ }
163
+ async function getThemeConfig() {
164
+ const tokens = await loadThemeTokens();
165
+ return tokens.config;
166
+ }
167
+ function registerToolsAndResources(server) {
168
+ server.registerTool(
169
+ "listComponents",
170
+ {
171
+ title: "List Components",
172
+ description: "Liste tous les composants UI disponibles",
173
+ inputSchema: {}
174
+ },
175
+ async () => {
176
+ const list = await loadComponentsIndex();
177
+ return {
178
+ content: [
179
+ {
180
+ type: "text",
181
+ text: JSON.stringify(list, null, 2)
182
+ }
183
+ ]
184
+ };
185
+ }
186
+ );
187
+ server.registerTool(
188
+ "getComponentDoc",
189
+ {
190
+ title: "Get Component Doc",
191
+ description: "Récupère la doc d'un composant (props, exemples, liens)",
192
+ inputSchema: {
193
+ name: z.string().describe("Nom du composant")
194
+ }
195
+ },
196
+ async ({ name }) => {
197
+ const doc = await loadComponentDoc(name);
198
+ return {
199
+ content: [
200
+ {
201
+ type: "text",
202
+ text: typeof doc === "string" ? doc : JSON.stringify(doc, null, 2)
203
+ }
204
+ ]
205
+ };
206
+ }
207
+ );
208
+ server.registerTool(
209
+ "searchDocs",
210
+ {
211
+ title: "Search Docs",
212
+ description: "Recherche plein texte dans la documentation",
213
+ inputSchema: {
214
+ query: z.string(),
215
+ limit: z.number().optional().default(10)
216
+ }
217
+ },
218
+ async ({ query, limit = 10 }) => {
219
+ const results = await searchDocs(query, limit);
220
+ return {
221
+ content: [
222
+ {
223
+ type: "text",
224
+ text: JSON.stringify(results, null, 2)
225
+ }
226
+ ]
227
+ };
228
+ }
229
+ );
230
+ server.registerTool(
231
+ "getThemeTokens",
232
+ {
233
+ title: "Get Theme Tokens",
234
+ description: "Récupère tous les tokens de thème (config, couleurs light/dark, palettes)",
235
+ inputSchema: {}
236
+ },
237
+ async () => {
238
+ const tokens = await loadThemeTokens();
239
+ return {
240
+ content: [
241
+ {
242
+ type: "text",
243
+ text: JSON.stringify(tokens, null, 2)
244
+ }
245
+ ]
246
+ };
247
+ }
248
+ );
249
+ server.registerTool(
250
+ "getThemeConfig",
251
+ {
252
+ title: "Get Theme Config",
253
+ description: "Récupère la configuration du thème (sourceColor, contrastLevel, variant)",
254
+ inputSchema: {}
255
+ },
256
+ async () => {
257
+ const config = await getThemeConfig();
258
+ return {
259
+ content: [
260
+ {
261
+ type: "text",
262
+ text: JSON.stringify(config, null, 2)
263
+ }
264
+ ]
265
+ };
266
+ }
267
+ );
268
+ server.registerTool(
269
+ "listColors",
270
+ {
271
+ title: "List Colors",
272
+ description: "Liste toutes les couleurs disponibles dans le thème",
273
+ inputSchema: {
274
+ mode: z.enum(["light", "dark"]).optional().default("light").describe("Mode de couleur (light ou dark)")
275
+ }
276
+ },
277
+ async ({ mode = "light" }) => {
278
+ const colors = await listColors(mode);
279
+ return {
280
+ content: [
281
+ {
282
+ type: "text",
283
+ text: JSON.stringify(colors, null, 2)
284
+ }
285
+ ]
286
+ };
287
+ }
288
+ );
289
+ server.registerTool(
290
+ "getColor",
291
+ {
292
+ title: "Get Color",
293
+ description: "Récupère les détails d'une couleur spécifique (hex, tone) en mode light ou dark",
294
+ inputSchema: {
295
+ name: z.string().describe("Nom de la couleur (ex: primary, surface)"),
296
+ mode: z.enum(["light", "dark"]).optional().default("light").describe("Mode de couleur")
297
+ }
298
+ },
299
+ async ({ name, mode = "light" }) => {
300
+ const color = await getColor(name, mode);
301
+ if (!color) {
302
+ return {
303
+ content: [
304
+ {
305
+ type: "text",
306
+ text: JSON.stringify({ error: `Color '${name}' not found` })
307
+ }
308
+ ]
309
+ };
310
+ }
311
+ return {
312
+ content: [
313
+ {
314
+ type: "text",
315
+ text: JSON.stringify(color, null, 2)
316
+ }
317
+ ]
318
+ };
319
+ }
320
+ );
321
+ server.registerTool(
322
+ "listPalettes",
323
+ {
324
+ title: "List Palettes",
325
+ description: "Liste toutes les palettes de couleurs (hue, chroma)",
326
+ inputSchema: {}
327
+ },
328
+ async () => {
329
+ const palettes = await listPalettes();
330
+ return {
331
+ content: [
332
+ {
333
+ type: "text",
334
+ text: JSON.stringify(palettes, null, 2)
335
+ }
336
+ ]
337
+ };
338
+ }
339
+ );
340
+ server.registerTool(
341
+ "compareColor",
342
+ {
343
+ title: "Compare Color",
344
+ description: "Compare une couleur entre les modes light et dark pour voir les différences",
345
+ inputSchema: {
346
+ name: z.string().describe("Nom de la couleur à comparer")
347
+ }
348
+ },
349
+ async ({ name }) => {
350
+ const [light, dark] = await Promise.all([
351
+ getColor(name, "light"),
352
+ getColor(name, "dark")
353
+ ]);
354
+ if (!light && !dark) {
355
+ return {
356
+ content: [
357
+ {
358
+ type: "text",
359
+ text: JSON.stringify({ error: `Color '${name}' not found` })
360
+ }
361
+ ]
362
+ };
363
+ }
364
+ return {
365
+ content: [
366
+ {
367
+ type: "text",
368
+ text: JSON.stringify({ name, light, dark }, null, 2)
369
+ }
370
+ ]
371
+ };
372
+ }
373
+ );
374
+ server.registerResource(
375
+ "doc",
376
+ new ResourceTemplate("doc://{path}", { list: void 0 }),
377
+ {
378
+ title: "Doc Resource",
379
+ description: "Lit un fichier de doc relatif à apps/doc"
380
+ },
381
+ async (uri, { path: path2 }) => {
382
+ const pathStr = Array.isArray(path2) ? path2.join("/") : path2;
383
+ const file = await getDocByPath(pathStr);
384
+ return {
385
+ contents: [
386
+ {
387
+ uri: uri.href,
388
+ mimeType: file.mimeType,
389
+ text: file.content
390
+ }
391
+ ]
392
+ };
393
+ }
394
+ );
395
+ server.registerResource(
396
+ "theme",
397
+ new ResourceTemplate("theme://tokens", { list: void 0 }),
398
+ {
399
+ title: "Theme Tokens Resource",
400
+ description: "Accès aux tokens de thème complets"
401
+ },
402
+ async (uri) => {
403
+ const tokens = await loadThemeTokens();
404
+ return {
405
+ contents: [
406
+ {
407
+ uri: uri.href,
408
+ mimeType: "application/json",
409
+ text: JSON.stringify(tokens, null, 2)
410
+ }
411
+ ]
412
+ };
413
+ }
414
+ );
415
+ }
416
+ async function main() {
417
+ const server = new McpServer({
418
+ name: "@udixio/mcp",
419
+ version: "0.1.0"
420
+ });
421
+ registerToolsAndResources(server);
422
+ const app = express();
423
+ app.use(express.json());
424
+ app.post("/mcp", async (req, res) => {
425
+ const transport = new StreamableHTTPServerTransport({
426
+ sessionIdGenerator: void 0,
427
+ enableJsonResponse: true
428
+ });
429
+ res.on("close", () => {
430
+ transport.close();
431
+ });
432
+ await server.connect(transport);
433
+ await transport.handleRequest(req, res, req.body);
434
+ });
435
+ const port = parseInt(process.env.PORT || "3000");
436
+ app.listen(port, () => {
437
+ console.log(`Demo MCP Server running on http://localhost:${port}/mcp`);
438
+ }).on("error", (error) => {
439
+ console.error("Server error:", error);
440
+ process.exit(1);
441
+ });
442
+ }
443
+ main().catch((e) => {
444
+ console.error(e);
445
+ process.exit(1);
446
+ });
447
+ export {
448
+ main as m,
449
+ registerToolsAndResources as r
450
+ };
@@ -0,0 +1,4 @@
1
+ export * from './lib/cli';
2
+ export * from './lib/main';
3
+ export * from './lib/mcp';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC"}
package/dist/index.mjs ADDED
@@ -0,0 +1,5 @@
1
+ import { m, r } from "./cli.mjs";
2
+ export {
3
+ m as main,
4
+ r as registerToolsAndResources
5
+ };
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/lib/cli.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export declare function loadComponentsIndex(): Promise<any>;
2
+ export declare function loadComponentDoc(name: string): Promise<{
3
+ name: string;
4
+ docs: string[];
5
+ }>;
6
+ //# sourceMappingURL=components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/lib/loaders/components.ts"],"names":[],"mappings":"AAmCA,wBAAsB,mBAAmB,iBAQxC;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM;;;GAgBlD"}
@@ -0,0 +1,11 @@
1
+ export declare function searchDocs(query: string, limit?: number): Promise<{
2
+ file: string;
3
+ score: number;
4
+ title?: string;
5
+ snippet?: string;
6
+ }[]>;
7
+ export declare function getDocByPath(relPath: string): Promise<{
8
+ mimeType: string;
9
+ content: string;
10
+ }>;
11
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/lib/loaders/docs.ts"],"names":[],"mappings":"AAsCA,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK;UAOhD,MAAM;WACL,MAAM;YACL,MAAM;cACJ,MAAM;KAmBnB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM;;;GAQjD"}
@@ -0,0 +1,37 @@
1
+ export interface ThemeSnapshot {
2
+ config: {
3
+ sourceColor: string;
4
+ contrastLevel: number;
5
+ isDark: boolean;
6
+ variant: string;
7
+ };
8
+ palettes: Record<string, {
9
+ hue: number;
10
+ chroma: number;
11
+ }>;
12
+ colors: {
13
+ light: Record<string, {
14
+ hex: string;
15
+ tone: number;
16
+ }>;
17
+ dark: Record<string, {
18
+ hex: string;
19
+ tone: number;
20
+ }>;
21
+ };
22
+ customPalettes: string[];
23
+ }
24
+ export declare function loadThemeTokens(): Promise<ThemeSnapshot>;
25
+ export declare function getColor(name: string, mode?: 'light' | 'dark'): Promise<{
26
+ name: string;
27
+ hex: string;
28
+ tone: number;
29
+ } | null>;
30
+ export declare function listColors(mode?: 'light' | 'dark'): Promise<string[]>;
31
+ export declare function listPalettes(): Promise<Array<{
32
+ name: string;
33
+ hue: number;
34
+ chroma: number;
35
+ }>>;
36
+ export declare function getThemeConfig(): Promise<ThemeSnapshot['config']>;
37
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/lib/loaders/theme.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACrD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACrD,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,aAAa,CAAC,CAO9D;AAED,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,OAAO,GAAG,MAAgB,GAC/B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAM7D;AAED,wBAAsB,UAAU,CAC9B,IAAI,GAAE,OAAO,GAAG,MAAgB,GAC/B,OAAO,CAAC,MAAM,EAAE,CAAC,CAInB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAC3C,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CACrD,CAMA;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAGvE"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export declare function main(): Promise<void>;
3
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/lib/main.ts"],"names":[],"mappings":";AAMA,wBAAsB,IAAI,kBAoCzB"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerToolsAndResources(server: McpServer): void;
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/lib/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAEV,MAAM,yCAAyC,CAAC;AAYjD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QAmS1D"}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@udixio/mcp",
3
+ "version": "0.3.2",
4
+ "private": false,
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "author": "Udixio",
9
+ "license": "MIT",
10
+ "exports": {
11
+ "./package.json": "./package.json",
12
+ ".": {
13
+ "development": "./src/index.ts",
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js",
16
+ "default": "./dist/index.js"
17
+ }
18
+ },
19
+ "keywords": [
20
+ "mcp",
21
+ "model-context-protocol",
22
+ "udixio",
23
+ "ui",
24
+ "design-system"
25
+ ],
26
+ "bin": {
27
+ "udixio-mcp": "dist/cli.js"
28
+ },
29
+ "files": [
30
+ "dist",
31
+ "README.md"
32
+ ],
33
+ "scripts": {
34
+ "build": "vite build",
35
+ "dev": "tsx src/cli.ts",
36
+ "start": "node dist/cli.js",
37
+ "test": "vitest run",
38
+ "clean": "rimraf dist",
39
+ "prepack": "pnpm build && tsx scripts/snapshot.ts"
40
+ },
41
+ "dependencies": {
42
+ "express": "^5.1.0",
43
+ "@modelcontextprotocol/sdk": "^1.20.2",
44
+ "@udixio/theme": "workspace:*",
45
+ "zod": "^4.1.12",
46
+ "globby": "^15.0.0",
47
+ "gray-matter": "^4.0.3"
48
+ },
49
+ "devDependencies": {
50
+ "@types/express": "^5.0.5",
51
+ "tsx": "^4.20.6",
52
+ "typescript": "^5.9.3",
53
+ "rimraf": "^6.1.0"
54
+ },
55
+ "engines": {
56
+ "node": ">=18"
57
+ },
58
+ "publishConfig": {
59
+ "access": "public"
60
+ }
61
+ }