@xferops/design-guide 0.2.1 → 0.2.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.
- package/dist/chunk-DOTK23AS.js +239 -0
- package/dist/chunk-DOTK23AS.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +12 -0
- package/dist/cli.js.map +1 -0
- package/dist/server.js +4 -239
- package/dist/server.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
getGuideById,
|
|
4
|
+
listGuides,
|
|
5
|
+
searchGuides
|
|
6
|
+
} from "./chunk-R4AEJOIP.js";
|
|
7
|
+
|
|
8
|
+
// src/server.ts
|
|
9
|
+
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
10
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
|
|
13
|
+
// package.json
|
|
14
|
+
var package_default = {
|
|
15
|
+
name: "@xferops/design-guide",
|
|
16
|
+
version: "0.2.2",
|
|
17
|
+
private: false,
|
|
18
|
+
type: "module",
|
|
19
|
+
main: "./dist/index.js",
|
|
20
|
+
types: "./dist/index.d.ts",
|
|
21
|
+
bin: {
|
|
22
|
+
"xferops-design-guide-mcp": "dist/cli.js"
|
|
23
|
+
},
|
|
24
|
+
files: [
|
|
25
|
+
"dist",
|
|
26
|
+
"guides"
|
|
27
|
+
],
|
|
28
|
+
publishConfig: {
|
|
29
|
+
access: "public",
|
|
30
|
+
registry: "https://registry.npmjs.org/"
|
|
31
|
+
},
|
|
32
|
+
exports: {
|
|
33
|
+
".": {
|
|
34
|
+
types: "./dist/index.d.ts",
|
|
35
|
+
default: "./dist/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./server": {
|
|
38
|
+
types: "./dist/server.d.ts",
|
|
39
|
+
default: "./dist/server.js"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
scripts: {
|
|
43
|
+
build: "tsup",
|
|
44
|
+
typecheck: "tsc -p tsconfig.json --noEmit",
|
|
45
|
+
test: "vitest run"
|
|
46
|
+
},
|
|
47
|
+
dependencies: {
|
|
48
|
+
"@modelcontextprotocol/sdk": "^1.20.2",
|
|
49
|
+
zod: "^4.1.11"
|
|
50
|
+
},
|
|
51
|
+
devDependencies: {
|
|
52
|
+
"@types/node": "^24.5.2",
|
|
53
|
+
tsx: "^4.20.6"
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
// src/server.ts
|
|
58
|
+
function createServer() {
|
|
59
|
+
const server = new McpServer(
|
|
60
|
+
{
|
|
61
|
+
name: "@xferops/design-guide",
|
|
62
|
+
version: package_default.version
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
capabilities: {
|
|
66
|
+
logging: {}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
server.registerTool(
|
|
71
|
+
"search_guides",
|
|
72
|
+
{
|
|
73
|
+
title: "Search Design Guides",
|
|
74
|
+
description: "Search the XferOps frontend design guide catalog by keyword, tag, or area.",
|
|
75
|
+
inputSchema: z.object({
|
|
76
|
+
query: z.string().describe("Keywords such as table sorting, forms, overlays, or navigation.")
|
|
77
|
+
}),
|
|
78
|
+
outputSchema: z.object({
|
|
79
|
+
guides: z.array(
|
|
80
|
+
z.object({
|
|
81
|
+
id: z.string(),
|
|
82
|
+
title: z.string(),
|
|
83
|
+
summary: z.string(),
|
|
84
|
+
tags: z.array(z.string()),
|
|
85
|
+
uri: z.string(),
|
|
86
|
+
sourcePath: z.string().optional()
|
|
87
|
+
})
|
|
88
|
+
)
|
|
89
|
+
})
|
|
90
|
+
},
|
|
91
|
+
async ({ query }) => {
|
|
92
|
+
const guides = (await searchGuides(query)).map((guide) => ({
|
|
93
|
+
id: guide.id,
|
|
94
|
+
title: guide.title,
|
|
95
|
+
summary: guide.summary,
|
|
96
|
+
tags: guide.tags,
|
|
97
|
+
uri: guide.uri,
|
|
98
|
+
sourcePath: guide.sourcePath
|
|
99
|
+
}));
|
|
100
|
+
return {
|
|
101
|
+
content: [
|
|
102
|
+
{
|
|
103
|
+
type: "text",
|
|
104
|
+
text: guides.length ? guides.map((guide) => `${guide.title} (${guide.uri})`).join("\n") : "No guides matched the query."
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
structuredContent: { guides }
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
server.registerTool(
|
|
112
|
+
"get_guide",
|
|
113
|
+
{
|
|
114
|
+
title: "Get Design Guide",
|
|
115
|
+
description: "Read a guide by id such as table/sorting or by URI such as guide://table/sorting.",
|
|
116
|
+
inputSchema: z.object({
|
|
117
|
+
identifier: z.string().describe("Guide id or guide URI.")
|
|
118
|
+
}),
|
|
119
|
+
outputSchema: z.object({
|
|
120
|
+
id: z.string(),
|
|
121
|
+
title: z.string(),
|
|
122
|
+
summary: z.string(),
|
|
123
|
+
uri: z.string(),
|
|
124
|
+
content: z.string(),
|
|
125
|
+
sourcePath: z.string().optional()
|
|
126
|
+
})
|
|
127
|
+
},
|
|
128
|
+
async ({ identifier }) => {
|
|
129
|
+
const guideId = identifier.startsWith("guide://") ? identifier.replace("guide://", "") : identifier.replace(/^\/+/, "");
|
|
130
|
+
const guide = await getGuideById(guideId);
|
|
131
|
+
if (!guide) {
|
|
132
|
+
return {
|
|
133
|
+
content: [
|
|
134
|
+
{
|
|
135
|
+
type: "text",
|
|
136
|
+
text: `Guide not found: ${identifier}`
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
isError: true
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
content: [
|
|
144
|
+
{
|
|
145
|
+
type: "text",
|
|
146
|
+
text: guide.content
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
structuredContent: {
|
|
150
|
+
id: guide.id,
|
|
151
|
+
title: guide.title,
|
|
152
|
+
summary: guide.summary,
|
|
153
|
+
uri: guide.uri,
|
|
154
|
+
content: guide.content,
|
|
155
|
+
sourcePath: guide.sourcePath
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
server.registerResource(
|
|
161
|
+
"guide-catalog",
|
|
162
|
+
"guide://catalog",
|
|
163
|
+
{
|
|
164
|
+
title: "Guide Catalog",
|
|
165
|
+
description: "Catalog of available XferOps frontend design guides.",
|
|
166
|
+
mimeType: "application/json"
|
|
167
|
+
},
|
|
168
|
+
async (uri) => {
|
|
169
|
+
const guides = await listGuides();
|
|
170
|
+
return {
|
|
171
|
+
contents: [
|
|
172
|
+
{
|
|
173
|
+
uri: uri.href,
|
|
174
|
+
text: JSON.stringify(
|
|
175
|
+
guides.map((guide) => ({
|
|
176
|
+
id: guide.id,
|
|
177
|
+
title: guide.title,
|
|
178
|
+
summary: guide.summary,
|
|
179
|
+
tags: guide.tags,
|
|
180
|
+
uri: guide.uri,
|
|
181
|
+
sourcePath: guide.sourcePath
|
|
182
|
+
})),
|
|
183
|
+
null,
|
|
184
|
+
2
|
|
185
|
+
)
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
);
|
|
191
|
+
server.registerResource(
|
|
192
|
+
"guide-document",
|
|
193
|
+
new ResourceTemplate("guide://{category}/{slug}", {
|
|
194
|
+
list: async () => {
|
|
195
|
+
const guides = await listGuides();
|
|
196
|
+
return {
|
|
197
|
+
resources: guides.map((guide) => ({
|
|
198
|
+
uri: guide.uri,
|
|
199
|
+
name: guide.title,
|
|
200
|
+
description: guide.summary,
|
|
201
|
+
mimeType: "text/markdown"
|
|
202
|
+
}))
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
}),
|
|
206
|
+
{
|
|
207
|
+
title: "Guide Document",
|
|
208
|
+
description: "A markdown guide for a specific frontend topic.",
|
|
209
|
+
mimeType: "text/markdown"
|
|
210
|
+
},
|
|
211
|
+
async (uri, { category, slug }) => {
|
|
212
|
+
const guide = await getGuideById(`${category}/${slug}`);
|
|
213
|
+
if (!guide) {
|
|
214
|
+
throw new Error(`Guide not found for URI: ${uri.href}`);
|
|
215
|
+
}
|
|
216
|
+
return {
|
|
217
|
+
contents: [
|
|
218
|
+
{
|
|
219
|
+
uri: uri.href,
|
|
220
|
+
text: guide.content
|
|
221
|
+
}
|
|
222
|
+
]
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
);
|
|
226
|
+
return server;
|
|
227
|
+
}
|
|
228
|
+
async function startServer() {
|
|
229
|
+
const server = createServer();
|
|
230
|
+
const transport = new StdioServerTransport();
|
|
231
|
+
await server.connect(transport);
|
|
232
|
+
console.error("@xferops/design-guide MCP server running on stdio");
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
export {
|
|
236
|
+
createServer,
|
|
237
|
+
startServer
|
|
238
|
+
};
|
|
239
|
+
//# sourceMappingURL=chunk-DOTK23AS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server.ts","../package.json"],"sourcesContent":["import { McpServer, ResourceTemplate } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { z } from \"zod\";\nimport packageJson from \"../package.json\";\nimport { getGuideById, listGuides } from \"./guides/catalog\";\nimport { searchGuides } from \"./guides/search\";\n\nexport function createServer() {\n const server = new McpServer(\n {\n name: \"@xferops/design-guide\",\n version: packageJson.version\n },\n {\n capabilities: {\n logging: {}\n }\n }\n );\n\n server.registerTool(\n \"search_guides\",\n {\n title: \"Search Design Guides\",\n description: \"Search the XferOps frontend design guide catalog by keyword, tag, or area.\",\n inputSchema: z.object({\n query: z.string().describe(\"Keywords such as table sorting, forms, overlays, or navigation.\")\n }),\n outputSchema: z.object({\n guides: z.array(\n z.object({\n id: z.string(),\n title: z.string(),\n summary: z.string(),\n tags: z.array(z.string()),\n uri: z.string(),\n sourcePath: z.string().optional()\n })\n )\n })\n },\n async ({ query }) => {\n const guides = (await searchGuides(query)).map((guide) => ({\n id: guide.id,\n title: guide.title,\n summary: guide.summary,\n tags: guide.tags,\n uri: guide.uri,\n sourcePath: guide.sourcePath\n }));\n\n return {\n content: [\n {\n type: \"text\",\n text: guides.length\n ? guides.map((guide) => `${guide.title} (${guide.uri})`).join(\"\\n\")\n : \"No guides matched the query.\"\n }\n ],\n structuredContent: { guides }\n };\n }\n );\n\n server.registerTool(\n \"get_guide\",\n {\n title: \"Get Design Guide\",\n description: \"Read a guide by id such as table/sorting or by URI such as guide://table/sorting.\",\n inputSchema: z.object({\n identifier: z.string().describe(\"Guide id or guide URI.\")\n }),\n outputSchema: z.object({\n id: z.string(),\n title: z.string(),\n summary: z.string(),\n uri: z.string(),\n content: z.string(),\n sourcePath: z.string().optional()\n })\n },\n async ({ identifier }) => {\n const guideId = identifier.startsWith(\"guide://\")\n ? identifier.replace(\"guide://\", \"\")\n : identifier.replace(/^\\/+/, \"\");\n const guide = await getGuideById(guideId);\n\n if (!guide) {\n return {\n content: [\n {\n type: \"text\",\n text: `Guide not found: ${identifier}`\n }\n ],\n isError: true\n };\n }\n\n return {\n content: [\n {\n type: \"text\",\n text: guide.content\n }\n ],\n structuredContent: {\n id: guide.id,\n title: guide.title,\n summary: guide.summary,\n uri: guide.uri,\n content: guide.content,\n sourcePath: guide.sourcePath\n }\n };\n }\n );\n\n server.registerResource(\n \"guide-catalog\",\n \"guide://catalog\",\n {\n title: \"Guide Catalog\",\n description: \"Catalog of available XferOps frontend design guides.\",\n mimeType: \"application/json\"\n },\n async (uri) => {\n const guides = await listGuides();\n\n return {\n contents: [\n {\n uri: uri.href,\n text: JSON.stringify(\n guides.map((guide) => ({\n id: guide.id,\n title: guide.title,\n summary: guide.summary,\n tags: guide.tags,\n uri: guide.uri,\n sourcePath: guide.sourcePath\n })),\n null,\n 2\n )\n }\n ]\n };\n }\n );\n\n server.registerResource(\n \"guide-document\",\n new ResourceTemplate(\"guide://{category}/{slug}\", {\n list: async () => {\n const guides = await listGuides();\n\n return {\n resources: guides.map((guide) => ({\n uri: guide.uri,\n name: guide.title,\n description: guide.summary,\n mimeType: \"text/markdown\"\n }))\n };\n }\n }),\n {\n title: \"Guide Document\",\n description: \"A markdown guide for a specific frontend topic.\",\n mimeType: \"text/markdown\"\n },\n async (uri, { category, slug }) => {\n const guide = await getGuideById(`${category}/${slug}`);\n\n if (!guide) {\n throw new Error(`Guide not found for URI: ${uri.href}`);\n }\n\n return {\n contents: [\n {\n uri: uri.href,\n text: guide.content\n }\n ]\n };\n }\n );\n\n return server;\n}\n\nexport async function startServer() {\n const server = createServer();\n const transport = new StdioServerTransport();\n\n await server.connect(transport);\n console.error(\"@xferops/design-guide MCP server running on stdio\");\n}\n","{\n \"name\": \"@xferops/design-guide\",\n \"version\": \"0.2.2\",\n \"private\": false,\n \"type\": \"module\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"bin\": {\n \"xferops-design-guide-mcp\": \"dist/cli.js\"\n },\n \"files\": [\n \"dist\",\n \"guides\"\n ],\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"default\": \"./dist/server.js\"\n }\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"typecheck\": \"tsc -p tsconfig.json --noEmit\",\n \"test\": \"vitest run\"\n },\n \"dependencies\": {\n \"@modelcontextprotocol/sdk\": \"^1.20.2\",\n \"zod\": \"^4.1.11\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^24.5.2\",\n \"tsx\": \"^4.20.6\"\n }\n}\n"],"mappings":"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","names":[]}
|
package/dist/cli.d.ts
ADDED
package/dist/cli.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
startServer
|
|
4
|
+
} from "./chunk-DOTK23AS.js";
|
|
5
|
+
import "./chunk-R4AEJOIP.js";
|
|
6
|
+
|
|
7
|
+
// src/cli.ts
|
|
8
|
+
void startServer().catch((error) => {
|
|
9
|
+
console.error("Fatal error in @xferops/design-guide:", error);
|
|
10
|
+
process.exit(1);
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts"],"sourcesContent":["import { startServer } from \"./server\";\n\nvoid startServer().catch((error) => {\n console.error(\"Fatal error in @xferops/design-guide:\", error);\n process.exit(1);\n});\n"],"mappings":";;;;;;;AAEA,KAAK,YAAY,EAAE,MAAM,CAAC,UAAU;AAClC,UAAQ,MAAM,yCAAyC,KAAK;AAC5D,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]}
|
package/dist/server.js
CHANGED
|
@@ -1,244 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
// src/server.ts
|
|
9
|
-
import { fileURLToPath } from "url";
|
|
10
|
-
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
11
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
12
|
-
import { z } from "zod";
|
|
13
|
-
|
|
14
|
-
// package.json
|
|
15
|
-
var package_default = {
|
|
16
|
-
name: "@xferops/design-guide",
|
|
17
|
-
version: "0.1.0",
|
|
18
|
-
private: false,
|
|
19
|
-
type: "module",
|
|
20
|
-
main: "./dist/index.js",
|
|
21
|
-
types: "./dist/index.d.ts",
|
|
22
|
-
bin: {
|
|
23
|
-
"xferops-design-guide-mcp": "./dist/server.js"
|
|
24
|
-
},
|
|
25
|
-
files: [
|
|
26
|
-
"dist",
|
|
27
|
-
"guides"
|
|
28
|
-
],
|
|
29
|
-
publishConfig: {
|
|
30
|
-
access: "public",
|
|
31
|
-
registry: "https://registry.npmjs.org/"
|
|
32
|
-
},
|
|
33
|
-
exports: {
|
|
34
|
-
".": {
|
|
35
|
-
types: "./dist/index.d.ts",
|
|
36
|
-
default: "./dist/index.js"
|
|
37
|
-
},
|
|
38
|
-
"./server": {
|
|
39
|
-
types: "./dist/server.d.ts",
|
|
40
|
-
default: "./dist/server.js"
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
scripts: {
|
|
44
|
-
build: "tsup",
|
|
45
|
-
typecheck: "tsc -p tsconfig.json --noEmit",
|
|
46
|
-
test: "vitest run"
|
|
47
|
-
},
|
|
48
|
-
dependencies: {
|
|
49
|
-
"@modelcontextprotocol/sdk": "^1.20.2",
|
|
50
|
-
zod: "^4.1.11"
|
|
51
|
-
},
|
|
52
|
-
devDependencies: {
|
|
53
|
-
"@types/node": "^24.5.2",
|
|
54
|
-
tsx: "^4.20.6"
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
// src/server.ts
|
|
59
|
-
function createServer() {
|
|
60
|
-
const server = new McpServer(
|
|
61
|
-
{
|
|
62
|
-
name: "@xferops/design-guide",
|
|
63
|
-
version: package_default.version
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
capabilities: {
|
|
67
|
-
logging: {}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
);
|
|
71
|
-
server.registerTool(
|
|
72
|
-
"search_guides",
|
|
73
|
-
{
|
|
74
|
-
title: "Search Design Guides",
|
|
75
|
-
description: "Search the XferOps frontend design guide catalog by keyword, tag, or area.",
|
|
76
|
-
inputSchema: z.object({
|
|
77
|
-
query: z.string().describe("Keywords such as table sorting, forms, overlays, or navigation.")
|
|
78
|
-
}),
|
|
79
|
-
outputSchema: z.object({
|
|
80
|
-
guides: z.array(
|
|
81
|
-
z.object({
|
|
82
|
-
id: z.string(),
|
|
83
|
-
title: z.string(),
|
|
84
|
-
summary: z.string(),
|
|
85
|
-
tags: z.array(z.string()),
|
|
86
|
-
uri: z.string(),
|
|
87
|
-
sourcePath: z.string().optional()
|
|
88
|
-
})
|
|
89
|
-
)
|
|
90
|
-
})
|
|
91
|
-
},
|
|
92
|
-
async ({ query }) => {
|
|
93
|
-
const guides = (await searchGuides(query)).map((guide) => ({
|
|
94
|
-
id: guide.id,
|
|
95
|
-
title: guide.title,
|
|
96
|
-
summary: guide.summary,
|
|
97
|
-
tags: guide.tags,
|
|
98
|
-
uri: guide.uri,
|
|
99
|
-
sourcePath: guide.sourcePath
|
|
100
|
-
}));
|
|
101
|
-
return {
|
|
102
|
-
content: [
|
|
103
|
-
{
|
|
104
|
-
type: "text",
|
|
105
|
-
text: guides.length ? guides.map((guide) => `${guide.title} (${guide.uri})`).join("\n") : "No guides matched the query."
|
|
106
|
-
}
|
|
107
|
-
],
|
|
108
|
-
structuredContent: { guides }
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
);
|
|
112
|
-
server.registerTool(
|
|
113
|
-
"get_guide",
|
|
114
|
-
{
|
|
115
|
-
title: "Get Design Guide",
|
|
116
|
-
description: "Read a guide by id such as table/sorting or by URI such as guide://table/sorting.",
|
|
117
|
-
inputSchema: z.object({
|
|
118
|
-
identifier: z.string().describe("Guide id or guide URI.")
|
|
119
|
-
}),
|
|
120
|
-
outputSchema: z.object({
|
|
121
|
-
id: z.string(),
|
|
122
|
-
title: z.string(),
|
|
123
|
-
summary: z.string(),
|
|
124
|
-
uri: z.string(),
|
|
125
|
-
content: z.string(),
|
|
126
|
-
sourcePath: z.string().optional()
|
|
127
|
-
})
|
|
128
|
-
},
|
|
129
|
-
async ({ identifier }) => {
|
|
130
|
-
const guideId = identifier.startsWith("guide://") ? identifier.replace("guide://", "") : identifier.replace(/^\/+/, "");
|
|
131
|
-
const guide = await getGuideById(guideId);
|
|
132
|
-
if (!guide) {
|
|
133
|
-
return {
|
|
134
|
-
content: [
|
|
135
|
-
{
|
|
136
|
-
type: "text",
|
|
137
|
-
text: `Guide not found: ${identifier}`
|
|
138
|
-
}
|
|
139
|
-
],
|
|
140
|
-
isError: true
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
return {
|
|
144
|
-
content: [
|
|
145
|
-
{
|
|
146
|
-
type: "text",
|
|
147
|
-
text: guide.content
|
|
148
|
-
}
|
|
149
|
-
],
|
|
150
|
-
structuredContent: {
|
|
151
|
-
id: guide.id,
|
|
152
|
-
title: guide.title,
|
|
153
|
-
summary: guide.summary,
|
|
154
|
-
uri: guide.uri,
|
|
155
|
-
content: guide.content,
|
|
156
|
-
sourcePath: guide.sourcePath
|
|
157
|
-
}
|
|
158
|
-
};
|
|
159
|
-
}
|
|
160
|
-
);
|
|
161
|
-
server.registerResource(
|
|
162
|
-
"guide-catalog",
|
|
163
|
-
"guide://catalog",
|
|
164
|
-
{
|
|
165
|
-
title: "Guide Catalog",
|
|
166
|
-
description: "Catalog of available XferOps frontend design guides.",
|
|
167
|
-
mimeType: "application/json"
|
|
168
|
-
},
|
|
169
|
-
async (uri) => {
|
|
170
|
-
const guides = await listGuides();
|
|
171
|
-
return {
|
|
172
|
-
contents: [
|
|
173
|
-
{
|
|
174
|
-
uri: uri.href,
|
|
175
|
-
text: JSON.stringify(
|
|
176
|
-
guides.map((guide) => ({
|
|
177
|
-
id: guide.id,
|
|
178
|
-
title: guide.title,
|
|
179
|
-
summary: guide.summary,
|
|
180
|
-
tags: guide.tags,
|
|
181
|
-
uri: guide.uri,
|
|
182
|
-
sourcePath: guide.sourcePath
|
|
183
|
-
})),
|
|
184
|
-
null,
|
|
185
|
-
2
|
|
186
|
-
)
|
|
187
|
-
}
|
|
188
|
-
]
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
);
|
|
192
|
-
server.registerResource(
|
|
193
|
-
"guide-document",
|
|
194
|
-
new ResourceTemplate("guide://{category}/{slug}", {
|
|
195
|
-
list: async () => {
|
|
196
|
-
const guides = await listGuides();
|
|
197
|
-
return {
|
|
198
|
-
resources: guides.map((guide) => ({
|
|
199
|
-
uri: guide.uri,
|
|
200
|
-
name: guide.title,
|
|
201
|
-
description: guide.summary,
|
|
202
|
-
mimeType: "text/markdown"
|
|
203
|
-
}))
|
|
204
|
-
};
|
|
205
|
-
}
|
|
206
|
-
}),
|
|
207
|
-
{
|
|
208
|
-
title: "Guide Document",
|
|
209
|
-
description: "A markdown guide for a specific frontend topic.",
|
|
210
|
-
mimeType: "text/markdown"
|
|
211
|
-
},
|
|
212
|
-
async (uri, { category, slug }) => {
|
|
213
|
-
const guide = await getGuideById(`${category}/${slug}`);
|
|
214
|
-
if (!guide) {
|
|
215
|
-
throw new Error(`Guide not found for URI: ${uri.href}`);
|
|
216
|
-
}
|
|
217
|
-
return {
|
|
218
|
-
contents: [
|
|
219
|
-
{
|
|
220
|
-
uri: uri.href,
|
|
221
|
-
text: guide.content
|
|
222
|
-
}
|
|
223
|
-
]
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
);
|
|
227
|
-
return server;
|
|
228
|
-
}
|
|
229
|
-
async function startServer() {
|
|
230
|
-
const server = createServer();
|
|
231
|
-
const transport = new StdioServerTransport();
|
|
232
|
-
await server.connect(transport);
|
|
233
|
-
console.error("@xferops/design-guide MCP server running on stdio");
|
|
234
|
-
}
|
|
235
|
-
var entryPath = process.argv[1];
|
|
236
|
-
if (entryPath && fileURLToPath(import.meta.url) === entryPath) {
|
|
237
|
-
void startServer().catch((error) => {
|
|
238
|
-
console.error("Fatal error in @xferops/design-guide:", error);
|
|
239
|
-
process.exit(1);
|
|
240
|
-
});
|
|
241
|
-
}
|
|
3
|
+
createServer,
|
|
4
|
+
startServer
|
|
5
|
+
} from "./chunk-DOTK23AS.js";
|
|
6
|
+
import "./chunk-R4AEJOIP.js";
|
|
242
7
|
export {
|
|
243
8
|
createServer,
|
|
244
9
|
startServer
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/server.ts","../package.json"],"sourcesContent":["import { fileURLToPath } from \"node:url\";\nimport { McpServer, ResourceTemplate } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { z } from \"zod\";\nimport packageJson from \"../package.json\";\nimport { getGuideById, listGuides } from \"./guides/catalog\";\nimport { searchGuides } from \"./guides/search\";\n\nexport function createServer() {\n const server = new McpServer(\n {\n name: \"@xferops/design-guide\",\n version: packageJson.version\n },\n {\n capabilities: {\n logging: {}\n }\n }\n );\n\n server.registerTool(\n \"search_guides\",\n {\n title: \"Search Design Guides\",\n description: \"Search the XferOps frontend design guide catalog by keyword, tag, or area.\",\n inputSchema: z.object({\n query: z.string().describe(\"Keywords such as table sorting, forms, overlays, or navigation.\")\n }),\n outputSchema: z.object({\n guides: z.array(\n z.object({\n id: z.string(),\n title: z.string(),\n summary: z.string(),\n tags: z.array(z.string()),\n uri: z.string(),\n sourcePath: z.string().optional()\n })\n )\n })\n },\n async ({ query }) => {\n const guides = (await searchGuides(query)).map((guide) => ({\n id: guide.id,\n title: guide.title,\n summary: guide.summary,\n tags: guide.tags,\n uri: guide.uri,\n sourcePath: guide.sourcePath\n }));\n\n return {\n content: [\n {\n type: \"text\",\n text: guides.length\n ? guides.map((guide) => `${guide.title} (${guide.uri})`).join(\"\\n\")\n : \"No guides matched the query.\"\n }\n ],\n structuredContent: { guides }\n };\n }\n );\n\n server.registerTool(\n \"get_guide\",\n {\n title: \"Get Design Guide\",\n description: \"Read a guide by id such as table/sorting or by URI such as guide://table/sorting.\",\n inputSchema: z.object({\n identifier: z.string().describe(\"Guide id or guide URI.\")\n }),\n outputSchema: z.object({\n id: z.string(),\n title: z.string(),\n summary: z.string(),\n uri: z.string(),\n content: z.string(),\n sourcePath: z.string().optional()\n })\n },\n async ({ identifier }) => {\n const guideId = identifier.startsWith(\"guide://\")\n ? identifier.replace(\"guide://\", \"\")\n : identifier.replace(/^\\/+/, \"\");\n const guide = await getGuideById(guideId);\n\n if (!guide) {\n return {\n content: [\n {\n type: \"text\",\n text: `Guide not found: ${identifier}`\n }\n ],\n isError: true\n };\n }\n\n return {\n content: [\n {\n type: \"text\",\n text: guide.content\n }\n ],\n structuredContent: {\n id: guide.id,\n title: guide.title,\n summary: guide.summary,\n uri: guide.uri,\n content: guide.content,\n sourcePath: guide.sourcePath\n }\n };\n }\n );\n\n server.registerResource(\n \"guide-catalog\",\n \"guide://catalog\",\n {\n title: \"Guide Catalog\",\n description: \"Catalog of available XferOps frontend design guides.\",\n mimeType: \"application/json\"\n },\n async (uri) => {\n const guides = await listGuides();\n\n return {\n contents: [\n {\n uri: uri.href,\n text: JSON.stringify(\n guides.map((guide) => ({\n id: guide.id,\n title: guide.title,\n summary: guide.summary,\n tags: guide.tags,\n uri: guide.uri,\n sourcePath: guide.sourcePath\n })),\n null,\n 2\n )\n }\n ]\n };\n }\n );\n\n server.registerResource(\n \"guide-document\",\n new ResourceTemplate(\"guide://{category}/{slug}\", {\n list: async () => {\n const guides = await listGuides();\n\n return {\n resources: guides.map((guide) => ({\n uri: guide.uri,\n name: guide.title,\n description: guide.summary,\n mimeType: \"text/markdown\"\n }))\n };\n }\n }),\n {\n title: \"Guide Document\",\n description: \"A markdown guide for a specific frontend topic.\",\n mimeType: \"text/markdown\"\n },\n async (uri, { category, slug }) => {\n const guide = await getGuideById(`${category}/${slug}`);\n\n if (!guide) {\n throw new Error(`Guide not found for URI: ${uri.href}`);\n }\n\n return {\n contents: [\n {\n uri: uri.href,\n text: guide.content\n }\n ]\n };\n }\n );\n\n return server;\n}\n\nexport async function startServer() {\n const server = createServer();\n const transport = new StdioServerTransport();\n\n await server.connect(transport);\n console.error(\"@xferops/design-guide MCP server running on stdio\");\n}\n\nconst entryPath = process.argv[1];\n\nif (entryPath && fileURLToPath(import.meta.url) === entryPath) {\n void startServer().catch((error) => {\n console.error(\"Fatal error in @xferops/design-guide:\", error);\n process.exit(1);\n });\n}\n","{\n \"name\": \"@xferops/design-guide\",\n \"version\": \"0.1.0\",\n \"private\": false,\n \"type\": \"module\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"bin\": {\n \"xferops-design-guide-mcp\": \"./dist/server.js\"\n },\n \"files\": [\n \"dist\",\n \"guides\"\n ],\n \"publishConfig\": {\n \"access\": \"public\",\n \"registry\": \"https://registry.npmjs.org/\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"./server\": {\n \"types\": \"./dist/server.d.ts\",\n \"default\": \"./dist/server.js\"\n }\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"typecheck\": \"tsc -p tsconfig.json --noEmit\",\n \"test\": \"vitest run\"\n },\n \"dependencies\": {\n \"@modelcontextprotocol/sdk\": \"^1.20.2\",\n \"zod\": \"^4.1.11\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^24.5.2\",\n \"tsx\": \"^4.20.6\"\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xferops/design-guide",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"bin": {
|
|
9
|
-
"xferops-design-guide-mcp": "dist/
|
|
9
|
+
"xferops-design-guide-mcp": "dist/cli.js"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
12
|
"dist",
|