@spartan-ng/mcp 0.0.1-alpha.707

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 (44) hide show
  1. package/README.md +149 -0
  2. package/package.json +40 -0
  3. package/src/index.d.ts +1 -0
  4. package/src/index.js +2 -0
  5. package/src/index.js.map +1 -0
  6. package/src/server.d.ts +2 -0
  7. package/src/server.js +32 -0
  8. package/src/server.js.map +1 -0
  9. package/src/tools/analysis.d.ts +2 -0
  10. package/src/tools/analysis.js +269 -0
  11. package/src/tools/analysis.js.map +1 -0
  12. package/src/tools/blocks.d.ts +2 -0
  13. package/src/tools/blocks.js +173 -0
  14. package/src/tools/blocks.js.map +1 -0
  15. package/src/tools/cache-tools.d.ts +2 -0
  16. package/src/tools/cache-tools.js +175 -0
  17. package/src/tools/cache-tools.js.map +1 -0
  18. package/src/tools/cache-warmup.d.ts +40 -0
  19. package/src/tools/cache-warmup.js +156 -0
  20. package/src/tools/cache-warmup.js.map +1 -0
  21. package/src/tools/cache.d.ts +99 -0
  22. package/src/tools/cache.js +361 -0
  23. package/src/tools/cache.js.map +1 -0
  24. package/src/tools/components.d.ts +2 -0
  25. package/src/tools/components.js +126 -0
  26. package/src/tools/components.js.map +1 -0
  27. package/src/tools/docs.d.ts +2 -0
  28. package/src/tools/docs.js +91 -0
  29. package/src/tools/docs.js.map +1 -0
  30. package/src/tools/health.d.ts +2 -0
  31. package/src/tools/health.js +103 -0
  32. package/src/tools/health.js.map +1 -0
  33. package/src/tools/meta.d.ts +2 -0
  34. package/src/tools/meta.js +47 -0
  35. package/src/tools/meta.js.map +1 -0
  36. package/src/tools/prompts.d.ts +2 -0
  37. package/src/tools/prompts.js +299 -0
  38. package/src/tools/prompts.js.map +1 -0
  39. package/src/tools/resources.d.ts +2 -0
  40. package/src/tools/resources.js +178 -0
  41. package/src/tools/resources.js.map +1 -0
  42. package/src/tools/utils.d.ts +84 -0
  43. package/src/tools/utils.js +581 -0
  44. package/src/tools/utils.js.map +1 -0
@@ -0,0 +1,178 @@
1
+ import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { KNOWN_COMPONENTS, SPARTAN_COMPONENTS_BASE, extractAPIInfo, extractCodeBlocks, fetchContent } from './utils.js';
3
+ export function registerResourceHandlers(server) {
4
+ server.resource('Spartan UI Components List', 'spartan://components/list', {
5
+ description: 'Complete list of all available Spartan UI components with URLs',
6
+ mimeType: 'application/json',
7
+ }, async () => {
8
+ return {
9
+ contents: [
10
+ {
11
+ uri: 'spartan://components/list',
12
+ mimeType: 'application/json',
13
+ text: JSON.stringify({
14
+ components: KNOWN_COMPONENTS.map((name) => ({
15
+ name,
16
+ url: `${SPARTAN_COMPONENTS_BASE}/${name}`,
17
+ apiResource: `spartan://component/${name}/api`,
18
+ examplesResource: `spartan://component/${name}/examples`,
19
+ fullResource: `spartan://component/${name}/full`,
20
+ })),
21
+ totalComponents: KNOWN_COMPONENTS.length,
22
+ metadata: {
23
+ description: 'Spartan UI is a collection of Angular UI components',
24
+ baseUrl: 'https://www.spartan.ng',
25
+ documentation: 'https://www.spartan.ng/documentation',
26
+ },
27
+ }, null, 2),
28
+ },
29
+ ],
30
+ };
31
+ });
32
+ const apiTemplate = new ResourceTemplate('spartan://component/{name}/api', {
33
+ list: async () => {
34
+ return {
35
+ resources: KNOWN_COMPONENTS.map((name) => ({
36
+ uri: `spartan://component/${name}/api`,
37
+ name: `${name} - API Documentation`,
38
+ description: `Brain API and Helm API specifications for ${name} component`,
39
+ mimeType: 'application/json',
40
+ })),
41
+ };
42
+ },
43
+ complete: {},
44
+ });
45
+ server.resource('Component API Documentation', apiTemplate, {
46
+ description: 'Brain API and Helm API specifications for Spartan UI components',
47
+ mimeType: 'application/json',
48
+ }, async (uri, variables) => {
49
+ const name = Array.isArray(variables.name) ? variables.name[0] : variables.name;
50
+ if (!KNOWN_COMPONENTS.includes(name)) {
51
+ throw new Error(`Unknown component: ${name}`);
52
+ }
53
+ const componentUrl = `${SPARTAN_COMPONENTS_BASE}/${name}`;
54
+ const html = await fetchContent(componentUrl, 'html', false);
55
+ const apiData = extractAPIInfo(html);
56
+ return {
57
+ contents: [
58
+ {
59
+ uri: uri.toString(),
60
+ mimeType: 'application/json',
61
+ text: JSON.stringify({
62
+ component: name,
63
+ url: componentUrl,
64
+ brainAPI: apiData.brainAPI,
65
+ helmAPI: apiData.helmAPI,
66
+ metadata: {
67
+ brainAPICount: apiData.brainAPI.length,
68
+ helmAPICount: apiData.helmAPI.length,
69
+ description: 'Brain API provides unstyled, accessible primitives. Helm API provides pre-styled components.',
70
+ },
71
+ }, null, 2),
72
+ },
73
+ ],
74
+ };
75
+ });
76
+ const examplesTemplate = new ResourceTemplate('spartan://component/{name}/examples', {
77
+ list: async () => {
78
+ return {
79
+ resources: KNOWN_COMPONENTS.map((name) => ({
80
+ uri: `spartan://component/${name}/examples`,
81
+ name: `${name} - Code Examples`,
82
+ description: `Working code examples for ${name} component`,
83
+ mimeType: 'application/json',
84
+ })),
85
+ };
86
+ },
87
+ complete: {},
88
+ });
89
+ server.resource('Component Code Examples', examplesTemplate, {
90
+ description: 'Working code examples for Spartan UI components',
91
+ mimeType: 'application/json',
92
+ }, async (uri, variables) => {
93
+ const name = Array.isArray(variables.name) ? variables.name[0] : variables.name;
94
+ if (!KNOWN_COMPONENTS.includes(name)) {
95
+ throw new Error(`Unknown component: ${name}`);
96
+ }
97
+ const componentUrl = `${SPARTAN_COMPONENTS_BASE}/${name}`;
98
+ const html = await fetchContent(componentUrl, 'html', false);
99
+ const codeBlocks = extractCodeBlocks(html);
100
+ return {
101
+ contents: [
102
+ {
103
+ uri: uri.toString(),
104
+ mimeType: 'application/json',
105
+ text: JSON.stringify({
106
+ component: name,
107
+ url: componentUrl,
108
+ examples: codeBlocks.map((block, index) => ({
109
+ id: index + 1,
110
+ title: block.title || `Example ${index + 1}`,
111
+ code: block.code,
112
+ language: block.language,
113
+ })),
114
+ metadata: {
115
+ totalExamples: codeBlocks.length,
116
+ description: `Working code examples for ${name} component`,
117
+ },
118
+ }, null, 2),
119
+ },
120
+ ],
121
+ };
122
+ });
123
+ const fullTemplate = new ResourceTemplate('spartan://component/{name}/full', {
124
+ list: async () => {
125
+ return {
126
+ resources: KNOWN_COMPONENTS.map((name) => ({
127
+ uri: `spartan://component/${name}/full`,
128
+ name: `${name} - Complete Documentation`,
129
+ description: `Complete documentation including API, examples, and metadata for ${name}`,
130
+ mimeType: 'application/json',
131
+ })),
132
+ };
133
+ },
134
+ complete: {},
135
+ });
136
+ server.resource('Component Full Documentation', fullTemplate, {
137
+ description: 'Complete documentation including API, examples, and metadata',
138
+ mimeType: 'application/json',
139
+ }, async (uri, variables) => {
140
+ const name = Array.isArray(variables.name) ? variables.name[0] : variables.name;
141
+ if (!KNOWN_COMPONENTS.includes(name)) {
142
+ throw new Error(`Unknown component: ${name}`);
143
+ }
144
+ const componentUrl = `${SPARTAN_COMPONENTS_BASE}/${name}`;
145
+ const html = await fetchContent(componentUrl, 'html', false);
146
+ const apiData = extractAPIInfo(html);
147
+ const codeBlocks = extractCodeBlocks(html);
148
+ return {
149
+ contents: [
150
+ {
151
+ uri: uri.toString(),
152
+ mimeType: 'application/json',
153
+ text: JSON.stringify({
154
+ component: name,
155
+ url: componentUrl,
156
+ api: {
157
+ brainAPI: apiData.brainAPI,
158
+ helmAPI: apiData.helmAPI,
159
+ },
160
+ examples: codeBlocks.map((block, index) => ({
161
+ id: index + 1,
162
+ title: block.title || apiData.examples[index]?.title || `Example ${index + 1}`,
163
+ code: block.code,
164
+ language: block.language,
165
+ })),
166
+ metadata: {
167
+ brainAPICount: apiData.brainAPI.length,
168
+ helmAPICount: apiData.helmAPI.length,
169
+ totalExamples: codeBlocks.length,
170
+ fetchedAt: new Date().toISOString(),
171
+ },
172
+ }, null, 2),
173
+ },
174
+ ],
175
+ };
176
+ });
177
+ }
178
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../../../../libs/mcp/src/tools/resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ export declare const SPARTAN_DOCS_BASE = "https://www.spartan.ng/documentation";
2
+ export declare const SPARTAN_COMPONENTS_BASE = "https://www.spartan.ng/components";
3
+ export declare const SPARTAN_BLOCKS_BASE = "https://www.spartan.ng/blocks";
4
+ /**
5
+ * Known Spartan components (from docs navigation). Keep this list updated.
6
+ * Some entries may be marked as "soon" on the site.
7
+ */
8
+ export declare const KNOWN_COMPONENTS: string[];
9
+ /**
10
+ * Known Spartan blocks (pre-built UI patterns).
11
+ */
12
+ export declare const KNOWN_BLOCKS: string[];
13
+ /**
14
+ * Known documentation topics.
15
+ */
16
+ export declare const DOCUMENTATION_TOPICS: string[];
17
+ /**
18
+ * Minimal HTML -> text converter for callers that want plain text.
19
+ */
20
+ export declare function htmlToText(html: string): string;
21
+ /**
22
+ * Fetch a URL and return HTML or text with basic caching.
23
+ */
24
+ export declare function fetchContent(url: string, format?: 'html' | 'text', noCache?: boolean): Promise<string>;
25
+ /**
26
+ * Represents a formatted code block extracted from documentation.
27
+ */
28
+ export interface CodeBlock {
29
+ code: string;
30
+ language: string;
31
+ title: string;
32
+ id: string;
33
+ }
34
+ /**
35
+ * Extract code blocks from HTML and return as an array of CodeBlock objects.
36
+ */
37
+ export declare function extractCodeBlocks(html: string): CodeBlock[];
38
+ /**
39
+ * Extract headings (h1-h3) and return as plain text in order.
40
+ */
41
+ export declare function extractHeadings(html: string): string[];
42
+ /**
43
+ * Extract links: { text, href }
44
+ */
45
+ export interface ExtractedLink {
46
+ href: string;
47
+ text: string;
48
+ }
49
+ export declare function extractLinks(html: string): ExtractedLink[];
50
+ export interface APIInput {
51
+ prop: string;
52
+ type: string;
53
+ default: string;
54
+ description: string;
55
+ }
56
+ export interface APIOutput {
57
+ prop: string;
58
+ type: string;
59
+ description: string;
60
+ }
61
+ export interface APIComponent {
62
+ name: string;
63
+ selector: string;
64
+ inputs: APIInput[];
65
+ outputs: APIOutput[];
66
+ }
67
+ export interface APIExample {
68
+ title: string;
69
+ code: string;
70
+ language: string;
71
+ }
72
+ export interface APIInfo {
73
+ brainAPI: APIComponent[];
74
+ helmAPI: APIComponent[];
75
+ examples: APIExample[];
76
+ }
77
+ /**
78
+ * Extract structured API information from component documentation
79
+ */
80
+ export declare function extractAPIInfo(html: string): APIInfo;
81
+ /**
82
+ * Simple language detection based on code content
83
+ */
84
+ export declare function detectLanguage(code: string): string;