mozaic-mcp-server 2.5.4 → 2.6.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.
- package/README.md +98 -22
- package/dist/mcp/mcp-light.controller.d.ts +155 -0
- package/dist/mcp/mcp-light.controller.d.ts.map +1 -0
- package/dist/mcp/mcp-light.controller.js +400 -0
- package/dist/mcp/mcp-light.controller.js.map +1 -0
- package/dist/mcp/mcp.module.d.ts.map +1 -1
- package/dist/mcp/mcp.module.js +2 -1
- package/dist/mcp/mcp.module.js.map +1 -1
- package/dist/tools/list-freemarker.d.ts +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,6 +16,104 @@ This package provides two complementary tools for working with the Mozaic Design
|
|
|
16
16
|
- **🤖 Claude Code Skills** - 7 interactive skills for guided component building and design token usage
|
|
17
17
|
- **🔌 MCP Server** - Model Context Protocol server with 17 tools for programmatic access to Mozaic resources
|
|
18
18
|
|
|
19
|
+
## HTTP API
|
|
20
|
+
|
|
21
|
+
Public MCP server available at **https://mozaic-mcp.m14i.com**
|
|
22
|
+
|
|
23
|
+
**Endpoints:**
|
|
24
|
+
- `GET /health` - Health check
|
|
25
|
+
- `POST /mcp/list-tools` - List available tools
|
|
26
|
+
- `POST /mcp/call-tool` - Call a specific tool
|
|
27
|
+
- `GET /api` - [Swagger documentation](https://mozaic-mcp.m14i.com/api)
|
|
28
|
+
|
|
29
|
+
**Authentication:** Bearer token required. [Contact me](https://adeo-tech-community.slack.com/archives/D05E2CXR8TB) on Slack for access.
|
|
30
|
+
|
|
31
|
+
**Example:**
|
|
32
|
+
```bash
|
|
33
|
+
curl -X POST https://mozaic-mcp.m14i.com/mcp/list-tools \
|
|
34
|
+
-H "Authorization: Bearer YOUR_TOKEN" \
|
|
35
|
+
-H "Content-Type: application/json"
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
<details>
|
|
39
|
+
<summary>Example Response (17 MCP Tools)</summary>
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
{
|
|
43
|
+
"tools": [
|
|
44
|
+
{
|
|
45
|
+
"name": "get_design_tokens",
|
|
46
|
+
"description": "Get Mozaic design tokens with CSS/SCSS variables. Categories: colors (brand, semantic, component), typography (font sizes, weights, line heights), spacing (magic unit scale), shadows, borders, screens (breakpoints), grid (gutters)."
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "get_component_info",
|
|
50
|
+
"description": "Get Vue/React component details: props (types, defaults, required), slots, events, and code examples."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "list_components",
|
|
54
|
+
"description": "List Mozaic Vue/React components by category."
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"name": "generate_vue_component",
|
|
58
|
+
"description": "Generate ready-to-use Vue 3 code with Mozaic components (@mozaic-ds/vue-3)."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "generate_react_component",
|
|
62
|
+
"description": "Generate ready-to-use React/TSX code with Mozaic components (@mozaic-ds/react)."
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "search_documentation",
|
|
66
|
+
"description": "Search Mozaic Design System documentation for installation guides, component usage, configuration, styling, tokens, patterns, and best practices."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "get_css_utility",
|
|
70
|
+
"description": "Get CSS utility classes and examples for Mozaic layout and spacing utilities."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "list_css_utilities",
|
|
74
|
+
"description": "List Mozaic CSS-only utilities (no framework needed)."
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "search_icons",
|
|
78
|
+
"description": "Search Mozaic Design System icons by name or type."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "get_icon",
|
|
82
|
+
"description": "Get a specific Mozaic icon by name with SVG markup and ready-to-use code for React/Vue."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"name": "get_install_info",
|
|
86
|
+
"description": "Get installation commands and import statements for a Mozaic component."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "generate_webcomponent",
|
|
90
|
+
"description": "Generate ready-to-use Web Component code using Mozaic Design System (@adeo/mozaic-web-components)."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "get_webcomponent_info",
|
|
94
|
+
"description": "Get detailed information about a Mozaic Web Component including attributes, slots, events, CSS custom properties, and usage examples."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "list_webcomponents",
|
|
98
|
+
"description": "List available Mozaic Web Components by category."
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "generate_freemarker",
|
|
102
|
+
"description": "Generate ready-to-use Freemarker macro code with import statements and configuration examples for Mozaic components."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "get_freemarker_info",
|
|
106
|
+
"description": "Get detailed information about a Freemarker component including configuration options, CSS classes, and usage examples."
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "list_freemarker",
|
|
110
|
+
"description": "List available Mozaic Freemarker macros by category."
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
</details>
|
|
116
|
+
|
|
19
117
|
### What's Included
|
|
20
118
|
|
|
21
119
|
| Resource Type | Count | Description |
|
|
@@ -127,28 +225,6 @@ Claude Code will automatically activate the appropriate skill (Vue or React buil
|
|
|
127
225
|
| `get_icon` | Icons | Get icon SVG and framework code |
|
|
128
226
|
| `get_install_info` | Install | Get npm/yarn/pnpm installation commands |
|
|
129
227
|
|
|
130
|
-
### v0.dev Integration (HTTP API)
|
|
131
|
-
|
|
132
|
-
The MCP server can be deployed as an HTTP API for v0.dev integration:
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
# Run locally
|
|
136
|
-
DATABASE_PATH=./data/mozaic.db MCP_SERVER_PATH=./dist/index.js AUTH_TOKEN=your-secret-token node dist/main.js
|
|
137
|
-
|
|
138
|
-
# Or deploy with Docker
|
|
139
|
-
docker build -t mozaic-mcp-server .
|
|
140
|
-
docker run -p 3000:3000 -e AUTH_TOKEN=your-secret-token mozaic-mcp-server
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
**Endpoints:**
|
|
144
|
-
- `GET /health` - Health check
|
|
145
|
-
- `POST /mcp` - JSON-RPC endpoint for MCP protocol
|
|
146
|
-
- `POST /mcp/list-tools` - List available tools
|
|
147
|
-
- `POST /mcp/call-tool` - Call a specific tool
|
|
148
|
-
- `GET /api` - Swagger documentation
|
|
149
|
-
|
|
150
|
-
All endpoints require bearer token authentication. See deployment documentation for Dokploy integration.
|
|
151
|
-
|
|
152
228
|
### Configuration
|
|
153
229
|
|
|
154
230
|
Add to your Claude Code or Claude Desktop settings:
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { ConfigService } from "@nestjs/config";
|
|
2
|
+
interface McpToolCall {
|
|
3
|
+
name: string;
|
|
4
|
+
arguments?: Record<string, unknown>;
|
|
5
|
+
}
|
|
6
|
+
interface McpResponse {
|
|
7
|
+
content: Array<{
|
|
8
|
+
type: string;
|
|
9
|
+
text: string;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export declare class McpLightController {
|
|
13
|
+
private configService;
|
|
14
|
+
private db;
|
|
15
|
+
constructor(configService: ConfigService);
|
|
16
|
+
listTools(): {
|
|
17
|
+
tools: ({
|
|
18
|
+
name: string;
|
|
19
|
+
description: string;
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: string;
|
|
22
|
+
properties: {
|
|
23
|
+
category: {
|
|
24
|
+
type: string;
|
|
25
|
+
enum: string[];
|
|
26
|
+
description: string;
|
|
27
|
+
default?: undefined;
|
|
28
|
+
};
|
|
29
|
+
format: {
|
|
30
|
+
type: string;
|
|
31
|
+
enum: string[];
|
|
32
|
+
default: string;
|
|
33
|
+
description: string;
|
|
34
|
+
};
|
|
35
|
+
name?: undefined;
|
|
36
|
+
includeClasses?: undefined;
|
|
37
|
+
query?: undefined;
|
|
38
|
+
type?: undefined;
|
|
39
|
+
size?: undefined;
|
|
40
|
+
limit?: undefined;
|
|
41
|
+
};
|
|
42
|
+
required: string[];
|
|
43
|
+
};
|
|
44
|
+
} | {
|
|
45
|
+
name: string;
|
|
46
|
+
description: string;
|
|
47
|
+
inputSchema: {
|
|
48
|
+
type: string;
|
|
49
|
+
properties: {
|
|
50
|
+
category: {
|
|
51
|
+
type: string;
|
|
52
|
+
enum: string[];
|
|
53
|
+
default: string;
|
|
54
|
+
description: string;
|
|
55
|
+
};
|
|
56
|
+
format?: undefined;
|
|
57
|
+
name?: undefined;
|
|
58
|
+
includeClasses?: undefined;
|
|
59
|
+
query?: undefined;
|
|
60
|
+
type?: undefined;
|
|
61
|
+
size?: undefined;
|
|
62
|
+
limit?: undefined;
|
|
63
|
+
};
|
|
64
|
+
required: any[];
|
|
65
|
+
};
|
|
66
|
+
} | {
|
|
67
|
+
name: string;
|
|
68
|
+
description: string;
|
|
69
|
+
inputSchema: {
|
|
70
|
+
type: string;
|
|
71
|
+
properties: {
|
|
72
|
+
name: {
|
|
73
|
+
type: string;
|
|
74
|
+
description: string;
|
|
75
|
+
};
|
|
76
|
+
includeClasses: {
|
|
77
|
+
type: string;
|
|
78
|
+
default: boolean;
|
|
79
|
+
description: string;
|
|
80
|
+
};
|
|
81
|
+
category?: undefined;
|
|
82
|
+
format?: undefined;
|
|
83
|
+
query?: undefined;
|
|
84
|
+
type?: undefined;
|
|
85
|
+
size?: undefined;
|
|
86
|
+
limit?: undefined;
|
|
87
|
+
};
|
|
88
|
+
required: string[];
|
|
89
|
+
};
|
|
90
|
+
} | {
|
|
91
|
+
name: string;
|
|
92
|
+
description: string;
|
|
93
|
+
inputSchema: {
|
|
94
|
+
type: string;
|
|
95
|
+
properties: {
|
|
96
|
+
query: {
|
|
97
|
+
type: string;
|
|
98
|
+
description: string;
|
|
99
|
+
};
|
|
100
|
+
type: {
|
|
101
|
+
type: string;
|
|
102
|
+
description: string;
|
|
103
|
+
};
|
|
104
|
+
size: {
|
|
105
|
+
type: string;
|
|
106
|
+
description: string;
|
|
107
|
+
};
|
|
108
|
+
limit: {
|
|
109
|
+
type: string;
|
|
110
|
+
default: number;
|
|
111
|
+
description: string;
|
|
112
|
+
};
|
|
113
|
+
category?: undefined;
|
|
114
|
+
format?: undefined;
|
|
115
|
+
name?: undefined;
|
|
116
|
+
includeClasses?: undefined;
|
|
117
|
+
};
|
|
118
|
+
required: string[];
|
|
119
|
+
};
|
|
120
|
+
} | {
|
|
121
|
+
name: string;
|
|
122
|
+
description: string;
|
|
123
|
+
inputSchema: {
|
|
124
|
+
type: string;
|
|
125
|
+
properties: {
|
|
126
|
+
name: {
|
|
127
|
+
type: string;
|
|
128
|
+
description: string;
|
|
129
|
+
};
|
|
130
|
+
format: {
|
|
131
|
+
type: string;
|
|
132
|
+
enum: string[];
|
|
133
|
+
default: string;
|
|
134
|
+
description: string;
|
|
135
|
+
};
|
|
136
|
+
category?: undefined;
|
|
137
|
+
includeClasses?: undefined;
|
|
138
|
+
query?: undefined;
|
|
139
|
+
type?: undefined;
|
|
140
|
+
size?: undefined;
|
|
141
|
+
limit?: undefined;
|
|
142
|
+
};
|
|
143
|
+
required: string[];
|
|
144
|
+
};
|
|
145
|
+
})[];
|
|
146
|
+
};
|
|
147
|
+
callTool(body: McpToolCall): McpResponse;
|
|
148
|
+
private getDesignTokens;
|
|
149
|
+
private listCssUtilities;
|
|
150
|
+
private getCssUtility;
|
|
151
|
+
private searchIcons;
|
|
152
|
+
private getIcon;
|
|
153
|
+
}
|
|
154
|
+
export {};
|
|
155
|
+
//# sourceMappingURL=mcp-light.controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-light.controller.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp-light.controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAqD/C,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED,qBAIa,kBAAkB;IAGjB,OAAO,CAAC,aAAa;IAFjC,OAAO,CAAC,EAAE,CAAoB;gBAEV,aAAa,EAAE,aAAa;IAShD,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+HT,QAAQ,CAAS,IAAI,EAAE,WAAW,GAAG,WAAW;IA0BhD,OAAO,CAAC,eAAe;IAuDvB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,WAAW;IA8CnB,OAAO,CAAC,OAAO;CAuDhB"}
|
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { Controller, Post, Body, UseGuards, HttpCode, HttpStatus } from "@nestjs/common";
|
|
14
|
+
import { ApiTags, ApiOperation, ApiBearerAuth } from "@nestjs/swagger";
|
|
15
|
+
import { AuthGuard } from "../auth/auth.guard.js";
|
|
16
|
+
import Database from "better-sqlite3";
|
|
17
|
+
import { ConfigService } from "@nestjs/config";
|
|
18
|
+
import { getTokensByCategory, getCssUtility, listCssUtilities, searchIcons, getIconByName, } from "../db/queries.js";
|
|
19
|
+
import { mapCategoryToDbCategories } from "../parsers/tokens-parser.js";
|
|
20
|
+
import { generateSvg } from "../parsers/icons-parser.js";
|
|
21
|
+
// Token formatting functions
|
|
22
|
+
function formatAsScss(tokens) {
|
|
23
|
+
const lines = [];
|
|
24
|
+
for (const token of tokens) {
|
|
25
|
+
const varName = token.scssVariable || `$${token.path.replace(/\./g, "-")}`;
|
|
26
|
+
lines.push(`${varName}: ${token.valueRaw};`);
|
|
27
|
+
}
|
|
28
|
+
return lines.join("\n");
|
|
29
|
+
}
|
|
30
|
+
function formatAsCss(tokens) {
|
|
31
|
+
const lines = [":root {"];
|
|
32
|
+
for (const token of tokens) {
|
|
33
|
+
const varName = token.cssVariable || `--${token.path.replace(/\./g, "-")}`;
|
|
34
|
+
lines.push(` ${varName}: ${token.valueRaw};`);
|
|
35
|
+
}
|
|
36
|
+
lines.push("}");
|
|
37
|
+
return lines.join("\n");
|
|
38
|
+
}
|
|
39
|
+
function formatAsJs(tokens) {
|
|
40
|
+
const obj = {};
|
|
41
|
+
for (const token of tokens) {
|
|
42
|
+
const parts = token.path.split(".");
|
|
43
|
+
let current = obj;
|
|
44
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
45
|
+
const part = parts[i];
|
|
46
|
+
if (!(part in current)) {
|
|
47
|
+
current[part] = {};
|
|
48
|
+
}
|
|
49
|
+
current = current[part];
|
|
50
|
+
}
|
|
51
|
+
current[parts[parts.length - 1]] = token.valueRaw;
|
|
52
|
+
}
|
|
53
|
+
return `export const tokens = ${JSON.stringify(obj, null, 2)};`;
|
|
54
|
+
}
|
|
55
|
+
let McpLightController = class McpLightController {
|
|
56
|
+
configService;
|
|
57
|
+
db;
|
|
58
|
+
constructor(configService) {
|
|
59
|
+
this.configService = configService;
|
|
60
|
+
const dbPath = this.configService.get("database.path");
|
|
61
|
+
this.db = new Database(dbPath, { readonly: true });
|
|
62
|
+
this.db.pragma("journal_mode = WAL");
|
|
63
|
+
}
|
|
64
|
+
listTools() {
|
|
65
|
+
return {
|
|
66
|
+
tools: [
|
|
67
|
+
{
|
|
68
|
+
name: "get_design_tokens",
|
|
69
|
+
description: "Get Mozaic design tokens (colors, typography, spacing, shadows, borders, screens, grid) in various formats (JSON, SCSS, CSS, JS)",
|
|
70
|
+
inputSchema: {
|
|
71
|
+
type: "object",
|
|
72
|
+
properties: {
|
|
73
|
+
category: {
|
|
74
|
+
type: "string",
|
|
75
|
+
enum: [
|
|
76
|
+
"colors",
|
|
77
|
+
"typography",
|
|
78
|
+
"spacing",
|
|
79
|
+
"shadows",
|
|
80
|
+
"borders",
|
|
81
|
+
"screens",
|
|
82
|
+
"grid",
|
|
83
|
+
"all",
|
|
84
|
+
],
|
|
85
|
+
description: "Token category to retrieve",
|
|
86
|
+
},
|
|
87
|
+
format: {
|
|
88
|
+
type: "string",
|
|
89
|
+
enum: ["json", "scss", "css", "js"],
|
|
90
|
+
default: "json",
|
|
91
|
+
description: "Output format",
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
required: ["category"],
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "list_css_utilities",
|
|
99
|
+
description: "List Mozaic CSS utilities (Flexy grid, Container, Margin, Padding, Ratio, Scroll). CSS-only, no framework needed.",
|
|
100
|
+
inputSchema: {
|
|
101
|
+
type: "object",
|
|
102
|
+
properties: {
|
|
103
|
+
category: {
|
|
104
|
+
type: "string",
|
|
105
|
+
enum: ["layout", "utility", "all"],
|
|
106
|
+
default: "all",
|
|
107
|
+
description: "Filter: layout (Flexy, Container) or utility (Margin, Padding, etc.)",
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
required: [],
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "get_css_utility",
|
|
115
|
+
description: "Get CSS utility classes and examples. Available: flexy, container, margin, padding, ratio, scroll.",
|
|
116
|
+
inputSchema: {
|
|
117
|
+
type: "object",
|
|
118
|
+
properties: {
|
|
119
|
+
name: {
|
|
120
|
+
type: "string",
|
|
121
|
+
description: "Utility name (e.g., 'flexy', 'margin', 'padding')",
|
|
122
|
+
},
|
|
123
|
+
includeClasses: {
|
|
124
|
+
type: "boolean",
|
|
125
|
+
default: true,
|
|
126
|
+
description: "Include all CSS class names",
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
required: ["name"],
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: "search_icons",
|
|
134
|
+
description: "Search Mozaic icons by name or type. Returns icon names, types, and available sizes (16, 24, 32, 48, 64).",
|
|
135
|
+
inputSchema: {
|
|
136
|
+
type: "object",
|
|
137
|
+
properties: {
|
|
138
|
+
query: {
|
|
139
|
+
type: "string",
|
|
140
|
+
description: 'Search query (e.g., "arrow", "cart", "user")',
|
|
141
|
+
},
|
|
142
|
+
type: {
|
|
143
|
+
type: "string",
|
|
144
|
+
description: 'Filter by type (e.g., "navigation", "media", "social")',
|
|
145
|
+
},
|
|
146
|
+
size: {
|
|
147
|
+
type: "number",
|
|
148
|
+
description: "Filter by size (16, 24, 32, 48, 64)",
|
|
149
|
+
},
|
|
150
|
+
limit: {
|
|
151
|
+
type: "number",
|
|
152
|
+
default: 20,
|
|
153
|
+
description: "Max results",
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
required: ["query"],
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
name: "get_icon",
|
|
161
|
+
description: "Get specific icon by name with SVG markup. Use search_icons first to find names.",
|
|
162
|
+
inputSchema: {
|
|
163
|
+
type: "object",
|
|
164
|
+
properties: {
|
|
165
|
+
name: {
|
|
166
|
+
type: "string",
|
|
167
|
+
description: 'Icon name (e.g., "ArrowArrowBottom16", "Cart24")',
|
|
168
|
+
},
|
|
169
|
+
format: {
|
|
170
|
+
type: "string",
|
|
171
|
+
enum: ["svg", "json"],
|
|
172
|
+
default: "json",
|
|
173
|
+
description: "Output: svg (raw SVG) or json (metadata + SVG)",
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
required: ["name"],
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
callTool(body) {
|
|
183
|
+
const { name, arguments: args = {} } = body;
|
|
184
|
+
switch (name) {
|
|
185
|
+
case "get_design_tokens":
|
|
186
|
+
return this.getDesignTokens(args);
|
|
187
|
+
case "list_css_utilities":
|
|
188
|
+
return this.listCssUtilities(args);
|
|
189
|
+
case "get_css_utility":
|
|
190
|
+
return this.getCssUtility(args);
|
|
191
|
+
case "search_icons":
|
|
192
|
+
return this.searchIcons(args);
|
|
193
|
+
case "get_icon":
|
|
194
|
+
return this.getIcon(args);
|
|
195
|
+
default:
|
|
196
|
+
return {
|
|
197
|
+
content: [
|
|
198
|
+
{
|
|
199
|
+
type: "text",
|
|
200
|
+
text: JSON.stringify({ error: `Unknown tool: ${name}` }),
|
|
201
|
+
},
|
|
202
|
+
],
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
getDesignTokens(args) {
|
|
207
|
+
const { category, format = "json" } = args;
|
|
208
|
+
let tokens = [];
|
|
209
|
+
if (category === "all") {
|
|
210
|
+
tokens = getTokensByCategory(this.db, "all");
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
const dbCategories = mapCategoryToDbCategories(category);
|
|
214
|
+
for (const cat of dbCategories) {
|
|
215
|
+
tokens.push(...getTokensByCategory(this.db, cat));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (tokens.length === 0) {
|
|
219
|
+
return {
|
|
220
|
+
content: [{ type: "text", text: `No tokens found for category: ${category}` }],
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
let output;
|
|
224
|
+
switch (format) {
|
|
225
|
+
case "scss":
|
|
226
|
+
output = formatAsScss(tokens);
|
|
227
|
+
break;
|
|
228
|
+
case "css":
|
|
229
|
+
output = formatAsCss(tokens);
|
|
230
|
+
break;
|
|
231
|
+
case "js":
|
|
232
|
+
output = formatAsJs(tokens);
|
|
233
|
+
break;
|
|
234
|
+
case "json":
|
|
235
|
+
default:
|
|
236
|
+
output = JSON.stringify(tokens.map((t) => ({
|
|
237
|
+
category: t.category,
|
|
238
|
+
subcategory: t.subcategory,
|
|
239
|
+
name: t.name,
|
|
240
|
+
path: t.path,
|
|
241
|
+
value: t.valueRaw,
|
|
242
|
+
valueComputed: t.valueComputed,
|
|
243
|
+
cssVariable: t.cssVariable,
|
|
244
|
+
scssVariable: t.scssVariable,
|
|
245
|
+
description: t.description,
|
|
246
|
+
})), null, 2);
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
return { content: [{ type: "text", text: output }] };
|
|
250
|
+
}
|
|
251
|
+
listCssUtilities(args) {
|
|
252
|
+
const { category = "all" } = args;
|
|
253
|
+
const utilities = listCssUtilities(this.db, category);
|
|
254
|
+
const output = utilities.map((u) => ({
|
|
255
|
+
name: u.name,
|
|
256
|
+
slug: u.slug,
|
|
257
|
+
category: u.category,
|
|
258
|
+
description: u.description,
|
|
259
|
+
classCount: u.classCount,
|
|
260
|
+
}));
|
|
261
|
+
return {
|
|
262
|
+
content: [{ type: "text", text: JSON.stringify(output, null, 2) }],
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
getCssUtility(args) {
|
|
266
|
+
const { name, includeClasses = true } = args;
|
|
267
|
+
const utility = getCssUtility(this.db, name.toLowerCase());
|
|
268
|
+
if (!utility) {
|
|
269
|
+
return {
|
|
270
|
+
content: [
|
|
271
|
+
{
|
|
272
|
+
type: "text",
|
|
273
|
+
text: JSON.stringify({
|
|
274
|
+
error: `CSS utility not found: ${name}`,
|
|
275
|
+
available: ["flexy", "container", "margin", "padding", "ratio", "scroll"],
|
|
276
|
+
}),
|
|
277
|
+
},
|
|
278
|
+
],
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
const output = {
|
|
282
|
+
name: utility.name,
|
|
283
|
+
category: utility.category,
|
|
284
|
+
description: utility.description,
|
|
285
|
+
classes: includeClasses ? utility.classes : [],
|
|
286
|
+
examples: utility.examples.map((e) => ({
|
|
287
|
+
title: e.title,
|
|
288
|
+
code: e.code,
|
|
289
|
+
})),
|
|
290
|
+
};
|
|
291
|
+
return {
|
|
292
|
+
content: [{ type: "text", text: JSON.stringify(output, null, 2) }],
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
searchIcons(args) {
|
|
296
|
+
const { query, type, size, limit = 20, } = args;
|
|
297
|
+
const terms = query
|
|
298
|
+
.trim()
|
|
299
|
+
.split(/\s+/)
|
|
300
|
+
.filter((t) => t.length > 1);
|
|
301
|
+
const ftsQuery = terms.length > 0 ? terms.map((t) => `${t}*`).join(" OR ") : `${query}*`;
|
|
302
|
+
const results = searchIcons(this.db, ftsQuery, { type, size, limit });
|
|
303
|
+
const grouped = new Map();
|
|
304
|
+
for (const icon of results) {
|
|
305
|
+
const key = icon.iconName;
|
|
306
|
+
if (!grouped.has(key)) {
|
|
307
|
+
grouped.set(key, { iconName: icon.iconName, type: icon.type, sizes: [] });
|
|
308
|
+
}
|
|
309
|
+
grouped.get(key)?.sizes.push(icon.size);
|
|
310
|
+
}
|
|
311
|
+
const output = {
|
|
312
|
+
query,
|
|
313
|
+
resultCount: results.length,
|
|
314
|
+
uniqueIcons: grouped.size,
|
|
315
|
+
icons: Array.from(grouped.values()).map((g) => ({
|
|
316
|
+
name: g.iconName,
|
|
317
|
+
type: g.type,
|
|
318
|
+
availableSizes: g.sizes.sort((a, b) => a - b),
|
|
319
|
+
})),
|
|
320
|
+
};
|
|
321
|
+
return {
|
|
322
|
+
content: [{ type: "text", text: JSON.stringify(output, null, 2) }],
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
getIcon(args) {
|
|
326
|
+
const { name, format = "json" } = args;
|
|
327
|
+
let icon = getIconByName(this.db, name);
|
|
328
|
+
if (!icon) {
|
|
329
|
+
for (const size of [16, 24, 32, 48, 64]) {
|
|
330
|
+
icon = getIconByName(this.db, `${name}${size}`);
|
|
331
|
+
if (icon)
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
if (!icon) {
|
|
336
|
+
return {
|
|
337
|
+
content: [
|
|
338
|
+
{
|
|
339
|
+
type: "text",
|
|
340
|
+
text: JSON.stringify({
|
|
341
|
+
error: `Icon not found: ${name}`,
|
|
342
|
+
hint: "Use search_icons to find icons",
|
|
343
|
+
}),
|
|
344
|
+
},
|
|
345
|
+
],
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
const parsedIcon = {
|
|
349
|
+
name: icon.name,
|
|
350
|
+
iconName: icon.iconName,
|
|
351
|
+
type: icon.type,
|
|
352
|
+
size: icon.size,
|
|
353
|
+
viewBox: icon.viewBox,
|
|
354
|
+
paths: icon.paths,
|
|
355
|
+
};
|
|
356
|
+
if (format === "svg") {
|
|
357
|
+
return {
|
|
358
|
+
content: [{ type: "text", text: generateSvg(parsedIcon) }],
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
const output = {
|
|
362
|
+
name: icon.name,
|
|
363
|
+
iconName: icon.iconName,
|
|
364
|
+
type: icon.type,
|
|
365
|
+
size: icon.size,
|
|
366
|
+
viewBox: icon.viewBox,
|
|
367
|
+
svg: generateSvg(parsedIcon),
|
|
368
|
+
rawPaths: icon.paths,
|
|
369
|
+
};
|
|
370
|
+
return {
|
|
371
|
+
content: [{ type: "text", text: JSON.stringify(output, null, 2) }],
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
};
|
|
375
|
+
__decorate([
|
|
376
|
+
Post("list-tools"),
|
|
377
|
+
HttpCode(HttpStatus.OK),
|
|
378
|
+
ApiOperation({ summary: "List available lightweight MCP tools (tokens, utilities, icons only)" }),
|
|
379
|
+
__metadata("design:type", Function),
|
|
380
|
+
__metadata("design:paramtypes", []),
|
|
381
|
+
__metadata("design:returntype", void 0)
|
|
382
|
+
], McpLightController.prototype, "listTools", null);
|
|
383
|
+
__decorate([
|
|
384
|
+
Post("call-tool"),
|
|
385
|
+
HttpCode(HttpStatus.OK),
|
|
386
|
+
ApiOperation({ summary: "Call a lightweight MCP tool" }),
|
|
387
|
+
__param(0, Body()),
|
|
388
|
+
__metadata("design:type", Function),
|
|
389
|
+
__metadata("design:paramtypes", [Object]),
|
|
390
|
+
__metadata("design:returntype", Object)
|
|
391
|
+
], McpLightController.prototype, "callTool", null);
|
|
392
|
+
McpLightController = __decorate([
|
|
393
|
+
ApiTags("MCP Light"),
|
|
394
|
+
Controller("mcp/light"),
|
|
395
|
+
UseGuards(AuthGuard),
|
|
396
|
+
ApiBearerAuth(),
|
|
397
|
+
__metadata("design:paramtypes", [ConfigService])
|
|
398
|
+
], McpLightController);
|
|
399
|
+
export { McpLightController };
|
|
400
|
+
//# sourceMappingURL=mcp-light.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-light.controller.js","sourceRoot":"","sources":["../../src/mcp/mcp-light.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.module.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp.module.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.module.d.ts","sourceRoot":"","sources":["../../src/mcp/mcp.module.ts"],"names":[],"mappings":"AAKA,qBAKa,SAAS;CAAG"}
|
package/dist/mcp/mcp.module.js
CHANGED
|
@@ -6,12 +6,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { Module } from "@nestjs/common";
|
|
8
8
|
import { McpController } from "./mcp.controller.js";
|
|
9
|
+
import { McpLightController } from "./mcp-light.controller.js";
|
|
9
10
|
import { McpService } from "./mcp.service.js";
|
|
10
11
|
let McpModule = class McpModule {
|
|
11
12
|
};
|
|
12
13
|
McpModule = __decorate([
|
|
13
14
|
Module({
|
|
14
|
-
controllers: [McpController],
|
|
15
|
+
controllers: [McpController, McpLightController],
|
|
15
16
|
providers: [McpService],
|
|
16
17
|
exports: [McpService],
|
|
17
18
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.module.js","sourceRoot":"","sources":["../../src/mcp/mcp.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAOvC,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IALrB,MAAM,CAAC;QACN,WAAW,EAAE,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.module.js","sourceRoot":"","sources":["../../src/mcp/mcp.module.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAOvC,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,SAAS;IALrB,MAAM,CAAC;QACN,WAAW,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;QAChD,SAAS,EAAE,CAAC,UAAU,CAAC;QACvB,OAAO,EAAE,CAAC,UAAU,CAAC;KACtB,CAAC;GACW,SAAS,CAAG"}
|
|
@@ -8,9 +8,9 @@ import { z } from "zod";
|
|
|
8
8
|
declare const _ListFreemarkerInputSchema: z.ZodObject<{
|
|
9
9
|
category: z.ZodDefault<z.ZodOptional<z.ZodEnum<["all", "action", "form", "feedback", "navigation", "layout", "data-display", "other"]>>>;
|
|
10
10
|
}, "strip", z.ZodTypeAny, {
|
|
11
|
-
category?: "all" | "
|
|
11
|
+
category?: "all" | "layout" | "form" | "navigation" | "feedback" | "data-display" | "action" | "other";
|
|
12
12
|
}, {
|
|
13
|
-
category?: "all" | "
|
|
13
|
+
category?: "all" | "layout" | "form" | "navigation" | "feedback" | "data-display" | "action" | "other";
|
|
14
14
|
}>;
|
|
15
15
|
export type ListFreemarkerInput = z.infer<typeof _ListFreemarkerInputSchema>;
|
|
16
16
|
export declare function handleListFreemarker(db: Database.Database, input: ListFreemarkerInput): {
|