@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.
- package/README.md +259 -10
- package/dist/config/persistence.d.ts +16 -0
- package/dist/config/persistence.d.ts.map +1 -1
- package/dist/config/persistence.js +53 -0
- package/dist/config/persistence.js.map +1 -1
- package/dist/handlers/config.d.ts +1 -8
- package/dist/handlers/config.d.ts.map +1 -1
- package/dist/handlers/config.js +7 -1
- package/dist/handlers/config.js.map +1 -1
- package/dist/handlers/context.d.ts +1 -5
- package/dist/handlers/context.d.ts.map +1 -1
- package/dist/handlers/context.js +7 -1
- package/dist/handlers/context.js.map +1 -1
- package/dist/handlers/cursor.d.ts +1 -7
- package/dist/handlers/cursor.d.ts.map +1 -1
- package/dist/handlers/cursor.js +7 -1
- package/dist/handlers/cursor.js.map +1 -1
- package/dist/handlers/custom-rule.d.ts +1 -11
- package/dist/handlers/custom-rule.d.ts.map +1 -1
- package/dist/handlers/custom-rule.js +7 -1
- package/dist/handlers/custom-rule.js.map +1 -1
- package/dist/handlers/docs.d.ts +1 -8
- package/dist/handlers/docs.d.ts.map +1 -1
- package/dist/handlers/docs.js +7 -1
- package/dist/handlers/docs.js.map +1 -1
- package/dist/handlers/generate.d.ts +1 -13
- package/dist/handlers/generate.d.ts.map +1 -1
- package/dist/handlers/generate.js +6 -3
- package/dist/handlers/generate.js.map +1 -1
- package/dist/handlers/health.d.ts +1 -8
- package/dist/handlers/health.d.ts.map +1 -1
- package/dist/handlers/health.js +11 -3
- package/dist/handlers/health.js.map +1 -1
- package/dist/handlers/help.d.ts +1 -5
- package/dist/handlers/help.d.ts.map +1 -1
- package/dist/handlers/help.js +7 -1
- package/dist/handlers/help.js.map +1 -1
- package/dist/handlers/knowledge.d.ts +1 -8
- package/dist/handlers/knowledge.d.ts.map +1 -1
- package/dist/handlers/knowledge.js +7 -1
- package/dist/handlers/knowledge.js.map +1 -1
- package/dist/handlers/prompts.d.ts +31 -0
- package/dist/handlers/prompts.d.ts.map +1 -0
- package/dist/handlers/prompts.js +225 -0
- package/dist/handlers/prompts.js.map +1 -0
- package/dist/handlers/resources.d.ts +27 -0
- package/dist/handlers/resources.d.ts.map +1 -0
- package/dist/handlers/resources.js +210 -0
- package/dist/handlers/resources.js.map +1 -0
- package/dist/handlers/review.d.ts.map +1 -1
- package/dist/handlers/review.js +18 -1
- package/dist/handlers/review.js.map +1 -1
- package/dist/handlers/rules.d.ts +1 -9
- package/dist/handlers/rules.d.ts.map +1 -1
- package/dist/handlers/rules.js +7 -1
- package/dist/handlers/rules.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -419
- package/dist/index.js.map +1 -1
- package/dist/router/index.d.ts +69 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +151 -0
- package/dist/router/index.js.map +1 -0
- package/dist/services/ast/analyzer.d.ts +55 -0
- package/dist/services/ast/analyzer.d.ts.map +1 -0
- package/dist/services/ast/analyzer.js +268 -0
- package/dist/services/ast/analyzer.js.map +1 -0
- package/dist/services/ast/index.d.ts +10 -0
- package/dist/services/ast/index.d.ts.map +1 -0
- package/dist/services/ast/index.js +12 -0
- package/dist/services/ast/index.js.map +1 -0
- package/dist/services/ast/rules.d.ts +13 -0
- package/dist/services/ast/rules.d.ts.map +1 -0
- package/dist/services/ast/rules.js +358 -0
- package/dist/services/ast/rules.js.map +1 -0
- package/dist/services/ast/treeSitterParser.d.ts +54 -0
- package/dist/services/ast/treeSitterParser.d.ts.map +1 -0
- package/dist/services/ast/treeSitterParser.js +394 -0
- package/dist/services/ast/treeSitterParser.js.map +1 -0
- package/dist/services/ast/types.d.ts +167 -0
- package/dist/services/ast/types.d.ts.map +1 -0
- package/dist/services/ast/types.js +35 -0
- package/dist/services/ast/types.js.map +1 -0
- package/dist/services/codeAnalyzer.d.ts.map +1 -1
- package/dist/services/codeAnalyzer.js +43 -3
- package/dist/services/codeAnalyzer.js.map +1 -1
- package/dist/services/httpClient.d.ts +45 -0
- package/dist/services/httpClient.d.ts.map +1 -0
- package/dist/services/httpClient.js +309 -0
- package/dist/services/httpClient.js.map +1 -0
- package/dist/services/intelligence/projectFs.d.ts +11 -0
- package/dist/services/intelligence/projectFs.d.ts.map +1 -0
- package/dist/services/intelligence/projectFs.js +30 -0
- package/dist/services/intelligence/projectFs.js.map +1 -0
- package/dist/services/projectFs.d.ts +85 -0
- package/dist/services/projectFs.d.ts.map +1 -0
- package/dist/services/projectFs.js +287 -0
- package/dist/services/projectFs.js.map +1 -0
- package/dist/services/rulesEngine.d.ts +255 -0
- package/dist/services/rulesEngine.d.ts.map +1 -0
- package/dist/services/rulesEngine.js +483 -0
- package/dist/services/rulesEngine.js.map +1 -0
- package/dist/services/webDocumentation.d.ts +9 -0
- package/dist/services/webDocumentation.d.ts.map +1 -1
- package/dist/services/webDocumentation.js +144 -1
- package/dist/services/webDocumentation.js.map +1 -1
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +7 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/sqlite.d.ts +92 -0
- package/dist/storage/sqlite.d.ts.map +1 -0
- package/dist/storage/sqlite.js +471 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/storage/types.d.ts +147 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +13 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +30 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/validation.d.ts +1 -1
- package/dist/validation/index.d.ts +8 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +19 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/schemas.d.ts +341 -0
- package/dist/validation/schemas.d.ts.map +1 -0
- package/dist/validation/schemas.js +244 -0
- package/dist/validation/schemas.js.map +1 -0
- 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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"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"}
|