@stackguide/mcp-server 3.3.0 → 3.8.1

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 (133) hide show
  1. package/README.md +259 -10
  2. package/dist/config/persistence.d.ts +16 -0
  3. package/dist/config/persistence.d.ts.map +1 -1
  4. package/dist/config/persistence.js +53 -0
  5. package/dist/config/persistence.js.map +1 -1
  6. package/dist/handlers/config.d.ts +1 -8
  7. package/dist/handlers/config.d.ts.map +1 -1
  8. package/dist/handlers/config.js +7 -1
  9. package/dist/handlers/config.js.map +1 -1
  10. package/dist/handlers/context.d.ts +1 -5
  11. package/dist/handlers/context.d.ts.map +1 -1
  12. package/dist/handlers/context.js +7 -1
  13. package/dist/handlers/context.js.map +1 -1
  14. package/dist/handlers/cursor.d.ts +1 -7
  15. package/dist/handlers/cursor.d.ts.map +1 -1
  16. package/dist/handlers/cursor.js +7 -1
  17. package/dist/handlers/cursor.js.map +1 -1
  18. package/dist/handlers/custom-rule.d.ts +1 -11
  19. package/dist/handlers/custom-rule.d.ts.map +1 -1
  20. package/dist/handlers/custom-rule.js +7 -1
  21. package/dist/handlers/custom-rule.js.map +1 -1
  22. package/dist/handlers/docs.d.ts +1 -8
  23. package/dist/handlers/docs.d.ts.map +1 -1
  24. package/dist/handlers/docs.js +7 -1
  25. package/dist/handlers/docs.js.map +1 -1
  26. package/dist/handlers/generate.d.ts +1 -13
  27. package/dist/handlers/generate.d.ts.map +1 -1
  28. package/dist/handlers/generate.js +6 -3
  29. package/dist/handlers/generate.js.map +1 -1
  30. package/dist/handlers/health.d.ts +1 -8
  31. package/dist/handlers/health.d.ts.map +1 -1
  32. package/dist/handlers/health.js +11 -3
  33. package/dist/handlers/health.js.map +1 -1
  34. package/dist/handlers/help.d.ts +1 -5
  35. package/dist/handlers/help.d.ts.map +1 -1
  36. package/dist/handlers/help.js +7 -1
  37. package/dist/handlers/help.js.map +1 -1
  38. package/dist/handlers/knowledge.d.ts +1 -8
  39. package/dist/handlers/knowledge.d.ts.map +1 -1
  40. package/dist/handlers/knowledge.js +7 -1
  41. package/dist/handlers/knowledge.js.map +1 -1
  42. package/dist/handlers/prompts.d.ts +31 -0
  43. package/dist/handlers/prompts.d.ts.map +1 -0
  44. package/dist/handlers/prompts.js +225 -0
  45. package/dist/handlers/prompts.js.map +1 -0
  46. package/dist/handlers/resources.d.ts +27 -0
  47. package/dist/handlers/resources.d.ts.map +1 -0
  48. package/dist/handlers/resources.js +210 -0
  49. package/dist/handlers/resources.js.map +1 -0
  50. package/dist/handlers/review.d.ts.map +1 -1
  51. package/dist/handlers/review.js +18 -1
  52. package/dist/handlers/review.js.map +1 -1
  53. package/dist/handlers/rules.d.ts +1 -9
  54. package/dist/handlers/rules.d.ts.map +1 -1
  55. package/dist/handlers/rules.js +7 -1
  56. package/dist/handlers/rules.js.map +1 -1
  57. package/dist/index.d.ts +4 -2
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +29 -419
  60. package/dist/index.js.map +1 -1
  61. package/dist/router/index.d.ts +69 -0
  62. package/dist/router/index.d.ts.map +1 -0
  63. package/dist/router/index.js +151 -0
  64. package/dist/router/index.js.map +1 -0
  65. package/dist/services/ast/analyzer.d.ts +55 -0
  66. package/dist/services/ast/analyzer.d.ts.map +1 -0
  67. package/dist/services/ast/analyzer.js +268 -0
  68. package/dist/services/ast/analyzer.js.map +1 -0
  69. package/dist/services/ast/index.d.ts +10 -0
  70. package/dist/services/ast/index.d.ts.map +1 -0
  71. package/dist/services/ast/index.js +12 -0
  72. package/dist/services/ast/index.js.map +1 -0
  73. package/dist/services/ast/rules.d.ts +13 -0
  74. package/dist/services/ast/rules.d.ts.map +1 -0
  75. package/dist/services/ast/rules.js +358 -0
  76. package/dist/services/ast/rules.js.map +1 -0
  77. package/dist/services/ast/treeSitterParser.d.ts +54 -0
  78. package/dist/services/ast/treeSitterParser.d.ts.map +1 -0
  79. package/dist/services/ast/treeSitterParser.js +394 -0
  80. package/dist/services/ast/treeSitterParser.js.map +1 -0
  81. package/dist/services/ast/types.d.ts +167 -0
  82. package/dist/services/ast/types.d.ts.map +1 -0
  83. package/dist/services/ast/types.js +35 -0
  84. package/dist/services/ast/types.js.map +1 -0
  85. package/dist/services/codeAnalyzer.d.ts.map +1 -1
  86. package/dist/services/codeAnalyzer.js +43 -3
  87. package/dist/services/codeAnalyzer.js.map +1 -1
  88. package/dist/services/httpClient.d.ts +45 -0
  89. package/dist/services/httpClient.d.ts.map +1 -0
  90. package/dist/services/httpClient.js +309 -0
  91. package/dist/services/httpClient.js.map +1 -0
  92. package/dist/services/intelligence/projectFs.d.ts +11 -0
  93. package/dist/services/intelligence/projectFs.d.ts.map +1 -0
  94. package/dist/services/intelligence/projectFs.js +30 -0
  95. package/dist/services/intelligence/projectFs.js.map +1 -0
  96. package/dist/services/projectFs.d.ts +85 -0
  97. package/dist/services/projectFs.d.ts.map +1 -0
  98. package/dist/services/projectFs.js +287 -0
  99. package/dist/services/projectFs.js.map +1 -0
  100. package/dist/services/rulesEngine.d.ts +255 -0
  101. package/dist/services/rulesEngine.d.ts.map +1 -0
  102. package/dist/services/rulesEngine.js +483 -0
  103. package/dist/services/rulesEngine.js.map +1 -0
  104. package/dist/services/webDocumentation.d.ts +9 -0
  105. package/dist/services/webDocumentation.d.ts.map +1 -1
  106. package/dist/services/webDocumentation.js +144 -1
  107. package/dist/services/webDocumentation.js.map +1 -1
  108. package/dist/storage/index.d.ts +7 -0
  109. package/dist/storage/index.d.ts.map +1 -0
  110. package/dist/storage/index.js +7 -0
  111. package/dist/storage/index.js.map +1 -0
  112. package/dist/storage/sqlite.d.ts +92 -0
  113. package/dist/storage/sqlite.d.ts.map +1 -0
  114. package/dist/storage/sqlite.js +471 -0
  115. package/dist/storage/sqlite.js.map +1 -0
  116. package/dist/storage/types.d.ts +147 -0
  117. package/dist/storage/types.d.ts.map +1 -0
  118. package/dist/storage/types.js +13 -0
  119. package/dist/storage/types.js.map +1 -0
  120. package/dist/utils/logger.d.ts +11 -2
  121. package/dist/utils/logger.d.ts.map +1 -1
  122. package/dist/utils/logger.js +30 -2
  123. package/dist/utils/logger.js.map +1 -1
  124. package/dist/utils/validation.d.ts +1 -1
  125. package/dist/validation/index.d.ts +8 -0
  126. package/dist/validation/index.d.ts.map +1 -0
  127. package/dist/validation/index.js +19 -0
  128. package/dist/validation/index.js.map +1 -0
  129. package/dist/validation/schemas.d.ts +341 -0
  130. package/dist/validation/schemas.d.ts.map +1 -0
  131. package/dist/validation/schemas.js +244 -0
  132. package/dist/validation/schemas.js.map +1 -0
  133. package/package.json +9 -2
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * StackGuide MCP Server
3
+ * StackGuide MCP Server v3.8.0
4
4
  *
5
5
  * A Model Context Protocol server for dynamic language and framework context loading.
6
6
  * Compatible with Cursor and GitHub Copilot.
@@ -9,9 +9,11 @@
9
9
  * - src/handlers/ - Tool handlers (setup, rules, review, etc.)
10
10
  * - src/tools/ - Tool definitions (JSON schemas)
11
11
  * - src/utils/ - Utilities (logger, validation)
12
- * - src/services/ - External services (cursorDirectory, webDocs)
12
+ * - src/services/ - External services (cursorDirectory, webDocs, httpClient, projectFs)
13
13
  * - src/resources/ - Data providers (rules, knowledge)
14
14
  * - src/config/ - Configuration and persistence
15
+ * - src/storage/ - SQLite persistence layer
16
+ * - src/router/ - Handler registry pattern
15
17
  */
16
18
  export {};
17
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;GAaG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;GAeG"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * StackGuide MCP Server
3
+ * StackGuide MCP Server v3.8.0
4
4
  *
5
5
  * A Model Context Protocol server for dynamic language and framework context loading.
6
6
  * Compatible with Cursor and GitHub Copilot.
@@ -9,22 +9,23 @@
9
9
  * - src/handlers/ - Tool handlers (setup, rules, review, etc.)
10
10
  * - src/tools/ - Tool definitions (JSON schemas)
11
11
  * - src/utils/ - Utilities (logger, validation)
12
- * - src/services/ - External services (cursorDirectory, webDocs)
12
+ * - src/services/ - External services (cursorDirectory, webDocs, httpClient, projectFs)
13
13
  * - src/resources/ - Data providers (rules, knowledge)
14
14
  * - src/config/ - Configuration and persistence
15
+ * - src/storage/ - SQLite persistence layer
16
+ * - src/router/ - Handler registry pattern
15
17
  */
16
18
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
17
19
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
18
20
  import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
19
- import { SUPPORTED_PROJECTS } from './config/types.js';
20
21
  import * as persistence from './config/persistence.js';
21
22
  import * as rulesProvider from './resources/rulesProvider.js';
22
23
  import * as knowledgeProvider from './resources/knowledgeProvider.js';
23
- import * as ruleManager from './services/ruleManager.js';
24
- import * as webDocs from './services/webDocumentation.js';
25
- import * as autoDetect from './services/autoDetect.js';
26
24
  import { toolDefinitions } from './tools/definitions.js';
27
- import { handleSetup, handleContext, handleRules, handleKnowledge, handleReview, handleCursor, handleDocs, handleConfig, handleCustomRule, handleHelp, handleGenerate, handleHealth, handleAnalyze, textResponse } from './handlers/index.js';
25
+ import { handleSetup, handleContext, handleRules, handleKnowledge, handleReview, handleCursor, handleDocs, handleConfig, handleCustomRule, handleHelp, handleGenerate, handleHealth, handleAnalyze } from './handlers/index.js';
26
+ import { listAllResources, handleResourceRead } from './handlers/resources.js';
27
+ import { listAllPrompts, handlePrompt } from './handlers/prompts.js';
28
+ import { createToolRouter } from './router/index.js';
28
29
  import { logger } from './utils/logger.js';
29
30
  // ==================== SERVER STATE ====================
30
31
  const serverState = {
@@ -36,7 +37,7 @@ const serverState = {
36
37
  // ==================== CREATE SERVER ====================
37
38
  const server = new Server({
38
39
  name: 'stackguide-mcp',
39
- version: '3.3.0',
40
+ version: '3.8.0',
40
41
  }, {
41
42
  capabilities: {
42
43
  tools: {},
@@ -44,231 +45,37 @@ const server = new Server({
44
45
  prompts: {},
45
46
  },
46
47
  });
48
+ // ==================== TOOL ROUTER ====================
49
+ const toolRouter = createToolRouter()
50
+ .register('setup', handleSetup)
51
+ .register('context', handleContext)
52
+ .register('rules', handleRules)
53
+ .register('knowledge', handleKnowledge)
54
+ .register('review', handleReview)
55
+ .register('cursor', handleCursor)
56
+ .register('docs', handleDocs)
57
+ .register('config', handleConfig)
58
+ .register('custom_rule', handleCustomRule)
59
+ .register('help', handleHelp)
60
+ .register('generate', handleGenerate)
61
+ .register('health', handleHealth)
62
+ .register('analyze', handleAnalyze);
47
63
  // ==================== TOOLS ====================
48
64
  server.setRequestHandler(ListToolsRequestSchema, async () => {
49
65
  return { tools: toolDefinitions };
50
66
  });
51
67
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
52
68
  const { name, arguments: args = {} } = request.params;
53
- const startTime = Date.now();
54
- logger.debug(`Tool called: ${name}`, { args });
55
- try {
56
- switch (name) {
57
- case 'setup':
58
- return await handleSetup(args, serverState);
59
- case 'context':
60
- return await handleContext(args, serverState);
61
- case 'rules':
62
- return await handleRules(args, serverState);
63
- case 'knowledge':
64
- return await handleKnowledge(args, serverState);
65
- case 'review':
66
- return await handleReview(args, serverState);
67
- case 'cursor':
68
- return await handleCursor(args, serverState);
69
- case 'docs':
70
- return await handleDocs(args, serverState);
71
- case 'config':
72
- return await handleConfig(args, serverState);
73
- case 'custom_rule':
74
- return await handleCustomRule(args, serverState);
75
- case 'help':
76
- return await handleHelp(args);
77
- case 'generate':
78
- return await handleGenerate(args, serverState);
79
- case 'health':
80
- return await handleHealth(args, serverState);
81
- case 'analyze':
82
- return await handleAnalyze(args, serverState);
83
- default:
84
- logger.warn(`Unknown tool: ${name}`);
85
- return textResponse(`Unknown tool: ${name}`);
86
- }
87
- }
88
- catch (error) {
89
- const message = error instanceof Error ? error.message : String(error);
90
- logger.error(`Tool error: ${name}`, { error: message });
91
- return textResponse(`Error executing tool "${name}": ${message}`);
92
- }
93
- finally {
94
- logger.debug(`Tool completed: ${name}`, { duration: `${Date.now() - startTime}ms` });
95
- }
69
+ return toolRouter.handle(name, args, serverState);
96
70
  });
97
71
  // ==================== RESOURCES ====================
98
72
  server.setRequestHandler(ListResourcesRequestSchema, async () => {
99
- const resources = [];
100
- // Add resources for each project type with data
101
- const projectsWithRules = rulesProvider.getProjectTypesWithRules();
102
- const projectsWithKnowledge = knowledgeProvider.getProjectTypesWithKnowledge();
103
- for (const pt of projectsWithRules) {
104
- resources.push({
105
- uri: `rules://${pt}/all`,
106
- name: `${SUPPORTED_PROJECTS[pt]?.name || pt} - All Rules`,
107
- description: `All coding rules for ${pt} projects`,
108
- mimeType: 'text/markdown'
109
- });
110
- const userRules = ruleManager.getUserRules(pt);
111
- if (userRules.length > 0) {
112
- resources.push({
113
- uri: `user-rules://${pt}/all`,
114
- name: `${SUPPORTED_PROJECTS[pt]?.name || pt} - User Rules`,
115
- description: `User-created rules for ${pt} projects`,
116
- mimeType: 'text/markdown'
117
- });
118
- }
119
- }
120
- for (const pt of projectsWithKnowledge) {
121
- resources.push({
122
- uri: `knowledge://${pt}/all`,
123
- name: `${SUPPORTED_PROJECTS[pt]?.name || pt} - Knowledge Base`,
124
- description: `Knowledge base for ${pt} projects`,
125
- mimeType: 'text/markdown'
126
- });
127
- }
128
- // Web documents
129
- const webDocsList = webDocs.listCachedDocuments();
130
- for (const doc of webDocsList) {
131
- resources.push({
132
- uri: `web-doc://${doc.id}`,
133
- name: `Web: ${doc.title}`,
134
- description: `Fetched from ${doc.url}`,
135
- mimeType: 'text/markdown'
136
- });
137
- }
138
- // Active context
139
- resources.push({
140
- uri: 'context://active',
141
- name: 'Active Context',
142
- description: 'The currently active project context with selected rules and knowledge',
143
- mimeType: 'text/markdown'
144
- });
145
- // Templates
146
- resources.push({
147
- uri: 'templates://rules',
148
- name: 'Rule Templates',
149
- description: 'Available templates for creating new rules',
150
- mimeType: 'text/markdown'
151
- });
152
- return { resources };
73
+ return { resources: listAllResources() };
153
74
  });
154
75
  server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
155
76
  const { uri } = request.params;
156
77
  try {
157
- if (uri.startsWith('rules://')) {
158
- const parts = uri.replace('rules://', '').split('/');
159
- const projectType = parts[0];
160
- const rules = rulesProvider.getRulesForProject(projectType);
161
- const content = rules.map(r => `# ${r.name}\n\n${r.content}`).join('\n\n---\n\n');
162
- return {
163
- contents: [{
164
- uri,
165
- mimeType: 'text/markdown',
166
- text: content || 'No rules available for this project type.'
167
- }]
168
- };
169
- }
170
- if (uri.startsWith('user-rules://')) {
171
- const parts = uri.replace('user-rules://', '').split('/');
172
- const projectType = parts[0];
173
- const rules = ruleManager.getUserRules(projectType);
174
- const content = rules.map(r => `# ${r.name}\n\n**Category:** ${r.category}\n**Description:** ${r.description}\n\n${r.content}`).join('\n\n---\n\n');
175
- return {
176
- contents: [{
177
- uri,
178
- mimeType: 'text/markdown',
179
- text: content || 'No user rules available for this project type.'
180
- }]
181
- };
182
- }
183
- if (uri.startsWith('knowledge://')) {
184
- const parts = uri.replace('knowledge://', '').split('/');
185
- const projectType = parts[0];
186
- const knowledge = knowledgeProvider.getKnowledgeForProject(projectType);
187
- const content = knowledge.map(k => `# ${k.name}\n\n${k.content}`).join('\n\n---\n\n');
188
- return {
189
- contents: [{
190
- uri,
191
- mimeType: 'text/markdown',
192
- text: content || 'No knowledge available for this project type.'
193
- }]
194
- };
195
- }
196
- if (uri.startsWith('web-doc://')) {
197
- const docId = uri.replace('web-doc://', '');
198
- const doc = webDocs.getWebDocumentById(docId);
199
- if (!doc) {
200
- return {
201
- contents: [{ uri, mimeType: 'text/plain', text: 'Web document not found in cache.' }]
202
- };
203
- }
204
- return {
205
- contents: [{
206
- uri,
207
- mimeType: 'text/markdown',
208
- text: `# ${doc.title}\n\n**Source:** ${doc.url}\n**Fetched:** ${doc.fetchedAt}\n\n---\n\n${doc.content}`
209
- }]
210
- };
211
- }
212
- if (uri === 'templates://rules') {
213
- const templates = ruleManager.listTemplates();
214
- let content = '# Available Rule Templates\n\n';
215
- for (const t of templates) {
216
- content += `## ${t.name}\n\nTemplate ID: \`${t.id}\`\n\n`;
217
- const templateContent = ruleManager.getTemplateContent(t.id);
218
- if (templateContent) {
219
- content += '```markdown\n' + templateContent + '\n```\n\n---\n\n';
220
- }
221
- }
222
- return {
223
- contents: [{ uri, mimeType: 'text/markdown', text: content }]
224
- };
225
- }
226
- if (uri === 'context://active') {
227
- if (!serverState.activeProjectType) {
228
- return {
229
- contents: [{
230
- uri,
231
- mimeType: 'text/markdown',
232
- text: 'No active context. Use select_project_type tool to activate a project type.'
233
- }]
234
- };
235
- }
236
- const selectedRules = serverState.activeConfiguration?.selectedRules || [];
237
- const selectedKnowledge = serverState.activeConfiguration?.selectedKnowledge || [];
238
- const rulesContent = rulesProvider.getCombinedRulesContent(selectedRules);
239
- const knowledgeContent = knowledgeProvider.getCombinedKnowledgeContent(selectedKnowledge);
240
- const userRules = ruleManager.getUserRules(serverState.activeProjectType);
241
- const userRulesContent = userRules.length > 0
242
- ? userRules.map(r => `### ${r.name}\n\n${r.content}`).join('\n\n')
243
- : '';
244
- const webDocsList = webDocs.listCachedDocuments().filter(d => d.projectType === serverState.activeProjectType);
245
- const webDocsContent = webDocsList.length > 0
246
- ? webDocsList.map(d => {
247
- const fullDoc = webDocs.getWebDocumentById(d.id);
248
- return `### ${d.title}\n\n${fullDoc?.content || d.summary}`;
249
- }).join('\n\n')
250
- : '';
251
- const fullContext = `# Active Context: ${SUPPORTED_PROJECTS[serverState.activeProjectType].name}
252
-
253
- ## Selected Rules
254
- ${rulesContent || 'No rules selected.'}
255
-
256
- ## User Rules
257
- ${userRulesContent || 'No user rules.'}
258
-
259
- ## Selected Knowledge
260
- ${knowledgeContent || 'No knowledge selected.'}
261
-
262
- ## Web Documentation
263
- ${webDocsContent || 'No web documentation loaded.'}
264
- `;
265
- return {
266
- contents: [{ uri, mimeType: 'text/markdown', text: fullContext }]
267
- };
268
- }
269
- return {
270
- contents: [{ uri, mimeType: 'text/plain', text: 'Resource not found' }]
271
- };
78
+ return handleResourceRead(uri, serverState);
272
79
  }
273
80
  catch (error) {
274
81
  const message = error instanceof Error ? error.message : String(error);
@@ -279,208 +86,11 @@ ${webDocsContent || 'No web documentation loaded.'}
279
86
  });
280
87
  // ==================== PROMPTS ====================
281
88
  server.setRequestHandler(ListPromptsRequestSchema, async () => {
282
- return {
283
- prompts: [
284
- {
285
- name: 'welcome',
286
- description: 'Get started with StackGuide - interactive setup wizard',
287
- arguments: []
288
- },
289
- {
290
- name: 'configure_project',
291
- description: 'Smart project configuration with auto-detection and suggestions',
292
- arguments: [
293
- { name: 'projectPath', description: 'Path to your project (use "." for current directory)', required: false }
294
- ]
295
- },
296
- {
297
- name: 'code_review',
298
- description: 'Review code from file, URL, or pasted code against active rules',
299
- arguments: [
300
- { name: 'filePath', description: 'Local file path to review (optional)', required: false },
301
- { name: 'url', description: 'URL to fetch and review (optional)', required: false },
302
- { name: 'code', description: 'Code snippet to review (optional)', required: false }
303
- ]
304
- },
305
- {
306
- name: 'apply_patterns',
307
- description: 'Apply architecture patterns from knowledge base',
308
- arguments: [
309
- { name: 'task', description: 'Task or feature to implement', required: true }
310
- ]
311
- }
312
- ]
313
- };
89
+ return { prompts: listAllPrompts() };
314
90
  });
315
91
  server.setRequestHandler(GetPromptRequestSchema, async (request) => {
316
92
  const { name, arguments: promptArgs } = request.params;
317
- switch (name) {
318
- case 'welcome': {
319
- const projectTypes = Object.values(SUPPORTED_PROJECTS)
320
- .map(p => `- **${p.type}**: ${p.name} (${p.languages.join(', ')})`)
321
- .join('\n');
322
- return {
323
- messages: [{
324
- role: 'user',
325
- content: {
326
- type: 'text',
327
- text: `# Welcome to StackGuide! 👋
328
-
329
- I'm your AI coding context manager. I help you load the right rules, standards, and knowledge for your project.
330
-
331
- ## Quick Start
332
- Just tell me: "Set up my project" and I'll analyze your codebase and configure everything automatically.
333
-
334
- ## Supported Project Types
335
- ${projectTypes}
336
-
337
- ## What I Can Do
338
- - 📋 Load coding standards and best practices for your stack
339
- - 🔍 Browse and import rules from cursor.directory
340
- - 📚 Provide architecture patterns and solutions
341
- - 💾 Save configurations for your projects
342
-
343
- Just describe your project and I'll configure everything for you!`
344
- }
345
- }]
346
- };
347
- }
348
- case 'configure_project': {
349
- const projectPath = promptArgs?.projectPath || '.';
350
- const resolvedPath = projectPath === '.' ? process.cwd() : projectPath;
351
- let detection = null;
352
- try {
353
- detection = autoDetect.detectProjectType(resolvedPath);
354
- }
355
- catch { /* Path might not exist */ }
356
- if (detection?.detected && detection.projectType) {
357
- return {
358
- messages: [{
359
- role: 'user',
360
- content: {
361
- type: 'text',
362
- text: `# Project Detected! 🎯
363
-
364
- **Type**: ${detection.projectType}
365
- **Confidence**: ${detection.confidence}
366
- **Languages**: ${detection.languages.join(', ')}
367
- **Frameworks**: ${detection.frameworks.join(', ')}
368
-
369
- Would you like me to set this up for you?`
370
- }
371
- }]
372
- };
373
- }
374
- return {
375
- messages: [{
376
- role: 'user',
377
- content: {
378
- type: 'text',
379
- text: `# Let's Configure Your Project 🔧
380
-
381
- I couldn't auto-detect the project type. Tell me about your project or choose from:
382
- ${Object.values(SUPPORTED_PROJECTS).map(p => `- **${p.type}**: ${p.name}`).join('\n')}`
383
- }
384
- }]
385
- };
386
- }
387
- case 'code_review': {
388
- const { filePath, url, code } = promptArgs || {};
389
- const projectName = serverState.activeProjectType
390
- ? SUPPORTED_PROJECTS[serverState.activeProjectType].name
391
- : 'the current project';
392
- let codeToReview = code || '';
393
- let source = 'provided code';
394
- if (filePath && !codeToReview) {
395
- try {
396
- const fs = await import('fs');
397
- const path = await import('path');
398
- const resolved = path.isAbsolute(filePath) ? filePath : path.join(process.cwd(), filePath);
399
- if (fs.existsSync(resolved)) {
400
- codeToReview = fs.readFileSync(resolved, 'utf-8');
401
- source = filePath;
402
- }
403
- }
404
- catch { /* ignore */ }
405
- }
406
- if (url && !codeToReview) {
407
- try {
408
- const response = await fetch(url);
409
- codeToReview = await response.text();
410
- source = url;
411
- }
412
- catch { /* ignore */ }
413
- }
414
- const rules = serverState.loadedRules
415
- .filter(r => !serverState.activeConfiguration || serverState.activeConfiguration.selectedRules.includes(r.id))
416
- .map(r => `- ${r.name}: ${r.description}`)
417
- .join('\n');
418
- return {
419
- messages: [{
420
- role: 'user',
421
- content: {
422
- type: 'text',
423
- text: `Review the following code for ${projectName}.
424
-
425
- Source: ${source}
426
-
427
- Active Rules:
428
- ${rules || 'No specific rules selected. Using general best practices.'}
429
-
430
- Code to Review:
431
- \`\`\`
432
- ${codeToReview.substring(0, 15000)}
433
- \`\`\`
434
- ${codeToReview.length > 15000 ? '\n(Code truncated for length)' : ''}
435
-
436
- Please analyze for:
437
- 1. Compliance with coding standards
438
- 2. Security issues
439
- 3. Performance concerns
440
- 4. Best practices
441
- 5. Suggested improvements`
442
- }
443
- }]
444
- };
445
- }
446
- case 'apply_patterns': {
447
- const task = promptArgs?.task || '';
448
- const projectName = serverState.activeProjectType
449
- ? SUPPORTED_PROJECTS[serverState.activeProjectType].name
450
- : 'the current project';
451
- const knowledge = serverState.loadedKnowledge
452
- .filter(k => serverState.activeConfiguration?.selectedKnowledge.includes(k.id))
453
- .map(k => `### ${k.name}\n${k.description}`)
454
- .join('\n\n');
455
- return {
456
- messages: [{
457
- role: 'user',
458
- content: {
459
- type: 'text',
460
- text: `Implement the following task for ${projectName} using established patterns.
461
-
462
- Task: ${task}
463
-
464
- Available Patterns and Knowledge:
465
- ${knowledge || 'No specific knowledge selected. Using general patterns.'}
466
-
467
- Please:
468
- 1. Analyze the task requirements
469
- 2. Suggest appropriate patterns
470
- 3. Provide implementation guidance
471
- 4. Include code examples where helpful`
472
- }
473
- }]
474
- };
475
- }
476
- default:
477
- return {
478
- messages: [{
479
- role: 'user',
480
- content: { type: 'text', text: `Unknown prompt: ${name}` }
481
- }]
482
- };
483
- }
93
+ return handlePrompt(name, promptArgs || {}, serverState);
484
94
  });
485
95
  // ==================== MAIN ====================
486
96
  async function main() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Router - Handler Registry Pattern for MCP Server
3
+ * Replaces switch statements with clean registry-based routing
4
+ * @version 3.6.0
5
+ */
6
+ import { z } from 'zod';
7
+ import { ServerState } from '../handlers/index.js';
8
+ export interface ToolResponse {
9
+ content: Array<{
10
+ type: 'text';
11
+ text: string;
12
+ }>;
13
+ }
14
+ export type ToolHandler<TArgs = Record<string, unknown>> = (args: TArgs, state: ServerState) => Promise<ToolResponse>;
15
+ export type PromptHandler = (args: Record<string, unknown>, state: ServerState) => Promise<{
16
+ messages: Array<{
17
+ role: 'user' | 'assistant';
18
+ content: {
19
+ type: 'text';
20
+ text: string;
21
+ };
22
+ }>;
23
+ }>;
24
+ export type ResourceReader = (uri: string, state: ServerState) => Promise<{
25
+ contents: Array<{
26
+ uri: string;
27
+ mimeType: string;
28
+ text: string;
29
+ }>;
30
+ } | null>;
31
+ declare class ToolRouter {
32
+ private handlers;
33
+ register(name: string, handler: ToolHandler, schema?: z.ZodSchema): this;
34
+ registerWithSchema<T>(name: string, schema: z.ZodSchema<T>, handler: (args: T, state: ServerState) => Promise<ToolResponse>): this;
35
+ registerAll(handlers: Record<string, ToolHandler>): this;
36
+ has(name: string): boolean;
37
+ handle(name: string, args: Record<string, unknown>, state: ServerState): Promise<ToolResponse>;
38
+ listTools(): string[];
39
+ }
40
+ declare class ResourceRouter {
41
+ private routes;
42
+ register(pattern: RegExp | string, reader: ResourceReader): this;
43
+ read(uri: string, state: ServerState): Promise<{
44
+ contents: Array<{
45
+ uri: string;
46
+ mimeType: string;
47
+ text: string;
48
+ }>;
49
+ }>;
50
+ }
51
+ declare class PromptRouter {
52
+ private handlers;
53
+ register(name: string, handler: PromptHandler): this;
54
+ handle(name: string, args: Record<string, unknown>, state: ServerState): Promise<{
55
+ messages: Array<{
56
+ role: 'user' | 'assistant';
57
+ content: {
58
+ type: 'text';
59
+ text: string;
60
+ };
61
+ }>;
62
+ }>;
63
+ listPrompts(): string[];
64
+ }
65
+ export declare function createToolRouter(): ToolRouter;
66
+ export declare function createResourceRouter(): ResourceRouter;
67
+ export declare function createPromptRouter(): PromptRouter;
68
+ export { ToolRouter, ResourceRouter, PromptRouter };
69
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAgB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOjE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAED,MAAM,MAAM,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CACzD,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,WAAW,KACf,OAAO,CAAC,YAAY,CAAC,CAAC;AAE3B,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,WAAW,KACf,OAAO,CAAC;IACX,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAC3B,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KACzC,CAAC,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAC3B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,KACf,OAAO,CAAC;IACX,QAAQ,EAAE,KAAK,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ,GAAG,IAAI,CAAC,CAAC;AAWV,cAAM,UAAU;IACd,OAAO,CAAC,QAAQ,CAA6C;IAE7D,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,IAAI;IAQxE,kBAAkB,CAAC,CAAC,EAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,GAC9D,IAAI;IAIP,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI;IAOxD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpB,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,YAAY,CAAC;IAwCxB,SAAS,IAAI,MAAM,EAAE;CAGtB;AAWD,cAAM,cAAc;IAClB,OAAO,CAAC,MAAM,CAAuB;IAErC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IAK1D,IAAI,CACR,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC;QACT,QAAQ,EAAE,KAAK,CAAC;YACd,GAAG,EAAE,MAAM,CAAC;YACZ,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;SACd,CAAC,CAAC;KACJ,CAAC;CA+BH;AAMD,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAyC;IAEzD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAK9C,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC;QACT,QAAQ,EAAE,KAAK,CAAC;YACd,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;YAC3B,OAAO,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC;SACzC,CAAC,CAAC;KACJ,CAAC;IAeF,WAAW,IAAI,MAAM,EAAE;CAGxB;AAMD,wBAAgB,gBAAgB,IAAI,UAAU,CAE7C;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD;AAMD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC"}