@baklavue/mcp 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 (93) hide show
  1. package/README.md +72 -0
  2. package/dist/data/component-categories.d.ts +7 -0
  3. package/dist/data/component-categories.js +48 -0
  4. package/dist/data/loaders.d.ts +22 -0
  5. package/dist/data/loaders.js +346 -0
  6. package/dist/docs/components/accordion.md +601 -0
  7. package/dist/docs/components/alert.md +233 -0
  8. package/dist/docs/components/badge.md +100 -0
  9. package/dist/docs/components/banner.md +231 -0
  10. package/dist/docs/components/button.md +324 -0
  11. package/dist/docs/components/checkbox.md +343 -0
  12. package/dist/docs/components/chip.md +199 -0
  13. package/dist/docs/components/datepicker.md +243 -0
  14. package/dist/docs/components/dialog.md +224 -0
  15. package/dist/docs/components/drawer.md +188 -0
  16. package/dist/docs/components/dropdown.md +291 -0
  17. package/dist/docs/components/file-upload.md +248 -0
  18. package/dist/docs/components/icon.md +142 -0
  19. package/dist/docs/components/image.md +161 -0
  20. package/dist/docs/components/index.md +151 -0
  21. package/dist/docs/components/input.md +407 -0
  22. package/dist/docs/components/link.md +249 -0
  23. package/dist/docs/components/notification.md +179 -0
  24. package/dist/docs/components/pagination.md +168 -0
  25. package/dist/docs/components/radio.md +221 -0
  26. package/dist/docs/components/scroll-to-top.md +90 -0
  27. package/dist/docs/components/select.md +239 -0
  28. package/dist/docs/components/skeleton.md +79 -0
  29. package/dist/docs/components/spinner.md +93 -0
  30. package/dist/docs/components/split-button.md +165 -0
  31. package/dist/docs/components/stepper.md +337 -0
  32. package/dist/docs/components/switch.md +144 -0
  33. package/dist/docs/components/tab.md +140 -0
  34. package/dist/docs/components/table.md +362 -0
  35. package/dist/docs/components/tag.md +243 -0
  36. package/dist/docs/components/textarea.md +190 -0
  37. package/dist/docs/components/tooltip.md +155 -0
  38. package/dist/docs/composables/alert.md +87 -0
  39. package/dist/docs/composables/asyncState.md +74 -0
  40. package/dist/docs/composables/base64.md +72 -0
  41. package/dist/docs/composables/breakpoints.md +129 -0
  42. package/dist/docs/composables/clipboard.md +108 -0
  43. package/dist/docs/composables/colorScheme.md +110 -0
  44. package/dist/docs/composables/confirmDialog.md +105 -0
  45. package/dist/docs/composables/containerScroll.md +89 -0
  46. package/dist/docs/composables/cookie.md +137 -0
  47. package/dist/docs/composables/debounce.md +69 -0
  48. package/dist/docs/composables/disclosure.md +69 -0
  49. package/dist/docs/composables/elementSize.md +84 -0
  50. package/dist/docs/composables/fetch.md +257 -0
  51. package/dist/docs/composables/fieldArray.md +104 -0
  52. package/dist/docs/composables/file.md +343 -0
  53. package/dist/docs/composables/focusTrap.md +87 -0
  54. package/dist/docs/composables/formPersistence.md +69 -0
  55. package/dist/docs/composables/formState.md +71 -0
  56. package/dist/docs/composables/formValidation.md +355 -0
  57. package/dist/docs/composables/format.md +107 -0
  58. package/dist/docs/composables/id.md +54 -0
  59. package/dist/docs/composables/index.md +112 -0
  60. package/dist/docs/composables/infiniteQuery.md +104 -0
  61. package/dist/docs/composables/intersectionObserver.md +64 -0
  62. package/dist/docs/composables/lazyQuery.md +68 -0
  63. package/dist/docs/composables/loading.md +91 -0
  64. package/dist/docs/composables/mutation.md +83 -0
  65. package/dist/docs/composables/notification.md +169 -0
  66. package/dist/docs/composables/pagination.md +109 -0
  67. package/dist/docs/composables/polling.md +76 -0
  68. package/dist/docs/composables/previous.md +58 -0
  69. package/dist/docs/composables/query.md +248 -0
  70. package/dist/docs/composables/raf.md +78 -0
  71. package/dist/docs/composables/scrollLock.md +46 -0
  72. package/dist/docs/composables/scrollToError.md +291 -0
  73. package/dist/docs/composables/scrollVisibility.md +60 -0
  74. package/dist/docs/composables/share.md +78 -0
  75. package/dist/docs/composables/slug.md +58 -0
  76. package/dist/docs/composables/stepper.md +117 -0
  77. package/dist/docs/composables/stepperForm.md +74 -0
  78. package/dist/docs/composables/sticky.md +91 -0
  79. package/dist/docs/composables/storage.md +193 -0
  80. package/dist/docs/composables/theme.md +252 -0
  81. package/dist/docs/composables/themePreset.md +62 -0
  82. package/dist/docs/composables/throttle.md +76 -0
  83. package/dist/docs/composables/timer.md +78 -0
  84. package/dist/docs/composables/toggle.md +55 -0
  85. package/dist/docs/guide/contributing.md +364 -0
  86. package/dist/docs/guide/design-tokens.md +29 -0
  87. package/dist/docs/guide/getting-started.md +181 -0
  88. package/dist/docs/guide/installation.md +287 -0
  89. package/dist/docs/guide/localization.md +132 -0
  90. package/dist/docs/guide/mcp.md +141 -0
  91. package/dist/index.d.ts +2 -0
  92. package/dist/index.js +177 -0
  93. package/package.json +48 -0
package/dist/index.js ADDED
@@ -0,0 +1,177 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Baklavue MCP Server
4
+ * Provides AI assistants with access to Baklavue Vue component APIs, composables, and documentation.
5
+ */
6
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
8
+ import { z } from "zod";
9
+ import { listComponents, getComponentDoc, getComponentMetadata, listComposables, getComposableDoc, getDocumentationPage, listDocumentationPages, } from "./data/loaders.js";
10
+ import { COMPONENT_CATEGORIES, CATEGORY_LABELS } from "./data/component-categories.js";
11
+ const server = new McpServer({
12
+ name: "baklavue",
13
+ version: "1.0.0",
14
+ });
15
+ // --- list_components ---
16
+ server.registerTool("list_components", {
17
+ description: "List all available Baklavue components with their categories and basic information",
18
+ }, async () => {
19
+ const components = listComponents();
20
+ const text = JSON.stringify(components.map((c) => ({
21
+ name: c.bvName,
22
+ component: c.name,
23
+ category: c.category,
24
+ categoryLabel: c.categoryLabel,
25
+ })), null, 2);
26
+ return { content: [{ type: "text", text }] };
27
+ });
28
+ // --- get_component ---
29
+ server.registerTool("get_component", {
30
+ description: "Retrieve full component documentation including props, events, slots, usage examples, and types",
31
+ inputSchema: {
32
+ componentName: z.string().describe("Component name (e.g., Button, BvButton, Input)"),
33
+ },
34
+ }, async ({ componentName }) => {
35
+ const doc = getComponentDoc(componentName);
36
+ if (!doc) {
37
+ const names = Object.keys(COMPONENT_CATEGORIES).join(", ");
38
+ return {
39
+ content: [
40
+ {
41
+ type: "text",
42
+ text: `Component "${componentName}" not found. Available components: ${names}. Use Bv prefix (e.g., BvButton) or plain name (e.g., Button).`,
43
+ },
44
+ ],
45
+ };
46
+ }
47
+ return { content: [{ type: "text", text: doc }] };
48
+ });
49
+ // --- get_component_metadata ---
50
+ server.registerTool("get_component_metadata", {
51
+ description: "Retrieve lightweight component metadata: props, events, and slots only (no full documentation)",
52
+ inputSchema: {
53
+ componentName: z.string().describe("Component name (e.g., Button, BvButton)"),
54
+ },
55
+ }, async ({ componentName }) => {
56
+ const meta = getComponentMetadata(componentName);
57
+ if (!meta) {
58
+ return {
59
+ content: [
60
+ {
61
+ type: "text",
62
+ text: `Component "${componentName}" not found.`,
63
+ },
64
+ ],
65
+ };
66
+ }
67
+ const parts = [];
68
+ if (meta.props)
69
+ parts.push(`## Props\n\n${meta.props}`);
70
+ if (meta.events)
71
+ parts.push(`## Events\n\n${meta.events}`);
72
+ if (meta.slots)
73
+ parts.push(`## Slots\n\n${meta.slots}`);
74
+ return {
75
+ content: [{ type: "text", text: parts.join("\n\n") || "No metadata available." }],
76
+ };
77
+ });
78
+ // --- list_composables ---
79
+ server.registerTool("list_composables", {
80
+ description: "List all available Baklavue composables with their descriptions",
81
+ }, async () => {
82
+ const composables = listComposables();
83
+ const text = JSON.stringify(composables.map((c) => ({ name: c.name, description: c.description })), null, 2);
84
+ return { content: [{ type: "text", text }] };
85
+ });
86
+ // --- get_composable ---
87
+ server.registerTool("get_composable", {
88
+ description: "Retrieve composable API documentation and usage",
89
+ inputSchema: {
90
+ composableName: z.string().describe("Composable name (e.g., useNotification, useTheme)"),
91
+ },
92
+ }, async ({ composableName }) => {
93
+ const doc = getComposableDoc(composableName);
94
+ if (!doc) {
95
+ const names = listComposables().map((c) => c.name).join(", ");
96
+ return {
97
+ content: [
98
+ {
99
+ type: "text",
100
+ text: `Composable "${composableName}" not found. Available: ${names}`,
101
+ },
102
+ ],
103
+ };
104
+ }
105
+ return { content: [{ type: "text", text: doc }] };
106
+ });
107
+ // --- search_components_by_category ---
108
+ server.registerTool("search_components_by_category", {
109
+ description: "Search components by category (form, feedback, layout, navigation, data) or text filter",
110
+ inputSchema: {
111
+ category: z
112
+ .string()
113
+ .optional()
114
+ .describe("Category: form, feedback, layout, navigation, data"),
115
+ filter: z.string().optional().describe("Optional text filter to match component names"),
116
+ },
117
+ }, async ({ category, filter }) => {
118
+ let components = listComponents();
119
+ if (category) {
120
+ const cat = category.toLowerCase();
121
+ if (cat in CATEGORY_LABELS) {
122
+ components = components.filter((c) => c.category === cat);
123
+ }
124
+ }
125
+ if (filter) {
126
+ const f = filter.toLowerCase();
127
+ components = components.filter((c) => c.name.toLowerCase().includes(f) ||
128
+ c.bvName.toLowerCase().includes(f) ||
129
+ c.categoryLabel.toLowerCase().includes(f));
130
+ }
131
+ const text = JSON.stringify(components.map((c) => ({
132
+ name: c.bvName,
133
+ component: c.name,
134
+ category: c.category,
135
+ categoryLabel: c.categoryLabel,
136
+ })), null, 2);
137
+ return { content: [{ type: "text", text }] };
138
+ });
139
+ // --- get_documentation_page ---
140
+ server.registerTool("get_documentation_page", {
141
+ description: "Get guide documentation page content (e.g., installation, getting-started, design-tokens)",
142
+ inputSchema: {
143
+ path: z.string().describe("Page path without .md (e.g., installation, getting-started)"),
144
+ },
145
+ }, async ({ path }) => {
146
+ const doc = getDocumentationPage(path);
147
+ if (!doc) {
148
+ const pages = listDocumentationPages();
149
+ return {
150
+ content: [
151
+ {
152
+ type: "text",
153
+ text: `Page "${path}" not found. Available: ${pages.join(", ")}`,
154
+ },
155
+ ],
156
+ };
157
+ }
158
+ return { content: [{ type: "text", text: doc }] };
159
+ });
160
+ // --- list_documentation_pages ---
161
+ server.registerTool("list_documentation_pages", {
162
+ description: "List all available documentation/guide pages",
163
+ }, async () => {
164
+ const pages = listDocumentationPages();
165
+ return {
166
+ content: [{ type: "text", text: JSON.stringify(pages, null, 2) }],
167
+ };
168
+ });
169
+ async function main() {
170
+ const transport = new StdioServerTransport();
171
+ await server.connect(transport);
172
+ console.error("Baklavue MCP server running on stdio");
173
+ }
174
+ main().catch((error) => {
175
+ console.error("Server error:", error);
176
+ process.exit(1);
177
+ });
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@baklavue/mcp",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for Baklavue - Vue 3 UI kit for Baklava Design System",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "baklavue-mcp": "./dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc && node scripts/copy-docs.mjs",
12
+ "start": "bun run src/index.ts",
13
+ "release": "semantic-release -e semantic-release-monorepo",
14
+ "release:dry-run": "semantic-release --dry-run -e semantic-release-monorepo"
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "dependencies": {
20
+ "@modelcontextprotocol/sdk": "^1.26.0",
21
+ "zod": "^4.3.6"
22
+ },
23
+ "devDependencies": {
24
+ "@types/node": "^22.0.0",
25
+ "typescript": "^5.9.2"
26
+ },
27
+ "keywords": [
28
+ "mcp",
29
+ "baklavue",
30
+ "vue",
31
+ "baklava",
32
+ "design-system"
33
+ ],
34
+ "license": "MIT",
35
+ "author": "erbilnas",
36
+ "homepage": "https://github.com/erbilnas/baklavue/tree/main/packages/mcp#readme",
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "git+https://github.com/erbilnas/baklavue.git",
40
+ "directory": "packages/mcp"
41
+ },
42
+ "bugs": {
43
+ "url": "https://github.com/erbilnas/baklavue/issues"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ }
48
+ }