@zephrui/mcp-server 0.1.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/LICENSE +21 -0
- package/README.md +11 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/tools.d.ts +197 -0
- package/dist/tools.js +501 -0
- package/dist/tools.js.map +1 -0
- package/package.json +21 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Zephyr
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tools_1 = require("./tools");
|
|
4
|
+
function writeResponse(response) {
|
|
5
|
+
process.stdout.write(`${JSON.stringify(response)}\n`);
|
|
6
|
+
}
|
|
7
|
+
function handleRequest(request) {
|
|
8
|
+
try {
|
|
9
|
+
if (request.method === "tools/list") {
|
|
10
|
+
return {
|
|
11
|
+
jsonrpc: "2.0",
|
|
12
|
+
id: request.id ?? null,
|
|
13
|
+
result: { tools: (0, tools_1.listTools)() }
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
if (request.method === "tools/call") {
|
|
17
|
+
const name = String(request.params?.name ?? "");
|
|
18
|
+
const args = (request.params?.arguments ?? {});
|
|
19
|
+
const result = (0, tools_1.callTool)({ name: name, arguments: args });
|
|
20
|
+
return {
|
|
21
|
+
jsonrpc: "2.0",
|
|
22
|
+
id: request.id ?? null,
|
|
23
|
+
result: {
|
|
24
|
+
content: [{ type: "json", json: result }]
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
jsonrpc: "2.0",
|
|
30
|
+
id: request.id ?? null,
|
|
31
|
+
error: { code: -32601, message: `Method not found: ${request.method}` }
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
return {
|
|
36
|
+
jsonrpc: "2.0",
|
|
37
|
+
id: request.id ?? null,
|
|
38
|
+
error: {
|
|
39
|
+
code: -32000,
|
|
40
|
+
message: error instanceof Error ? error.message : "Unknown server error"
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function boot() {
|
|
46
|
+
let buffer = "";
|
|
47
|
+
process.stdin.setEncoding("utf8");
|
|
48
|
+
process.stdin.on("data", (chunk) => {
|
|
49
|
+
buffer += chunk;
|
|
50
|
+
while (buffer.includes("\n")) {
|
|
51
|
+
const index = buffer.indexOf("\n");
|
|
52
|
+
const line = buffer.slice(0, index).trim();
|
|
53
|
+
buffer = buffer.slice(index + 1);
|
|
54
|
+
if (!line) {
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const request = JSON.parse(line);
|
|
59
|
+
writeResponse(handleRequest(request));
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
writeResponse({
|
|
63
|
+
jsonrpc: "2.0",
|
|
64
|
+
id: null,
|
|
65
|
+
error: { code: -32700, message: "Parse error" }
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
process.stdout.write(`${JSON.stringify({ jsonrpc: "2.0", method: "server/ready", params: { name: "zephr-mcp" } })}\n`);
|
|
71
|
+
}
|
|
72
|
+
boot();
|
|
73
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { listComponents } from "@zephrui/ai-registry";
|
|
2
|
+
export type McpToolName = "search_components" | "get_component_spec" | "get_install_steps" | "get_usage_examples" | "get_theme_variants" | "generate_component" | "list_templates" | "scaffold_page" | "apply_theme" | "install_plan";
|
|
3
|
+
export interface McpToolCall {
|
|
4
|
+
name: McpToolName;
|
|
5
|
+
arguments?: Record<string, unknown>;
|
|
6
|
+
}
|
|
7
|
+
export declare function listTools(): ({
|
|
8
|
+
name: string;
|
|
9
|
+
description: string;
|
|
10
|
+
inputSchema: {
|
|
11
|
+
type: string;
|
|
12
|
+
properties: {
|
|
13
|
+
query: {
|
|
14
|
+
type: string;
|
|
15
|
+
};
|
|
16
|
+
id?: undefined;
|
|
17
|
+
stylePack?: undefined;
|
|
18
|
+
accentColor?: undefined;
|
|
19
|
+
assistant?: undefined;
|
|
20
|
+
packageManager?: undefined;
|
|
21
|
+
components?: undefined;
|
|
22
|
+
pageTitle?: undefined;
|
|
23
|
+
framework?: undefined;
|
|
24
|
+
};
|
|
25
|
+
required: string[];
|
|
26
|
+
};
|
|
27
|
+
} | {
|
|
28
|
+
name: string;
|
|
29
|
+
description: string;
|
|
30
|
+
inputSchema: {
|
|
31
|
+
type: string;
|
|
32
|
+
properties: {
|
|
33
|
+
id: {
|
|
34
|
+
type: string;
|
|
35
|
+
description?: undefined;
|
|
36
|
+
};
|
|
37
|
+
query?: undefined;
|
|
38
|
+
stylePack?: undefined;
|
|
39
|
+
accentColor?: undefined;
|
|
40
|
+
assistant?: undefined;
|
|
41
|
+
packageManager?: undefined;
|
|
42
|
+
components?: undefined;
|
|
43
|
+
pageTitle?: undefined;
|
|
44
|
+
framework?: undefined;
|
|
45
|
+
};
|
|
46
|
+
required: string[];
|
|
47
|
+
};
|
|
48
|
+
} | {
|
|
49
|
+
name: string;
|
|
50
|
+
description: string;
|
|
51
|
+
inputSchema: {
|
|
52
|
+
type: string;
|
|
53
|
+
properties: {
|
|
54
|
+
query?: undefined;
|
|
55
|
+
id?: undefined;
|
|
56
|
+
stylePack?: undefined;
|
|
57
|
+
accentColor?: undefined;
|
|
58
|
+
assistant?: undefined;
|
|
59
|
+
packageManager?: undefined;
|
|
60
|
+
components?: undefined;
|
|
61
|
+
pageTitle?: undefined;
|
|
62
|
+
framework?: undefined;
|
|
63
|
+
};
|
|
64
|
+
required: never[];
|
|
65
|
+
};
|
|
66
|
+
} | {
|
|
67
|
+
name: string;
|
|
68
|
+
description: string;
|
|
69
|
+
inputSchema: {
|
|
70
|
+
type: string;
|
|
71
|
+
properties: {
|
|
72
|
+
id: {
|
|
73
|
+
type: string;
|
|
74
|
+
description: string;
|
|
75
|
+
};
|
|
76
|
+
stylePack: {
|
|
77
|
+
type: string;
|
|
78
|
+
description: string;
|
|
79
|
+
};
|
|
80
|
+
accentColor: {
|
|
81
|
+
type: string;
|
|
82
|
+
description: string;
|
|
83
|
+
};
|
|
84
|
+
assistant: {
|
|
85
|
+
type: string;
|
|
86
|
+
description: string;
|
|
87
|
+
};
|
|
88
|
+
packageManager: {
|
|
89
|
+
type: string;
|
|
90
|
+
description: string;
|
|
91
|
+
};
|
|
92
|
+
query?: undefined;
|
|
93
|
+
components?: undefined;
|
|
94
|
+
pageTitle?: undefined;
|
|
95
|
+
framework?: undefined;
|
|
96
|
+
};
|
|
97
|
+
required: string[];
|
|
98
|
+
};
|
|
99
|
+
} | {
|
|
100
|
+
name: string;
|
|
101
|
+
description: string;
|
|
102
|
+
inputSchema: {
|
|
103
|
+
type: string;
|
|
104
|
+
properties: {
|
|
105
|
+
components: {
|
|
106
|
+
type: string;
|
|
107
|
+
items: {
|
|
108
|
+
type: string;
|
|
109
|
+
};
|
|
110
|
+
description: string;
|
|
111
|
+
};
|
|
112
|
+
stylePack: {
|
|
113
|
+
type: string;
|
|
114
|
+
description: string;
|
|
115
|
+
};
|
|
116
|
+
accentColor: {
|
|
117
|
+
type: string;
|
|
118
|
+
description: string;
|
|
119
|
+
};
|
|
120
|
+
pageTitle: {
|
|
121
|
+
type: string;
|
|
122
|
+
description: string;
|
|
123
|
+
};
|
|
124
|
+
assistant: {
|
|
125
|
+
type: string;
|
|
126
|
+
description: string;
|
|
127
|
+
};
|
|
128
|
+
packageManager: {
|
|
129
|
+
type: string;
|
|
130
|
+
description: string;
|
|
131
|
+
};
|
|
132
|
+
query?: undefined;
|
|
133
|
+
id?: undefined;
|
|
134
|
+
framework?: undefined;
|
|
135
|
+
};
|
|
136
|
+
required: string[];
|
|
137
|
+
};
|
|
138
|
+
} | {
|
|
139
|
+
name: string;
|
|
140
|
+
description: string;
|
|
141
|
+
inputSchema: {
|
|
142
|
+
type: string;
|
|
143
|
+
properties: {
|
|
144
|
+
stylePack: {
|
|
145
|
+
type: string;
|
|
146
|
+
description: string;
|
|
147
|
+
};
|
|
148
|
+
accentColor: {
|
|
149
|
+
type: string;
|
|
150
|
+
description: string;
|
|
151
|
+
};
|
|
152
|
+
packageManager: {
|
|
153
|
+
type: string;
|
|
154
|
+
description: string;
|
|
155
|
+
};
|
|
156
|
+
query?: undefined;
|
|
157
|
+
id?: undefined;
|
|
158
|
+
assistant?: undefined;
|
|
159
|
+
components?: undefined;
|
|
160
|
+
pageTitle?: undefined;
|
|
161
|
+
framework?: undefined;
|
|
162
|
+
};
|
|
163
|
+
required: string[];
|
|
164
|
+
};
|
|
165
|
+
} | {
|
|
166
|
+
name: string;
|
|
167
|
+
description: string;
|
|
168
|
+
inputSchema: {
|
|
169
|
+
type: string;
|
|
170
|
+
properties: {
|
|
171
|
+
framework: {
|
|
172
|
+
type: string;
|
|
173
|
+
description: string;
|
|
174
|
+
};
|
|
175
|
+
packageManager: {
|
|
176
|
+
type: string;
|
|
177
|
+
description: string;
|
|
178
|
+
};
|
|
179
|
+
components: {
|
|
180
|
+
type: string;
|
|
181
|
+
items: {
|
|
182
|
+
type: string;
|
|
183
|
+
};
|
|
184
|
+
description: string;
|
|
185
|
+
};
|
|
186
|
+
query?: undefined;
|
|
187
|
+
id?: undefined;
|
|
188
|
+
stylePack?: undefined;
|
|
189
|
+
accentColor?: undefined;
|
|
190
|
+
assistant?: undefined;
|
|
191
|
+
pageTitle?: undefined;
|
|
192
|
+
};
|
|
193
|
+
required: never[];
|
|
194
|
+
};
|
|
195
|
+
})[];
|
|
196
|
+
export declare function callTool(call: McpToolCall): unknown;
|
|
197
|
+
export { listComponents };
|
package/dist/tools.js
ADDED
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listComponents = void 0;
|
|
4
|
+
exports.listTools = listTools;
|
|
5
|
+
exports.callTool = callTool;
|
|
6
|
+
const ai_registry_1 = require("@zephrui/ai-registry");
|
|
7
|
+
Object.defineProperty(exports, "listComponents", { enumerable: true, get: function () { return ai_registry_1.listComponents; } });
|
|
8
|
+
const STYLE_PACKS = ["notion", "stripe", "linear", "framer"];
|
|
9
|
+
const LEGACY_STYLE_PACK_MAP = {
|
|
10
|
+
Studio: "notion",
|
|
11
|
+
Editorial: "stripe",
|
|
12
|
+
NeoBrutal: "framer",
|
|
13
|
+
SoftTech: "stripe",
|
|
14
|
+
Enterprise: "linear",
|
|
15
|
+
Clarity: "notion"
|
|
16
|
+
};
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Tool definitions (returned by tools/list)
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
function listTools() {
|
|
21
|
+
return [
|
|
22
|
+
// --- Info / retrieval tools (existing) ---
|
|
23
|
+
{
|
|
24
|
+
name: "search_components",
|
|
25
|
+
description: "Search Zephr components by name, id, or intent",
|
|
26
|
+
inputSchema: {
|
|
27
|
+
type: "object",
|
|
28
|
+
properties: { query: { type: "string" } },
|
|
29
|
+
required: ["query"]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "get_component_spec",
|
|
34
|
+
description: "Get full component metadata, props, a11y notes, and dependencies",
|
|
35
|
+
inputSchema: {
|
|
36
|
+
type: "object",
|
|
37
|
+
properties: { id: { type: "string" } },
|
|
38
|
+
required: ["id"]
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "get_install_steps",
|
|
43
|
+
description: "Return installation/import instructions for a component",
|
|
44
|
+
inputSchema: {
|
|
45
|
+
type: "object",
|
|
46
|
+
properties: { id: { type: "string" } },
|
|
47
|
+
required: ["id"]
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: "get_usage_examples",
|
|
52
|
+
description: "Return component usage snippets",
|
|
53
|
+
inputSchema: {
|
|
54
|
+
type: "object",
|
|
55
|
+
properties: { id: { type: "string" } },
|
|
56
|
+
required: ["id"]
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: "get_theme_variants",
|
|
61
|
+
description: "Return supported style packs for a component",
|
|
62
|
+
inputSchema: {
|
|
63
|
+
type: "object",
|
|
64
|
+
properties: { id: { type: "string" } },
|
|
65
|
+
required: ["id"]
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "list_templates",
|
|
70
|
+
description: "List all available Zephr Pro page templates (DashboardPage, AuthPage, SettingsPage, OnboardingPage). Returns id, name, description, and usage snippet for each template.",
|
|
71
|
+
inputSchema: {
|
|
72
|
+
type: "object",
|
|
73
|
+
properties: {},
|
|
74
|
+
required: []
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
// --- Action tools (new) ---
|
|
78
|
+
{
|
|
79
|
+
name: "generate_component",
|
|
80
|
+
description: "Generate a ready-to-paste component snippet and AI prompt for a specific Zephr component. Returns the source snippet, a formatted AI prompt, and suggested file names.",
|
|
81
|
+
inputSchema: {
|
|
82
|
+
type: "object",
|
|
83
|
+
properties: {
|
|
84
|
+
id: { type: "string", description: "Component id, e.g. 'button', 'modal-dialog'" },
|
|
85
|
+
stylePack: {
|
|
86
|
+
type: "string",
|
|
87
|
+
description: "Style pack name. One of: notion, stripe, linear, framer. Defaults to notion."
|
|
88
|
+
},
|
|
89
|
+
accentColor: {
|
|
90
|
+
type: "string",
|
|
91
|
+
description: "Accent hex color, e.g. '#121212'. Defaults to '#121212'."
|
|
92
|
+
},
|
|
93
|
+
assistant: {
|
|
94
|
+
type: "string",
|
|
95
|
+
description: "Target AI assistant: Codex, Claude, or Cursor. Defaults to Codex."
|
|
96
|
+
},
|
|
97
|
+
packageManager: {
|
|
98
|
+
type: "string",
|
|
99
|
+
description: "Package manager: pnpm, npm, yarn, or bun. Defaults to pnpm."
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
required: ["id"]
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: "scaffold_page",
|
|
107
|
+
description: "Generate a complete, paste-ready React page that composes multiple Zephr components with the selected style pack. Returns the full page source, a zephr.config.ts snippet, and the combined install command.",
|
|
108
|
+
inputSchema: {
|
|
109
|
+
type: "object",
|
|
110
|
+
properties: {
|
|
111
|
+
components: {
|
|
112
|
+
type: "array",
|
|
113
|
+
items: { type: "string" },
|
|
114
|
+
description: "List of component ids to include on the page, e.g. ['navbar', 'button', 'input']"
|
|
115
|
+
},
|
|
116
|
+
stylePack: {
|
|
117
|
+
type: "string",
|
|
118
|
+
description: "Style pack name. Defaults to notion."
|
|
119
|
+
},
|
|
120
|
+
accentColor: {
|
|
121
|
+
type: "string",
|
|
122
|
+
description: "Accent hex color. Defaults to '#121212'."
|
|
123
|
+
},
|
|
124
|
+
pageTitle: {
|
|
125
|
+
type: "string",
|
|
126
|
+
description: "Title of the generated page component. Defaults to 'Page'."
|
|
127
|
+
},
|
|
128
|
+
assistant: {
|
|
129
|
+
type: "string",
|
|
130
|
+
description: "Target AI assistant: Codex, Claude, or Cursor. Defaults to Codex."
|
|
131
|
+
},
|
|
132
|
+
packageManager: {
|
|
133
|
+
type: "string",
|
|
134
|
+
description: "Package manager: pnpm, npm, yarn, or bun. Defaults to pnpm."
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
required: ["components"]
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: "apply_theme",
|
|
142
|
+
description: "Generate a zephr.config.ts file content for a given style pack and accent color. Returns the config source string ready to be written to disk, plus the install command.",
|
|
143
|
+
inputSchema: {
|
|
144
|
+
type: "object",
|
|
145
|
+
properties: {
|
|
146
|
+
stylePack: {
|
|
147
|
+
type: "string",
|
|
148
|
+
description: "Style pack name. One of: notion, stripe, linear, framer."
|
|
149
|
+
},
|
|
150
|
+
accentColor: {
|
|
151
|
+
type: "string",
|
|
152
|
+
description: "Accent hex color. Defaults to '#121212'."
|
|
153
|
+
},
|
|
154
|
+
packageManager: {
|
|
155
|
+
type: "string",
|
|
156
|
+
description: "Package manager: pnpm, npm, yarn, or bun. Defaults to pnpm."
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
required: ["stylePack"]
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
name: "install_plan",
|
|
164
|
+
description: "Generate a step-by-step install plan for Zephr components tailored to the user's framework and package manager. Returns numbered steps with exact shell commands, config snippets, and CSS import instructions.",
|
|
165
|
+
inputSchema: {
|
|
166
|
+
type: "object",
|
|
167
|
+
properties: {
|
|
168
|
+
framework: {
|
|
169
|
+
type: "string",
|
|
170
|
+
description: "Target framework: vite, nextjs, remix, or cra. Defaults to vite."
|
|
171
|
+
},
|
|
172
|
+
packageManager: {
|
|
173
|
+
type: "string",
|
|
174
|
+
description: "Package manager: pnpm, npm, yarn, or bun. Defaults to npm."
|
|
175
|
+
},
|
|
176
|
+
components: {
|
|
177
|
+
type: "array",
|
|
178
|
+
items: { type: "string" },
|
|
179
|
+
description: "List of Zephr component IDs to include, e.g. ['button', 'input']. If empty, installs the base package only."
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
required: []
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
];
|
|
186
|
+
}
|
|
187
|
+
// ---------------------------------------------------------------------------
|
|
188
|
+
// Tool call handlers
|
|
189
|
+
// ---------------------------------------------------------------------------
|
|
190
|
+
function str(val, fallback = "") {
|
|
191
|
+
return typeof val === "string" ? val : fallback;
|
|
192
|
+
}
|
|
193
|
+
function handleGenerateComponent(args) {
|
|
194
|
+
const id = str(args.id);
|
|
195
|
+
const stylePack = normalizeStylePack(str(args.stylePack), "notion");
|
|
196
|
+
const accentColor = str(args.accentColor, "#121212");
|
|
197
|
+
const assistant = str(args.assistant, "Codex");
|
|
198
|
+
const packageManager = str(args.packageManager, "pnpm");
|
|
199
|
+
const scaffold = (0, ai_registry_1.generateComponentScaffold)(id, {
|
|
200
|
+
stylePack,
|
|
201
|
+
accentColor,
|
|
202
|
+
assistant,
|
|
203
|
+
packageManager,
|
|
204
|
+
includeCloudHint: true,
|
|
205
|
+
snippetHeaderComment: true
|
|
206
|
+
});
|
|
207
|
+
if (!scaffold) {
|
|
208
|
+
return { error: `Component '${id}' not found in registry.` };
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
snippetFileName: scaffold.snippetFileName,
|
|
212
|
+
promptFileName: scaffold.promptFileName,
|
|
213
|
+
snippetContent: scaffold.snippetContent,
|
|
214
|
+
promptContent: scaffold.promptContent,
|
|
215
|
+
installCommand: scaffold.template.installCommand,
|
|
216
|
+
importSnippet: scaffold.template.importSnippet
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
function handleScaffoldPage(args) {
|
|
220
|
+
const componentIds = Array.isArray(args.components)
|
|
221
|
+
? args.components.map(String)
|
|
222
|
+
: [];
|
|
223
|
+
if (componentIds.length === 0) {
|
|
224
|
+
return { error: "At least one component id is required." };
|
|
225
|
+
}
|
|
226
|
+
const stylePack = normalizeStylePack(str(args.stylePack), "notion");
|
|
227
|
+
const accentColor = str(args.accentColor, "#121212");
|
|
228
|
+
const pageTitle = str(args.pageTitle, "Page");
|
|
229
|
+
const assistant = str(args.assistant, "Codex");
|
|
230
|
+
const packageManager = str(args.packageManager, "pnpm");
|
|
231
|
+
// Resolve component entries and collect unique dependencies
|
|
232
|
+
const resolvedComponents = [];
|
|
233
|
+
const allDeps = new Set(["@zephrui/core", "@zephrui/ui-react"]);
|
|
234
|
+
const missingIds = [];
|
|
235
|
+
for (const id of componentIds) {
|
|
236
|
+
const template = (0, ai_registry_1.getComponentTemplate)(id, { packageManager, includeCoreDependency: true });
|
|
237
|
+
if (!template) {
|
|
238
|
+
missingIds.push(id);
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
resolvedComponents.push({
|
|
242
|
+
id: template.component.id,
|
|
243
|
+
name: template.component.name,
|
|
244
|
+
importSnippet: template.importSnippet
|
|
245
|
+
});
|
|
246
|
+
for (const dep of template.dependencies) {
|
|
247
|
+
allDeps.add(dep);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// Build install command
|
|
251
|
+
const depsArray = Array.from(allDeps);
|
|
252
|
+
const installCommand = buildInstallCommand(depsArray, packageManager);
|
|
253
|
+
// Build imports block (deduplicated by package)
|
|
254
|
+
const importsByPackage = new Map();
|
|
255
|
+
for (const c of resolvedComponents) {
|
|
256
|
+
// e.g. import { Button } from "@zephrui/ui-react";
|
|
257
|
+
const match = c.importSnippet.match(/import \{ (.+?) \} from "(.+?)"/);
|
|
258
|
+
if (match) {
|
|
259
|
+
const [, namedImport, pkg] = match;
|
|
260
|
+
if (!importsByPackage.has(pkg))
|
|
261
|
+
importsByPackage.set(pkg, []);
|
|
262
|
+
importsByPackage.get(pkg).push(namedImport.trim());
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
const importLines = [];
|
|
266
|
+
for (const [pkg, names] of importsByPackage.entries()) {
|
|
267
|
+
const dedupedNames = Array.from(new Set(names)).join(", ");
|
|
268
|
+
importLines.push(`import { ${dedupedNames} } from "${pkg}";`);
|
|
269
|
+
}
|
|
270
|
+
// Build JSX usage block — use first usage example line when available (templates need props)
|
|
271
|
+
const jsxLines = resolvedComponents.map((c) => {
|
|
272
|
+
const spec = (0, ai_registry_1.getComponentSpec)(c.id);
|
|
273
|
+
const exampleLine = spec?.usageExamples?.[0]?.split("\n").find((l) => l.trim().startsWith("<"));
|
|
274
|
+
const jsx = exampleLine?.trim() ?? `<${c.name} />`;
|
|
275
|
+
return ` {/* ${c.name} */}\n ${jsx}`;
|
|
276
|
+
});
|
|
277
|
+
const pageSource = [
|
|
278
|
+
`// ${pageTitle}`,
|
|
279
|
+
`// Generated by Zephr MCP — style pack: ${stylePack}, accent: ${accentColor}`,
|
|
280
|
+
`// Assistant: ${assistant}`,
|
|
281
|
+
"",
|
|
282
|
+
...importLines,
|
|
283
|
+
"",
|
|
284
|
+
`export default function ${pageTitle.replace(/\s+/g, "")}() {`,
|
|
285
|
+
` return (`,
|
|
286
|
+
` <div>`,
|
|
287
|
+
...jsxLines,
|
|
288
|
+
` </div>`,
|
|
289
|
+
` );`,
|
|
290
|
+
`}`
|
|
291
|
+
].join("\n");
|
|
292
|
+
// Config snippet
|
|
293
|
+
const configSource = buildConfigSource(stylePack, accentColor);
|
|
294
|
+
const warnings = missingIds.length > 0
|
|
295
|
+
? [`The following component ids were not found and were skipped: ${missingIds.join(", ")}`]
|
|
296
|
+
: [];
|
|
297
|
+
return {
|
|
298
|
+
pageSource,
|
|
299
|
+
configSource,
|
|
300
|
+
installCommand,
|
|
301
|
+
componentCount: resolvedComponents.length,
|
|
302
|
+
includedComponents: resolvedComponents.map((c) => c.id),
|
|
303
|
+
warnings
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
function handleApplyTheme(args) {
|
|
307
|
+
const requestedPack = str(args.stylePack);
|
|
308
|
+
const accentColor = str(args.accentColor, "#121212");
|
|
309
|
+
const packageManager = str(args.packageManager, "pnpm");
|
|
310
|
+
const stylePack = normalizeStylePack(requestedPack, "notion");
|
|
311
|
+
if (!STYLE_PACKS.includes(stylePack)) {
|
|
312
|
+
return {
|
|
313
|
+
error: `Unknown style pack '${requestedPack}'. Valid values: ${STYLE_PACKS.join(", ")}.`
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
const configSource = buildConfigSource(stylePack, accentColor);
|
|
317
|
+
const installCommand = buildInstallCommand(["@zephrui/core", "@zephrui/ui-react"], packageManager);
|
|
318
|
+
const warnings = requestedPack in LEGACY_STYLE_PACK_MAP
|
|
319
|
+
? [`Style pack "${requestedPack}" is deprecated. Using "${stylePack}".`]
|
|
320
|
+
: [];
|
|
321
|
+
return {
|
|
322
|
+
configSource,
|
|
323
|
+
fileName: "zephr.config.ts",
|
|
324
|
+
installCommand,
|
|
325
|
+
warnings,
|
|
326
|
+
cssNote: `Import static theme CSS once in your app entry point: import "@zephrui/ui-react/themes/${stylePack}.css";`
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
// ---------------------------------------------------------------------------
|
|
330
|
+
// Shared helpers
|
|
331
|
+
// ---------------------------------------------------------------------------
|
|
332
|
+
function buildInstallCommand(deps, packageManager) {
|
|
333
|
+
const unique = Array.from(new Set(deps));
|
|
334
|
+
switch (packageManager) {
|
|
335
|
+
case "npm": return `npm install ${unique.join(" ")}`;
|
|
336
|
+
case "yarn": return `yarn add ${unique.join(" ")}`;
|
|
337
|
+
case "bun": return `bun add ${unique.join(" ")}`;
|
|
338
|
+
default: return `pnpm add ${unique.join(" ")}`;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
function buildConfigSource(stylePack, accentColor) {
|
|
342
|
+
return [
|
|
343
|
+
`import type { ZephrConfig } from "@zephrui/core";`,
|
|
344
|
+
``,
|
|
345
|
+
`const config: ZephrConfig = {`,
|
|
346
|
+
` stylePack: "${stylePack}",`,
|
|
347
|
+
` tokens: {`,
|
|
348
|
+
` color: {`,
|
|
349
|
+
` primary: "${accentColor}",`,
|
|
350
|
+
` accent: "${accentColor}"`,
|
|
351
|
+
` }`,
|
|
352
|
+
` }`,
|
|
353
|
+
`};`,
|
|
354
|
+
``,
|
|
355
|
+
`export default config;`
|
|
356
|
+
].join("\n");
|
|
357
|
+
}
|
|
358
|
+
function normalizeStylePack(input, fallback) {
|
|
359
|
+
if (!input) {
|
|
360
|
+
return fallback;
|
|
361
|
+
}
|
|
362
|
+
if (STYLE_PACKS.includes(input)) {
|
|
363
|
+
return input;
|
|
364
|
+
}
|
|
365
|
+
if (input in LEGACY_STYLE_PACK_MAP) {
|
|
366
|
+
return LEGACY_STYLE_PACK_MAP[input];
|
|
367
|
+
}
|
|
368
|
+
return input;
|
|
369
|
+
}
|
|
370
|
+
function normalizeFramework(raw) {
|
|
371
|
+
if (raw === "nextjs" || raw === "next")
|
|
372
|
+
return "nextjs";
|
|
373
|
+
if (raw === "remix")
|
|
374
|
+
return "remix";
|
|
375
|
+
if (raw === "cra" || raw === "create-react-app")
|
|
376
|
+
return "cra";
|
|
377
|
+
return "vite";
|
|
378
|
+
}
|
|
379
|
+
function frameworkLabel(fw) {
|
|
380
|
+
return { vite: "Vite", nextjs: "Next.js", remix: "Remix", cra: "Create React App" }[fw];
|
|
381
|
+
}
|
|
382
|
+
function cssImportInstruction(fw) {
|
|
383
|
+
switch (fw) {
|
|
384
|
+
case "nextjs":
|
|
385
|
+
return 'In your `app/layout.tsx` (App Router) or `pages/_app.tsx` (Pages Router), add:\n\n```ts\nimport \'../src/styles/zephr.css\'\n```';
|
|
386
|
+
case "remix":
|
|
387
|
+
return 'In `app/root.tsx`, add to the `links` export:\n\n```ts\nimport zephrStyles from \'../src/styles/zephr.css\'\nexport const links: LinksFunction = () => [\n { rel: \'stylesheet\', href: zephrStyles }\n];\n```';
|
|
388
|
+
default:
|
|
389
|
+
return 'In your app entry point (e.g. `src/main.tsx`), add:\n\n```ts\nimport \'./styles/zephr.css\'\n```';
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
function handleInstallPlan(args) {
|
|
393
|
+
const frameworkRaw = str(args.framework, "vite");
|
|
394
|
+
const packageManager = str(args.packageManager, "npm");
|
|
395
|
+
const componentIds = Array.isArray(args.components)
|
|
396
|
+
? args.components.map(String)
|
|
397
|
+
: [];
|
|
398
|
+
const framework = normalizeFramework(frameworkRaw);
|
|
399
|
+
const fwLabel = frameworkLabel(framework);
|
|
400
|
+
// Resolve component names for display
|
|
401
|
+
const resolved = [];
|
|
402
|
+
const notFound = [];
|
|
403
|
+
for (const id of componentIds) {
|
|
404
|
+
const spec = (0, ai_registry_1.getComponentSpec)(id);
|
|
405
|
+
if (spec) {
|
|
406
|
+
resolved.push({ id: spec.id, name: spec.name });
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
notFound.push(id);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
// Build install command
|
|
413
|
+
const deps = ["@zephrui/core", "@zephrui/ui-react"];
|
|
414
|
+
const installCmd = buildInstallCommand(deps, packageManager);
|
|
415
|
+
// Component-specific add commands
|
|
416
|
+
const addCommands = resolved.map(({ id }) => {
|
|
417
|
+
const tool = packageManager === "npm" ? "npx" :
|
|
418
|
+
packageManager === "yarn" ? "yarn dlx" :
|
|
419
|
+
packageManager === "bun" ? "bunx" : "pnpm dlx";
|
|
420
|
+
return `${tool} zephr add ${id}`;
|
|
421
|
+
});
|
|
422
|
+
const steps = [
|
|
423
|
+
{
|
|
424
|
+
step: 1,
|
|
425
|
+
title: `Install Zephr packages into your ${fwLabel} project`,
|
|
426
|
+
command: installCmd
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
step: 2,
|
|
430
|
+
title: "Initialise Zephr config (generates zephr.config.ts + zephr.css)",
|
|
431
|
+
command: buildInstallCommand(["@zephrui/cli"], packageManager).replace("install", packageManager === "npm" ? "install -g" :
|
|
432
|
+
packageManager === "yarn" ? "global add" :
|
|
433
|
+
packageManager === "bun" ? "add -g" : "add -g") + ` && zephr init --style-pack notion`
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
step: 3,
|
|
437
|
+
title: "Import the generated CSS variables into your app entry point",
|
|
438
|
+
note: cssImportInstruction(framework)
|
|
439
|
+
},
|
|
440
|
+
...(addCommands.length > 0
|
|
441
|
+
? addCommands.map((cmd, i) => ({
|
|
442
|
+
step: 4 + i,
|
|
443
|
+
title: `Generate scaffold for ${resolved[i].name}`,
|
|
444
|
+
command: cmd
|
|
445
|
+
}))
|
|
446
|
+
: []),
|
|
447
|
+
{
|
|
448
|
+
step: addCommands.length > 0 ? 4 + addCommands.length : 4,
|
|
449
|
+
title: "Verify your setup",
|
|
450
|
+
command: "zephr doctor"
|
|
451
|
+
}
|
|
452
|
+
];
|
|
453
|
+
return {
|
|
454
|
+
framework: fwLabel,
|
|
455
|
+
packageManager,
|
|
456
|
+
components: resolved.map((c) => c.id),
|
|
457
|
+
steps,
|
|
458
|
+
warnings: notFound.length > 0
|
|
459
|
+
? [`These component IDs were not found in the registry and were skipped: ${notFound.join(", ")}`]
|
|
460
|
+
: []
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
// ---------------------------------------------------------------------------
|
|
464
|
+
// Main dispatcher
|
|
465
|
+
// ---------------------------------------------------------------------------
|
|
466
|
+
function callTool(call) {
|
|
467
|
+
const args = call.arguments ?? {};
|
|
468
|
+
const id = str(args.id);
|
|
469
|
+
switch (call.name) {
|
|
470
|
+
// Info tools
|
|
471
|
+
case "search_components":
|
|
472
|
+
return (0, ai_registry_1.searchComponents)(str(args.query));
|
|
473
|
+
case "get_component_spec":
|
|
474
|
+
return (0, ai_registry_1.getComponentSpec)(id);
|
|
475
|
+
case "get_install_steps":
|
|
476
|
+
return (0, ai_registry_1.getInstallSteps)(id);
|
|
477
|
+
case "get_usage_examples":
|
|
478
|
+
return (0, ai_registry_1.getUsageExamples)(id);
|
|
479
|
+
case "get_theme_variants":
|
|
480
|
+
return (0, ai_registry_1.getThemeVariants)(id);
|
|
481
|
+
// Action tools
|
|
482
|
+
case "generate_component":
|
|
483
|
+
return handleGenerateComponent(args);
|
|
484
|
+
case "list_templates":
|
|
485
|
+
return (0, ai_registry_1.getTemplateCatalog)().map((t) => ({
|
|
486
|
+
id: t.id,
|
|
487
|
+
name: t.name,
|
|
488
|
+
description: t.description,
|
|
489
|
+
usageExample: t.usageExamples?.[0] ?? `import { ${t.name} } from '@zephrui/ui-react';\n<${t.name} />`
|
|
490
|
+
}));
|
|
491
|
+
case "scaffold_page":
|
|
492
|
+
return handleScaffoldPage(args);
|
|
493
|
+
case "apply_theme":
|
|
494
|
+
return handleApplyTheme(args);
|
|
495
|
+
case "install_plan":
|
|
496
|
+
return handleInstallPlan(args);
|
|
497
|
+
default:
|
|
498
|
+
throw new Error(`Unsupported tool: ${call.name}`);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zephrui/mcp-server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server exposing Zephr component discovery tools",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@zephrui/ai-registry": "0.1.0"
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc -p tsconfig.json",
|
|
16
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
17
|
+
"test": "vitest run",
|
|
18
|
+
"lint": "tsc -p tsconfig.json --noEmit",
|
|
19
|
+
"dev": "node dist/index.js"
|
|
20
|
+
}
|
|
21
|
+
}
|