@stackguide/mcp-server 3.3.0 → 3.8.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.
Files changed (137) 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 +236 -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 +45 -4
  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 +523 -0
  103. package/dist/services/rulesEngine.js.map +1 -0
  104. package/dist/services/webDocumentation.d.ts +11 -0
  105. package/dist/services/webDocumentation.d.ts.map +1 -1
  106. package/dist/services/webDocumentation.js +231 -27
  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/safeFetch.d.ts +12 -0
  125. package/dist/utils/safeFetch.d.ts.map +1 -0
  126. package/dist/utils/safeFetch.js +107 -0
  127. package/dist/utils/safeFetch.js.map +1 -0
  128. package/dist/utils/validation.d.ts +1 -1
  129. package/dist/validation/index.d.ts +8 -0
  130. package/dist/validation/index.d.ts.map +1 -0
  131. package/dist/validation/index.js +19 -0
  132. package/dist/validation/index.js.map +1 -0
  133. package/dist/validation/schemas.d.ts +346 -0
  134. package/dist/validation/schemas.d.ts.map +1 -0
  135. package/dist/validation/schemas.js +256 -0
  136. package/dist/validation/schemas.js.map +1 -0
  137. package/package.json +9 -2
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Zod Validation Schemas
3
+ * Centralized input validation for all MCP handlers
4
+ * @version 3.6.0
5
+ */
6
+ import { z } from 'zod';
7
+ // ============================================================================
8
+ // Common Schemas
9
+ // ============================================================================
10
+ /** Project type enum */
11
+ export const ProjectTypeSchema = z.enum([
12
+ 'react-typescript',
13
+ 'react-node',
14
+ 'vue-node',
15
+ 'nextjs',
16
+ 'nestjs',
17
+ 'express',
18
+ 'rails',
19
+ 'laravel',
20
+ 'golang',
21
+ 'rust',
22
+ 'python-fastapi',
23
+ 'python-django',
24
+ 'python-flask',
25
+ 'custom'
26
+ ]);
27
+ /** Severity level enum */
28
+ export const SeveritySchema = z.enum(['error', 'warning', 'info', 'suggestion']);
29
+ /** File path validation */
30
+ export const FilePathSchema = z.string()
31
+ .min(1, 'File path cannot be empty')
32
+ .max(1024, 'File path too long')
33
+ .refine((path) => !path.includes('\0'), 'File path contains invalid characters');
34
+ /** URL validation */
35
+ export const UrlSchema = z.string()
36
+ .url('Invalid URL format')
37
+ .max(2048, 'URL too long');
38
+ /** Safe string (no special chars that could cause issues) */
39
+ export const SafeStringSchema = z.string()
40
+ .max(1000, 'String too long')
41
+ .transform(s => s.trim());
42
+ /** Identifier (alphanumeric + dash/underscore) */
43
+ export const IdentifierSchema = z.string()
44
+ .min(1, 'Identifier cannot be empty')
45
+ .max(100, 'Identifier too long')
46
+ .regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/, 'Invalid identifier format');
47
+ // ============================================================================
48
+ // Handler Input Schemas
49
+ // ============================================================================
50
+ /** setup handler input */
51
+ export const SetupInputSchema = z.object({
52
+ type: ProjectTypeSchema.optional(),
53
+ path: FilePathSchema.optional()
54
+ }).passthrough();
55
+ /** rules handler input */
56
+ export const RulesInputSchema = z.object({
57
+ action: z.enum(['list', 'search', 'get', 'select']).optional().default('list'),
58
+ query: SafeStringSchema.optional(),
59
+ ids: z.array(z.string().max(200)).optional(),
60
+ category: z.enum(['security', 'performance', 'best-practices', 'coding-standards', 'architecture', 'testing']).optional()
61
+ }).passthrough();
62
+ /** knowledge handler input */
63
+ export const KnowledgeInputSchema = z.object({
64
+ action: z.enum(['list', 'search', 'get']).optional().default('list'),
65
+ query: SafeStringSchema.optional(),
66
+ category: z.enum(['patterns', 'common-issues', 'architecture', 'workflows']).optional()
67
+ }).passthrough();
68
+ /** review handler input */
69
+ export const ReviewInputSchema = z.object({
70
+ file: FilePathSchema.optional(),
71
+ url: UrlSchema.optional(),
72
+ project: z.boolean().optional(),
73
+ focus: z.enum(['all', 'security', 'performance', 'architecture', 'coding-standards']).optional().default('all'),
74
+ incremental: z.boolean().optional(),
75
+ maxDepth: z.number().int().min(1).max(20).optional(),
76
+ maxFiles: z.number().int().min(1).optional(),
77
+ useCache: z.boolean().optional()
78
+ }).passthrough();
79
+ /** context handler input */
80
+ export const ContextInputSchema = z.object({
81
+ full: z.boolean().optional()
82
+ }).passthrough();
83
+ /** docs handler input */
84
+ export const DocsInputSchema = z.object({
85
+ action: z.enum(['fetch', 'search', 'list', 'get', 'remove', 'suggest']).optional().default('list'),
86
+ url: z.string().max(2048).optional(), // Can be URL or ID for get/remove
87
+ urls: z.array(UrlSchema).optional(),
88
+ query: SafeStringSchema.optional()
89
+ }).passthrough();
90
+ /** cursor handler input */
91
+ export const CursorInputSchema = z.object({
92
+ action: z.enum(['browse', 'search', 'popular', 'import', 'categories']).optional().default('categories'),
93
+ query: SafeStringSchema.optional(),
94
+ slug: SafeStringSchema.optional()
95
+ }).passthrough();
96
+ /** config handler input */
97
+ export const ConfigInputSchema = z.object({
98
+ action: z.enum(['save', 'load', 'list', 'delete', 'export', 'import']).optional().default('list'),
99
+ name: SafeStringSchema.optional(),
100
+ id: z.string().max(200).optional(),
101
+ json: z.string().max(100000).optional()
102
+ }).passthrough();
103
+ /** custom-rule handler input */
104
+ export const CustomRuleInputSchema = z.object({
105
+ action: z.enum(['create', 'update', 'delete', 'list', 'export', 'import']).optional().default('list'),
106
+ name: SafeStringSchema.optional(),
107
+ content: z.string().max(50000).optional(),
108
+ category: z.enum(['security', 'performance', 'best-practices', 'coding-standards', 'architecture']).optional(),
109
+ id: z.string().max(200).optional(),
110
+ json: z.string().max(100000).optional()
111
+ }).passthrough();
112
+ /** generate handler input */
113
+ export const GenerateInputSchema = z.object({
114
+ type: z.enum(['component', 'hook', 'service', 'test', 'api', 'model', 'util']),
115
+ name: z.string().min(1).max(100),
116
+ options: z.object({
117
+ typescript: z.boolean().optional(),
118
+ withTests: z.boolean().optional(),
119
+ withStyles: z.boolean().optional(),
120
+ framework: z.string().max(50).optional(),
121
+ scanProject: z.boolean().optional()
122
+ }).optional()
123
+ }).passthrough();
124
+ /** health handler input */
125
+ export const HealthInputSchema = z.object({
126
+ detailed: z.boolean().optional(),
127
+ path: FilePathSchema.optional()
128
+ }).passthrough();
129
+ /** help handler input */
130
+ export const HelpInputSchema = z.object({
131
+ topic: z.enum(['setup', 'rules', 'review', 'cursor', 'docs', 'config', 'generate', 'health', 'all']).optional().default('all')
132
+ }).passthrough();
133
+ // ============================================================================
134
+ // Tool Argument Schemas
135
+ // ============================================================================
136
+ /** analyze_code tool input */
137
+ export const AnalyzeCodeInputSchema = z.object({
138
+ code: z.string().min(1, 'Code cannot be empty').max(100000, 'Code too large'),
139
+ language: z.string().max(50).optional(),
140
+ filePath: FilePathSchema.optional(),
141
+ categories: z.array(z.enum(['security', 'performance', 'best-practices', 'maintainability', 'architecture'])).optional()
142
+ }).strict();
143
+ /** get_rules tool input */
144
+ export const GetRulesInputSchema = z.object({
145
+ language: z.string().max(50).optional(),
146
+ category: z.enum(['security', 'performance', 'best-practices', 'maintainability', 'architecture']).optional(),
147
+ enabled: z.boolean().optional()
148
+ }).strict();
149
+ /**
150
+ * Validate input against a schema
151
+ */
152
+ export function validate(schema, input) {
153
+ const result = schema.safeParse(input);
154
+ if (result.success) {
155
+ return { success: true, data: result.data };
156
+ }
157
+ const errorMessages = result.error.issues.map(issue => {
158
+ const path = issue.path.join('.');
159
+ return path ? `${path}: ${issue.message}` : issue.message;
160
+ });
161
+ return {
162
+ success: false,
163
+ error: errorMessages.join('; '),
164
+ details: result.error.issues
165
+ };
166
+ }
167
+ /**
168
+ * Validate and throw on failure
169
+ */
170
+ export function validateOrThrow(schema, input, context) {
171
+ const result = validate(schema, input);
172
+ if (!result.success) {
173
+ const prefix = context ? `${context}: ` : '';
174
+ throw new Error(`${prefix}${result.error}`);
175
+ }
176
+ return result.data;
177
+ }
178
+ /**
179
+ * Create a validated handler wrapper
180
+ */
181
+ export function withValidation(schema, handler) {
182
+ return async (input) => {
183
+ const validated = validateOrThrow(schema, input);
184
+ return handler(validated);
185
+ };
186
+ }
187
+ // ============================================================================
188
+ // Sanitization Utilities
189
+ // ============================================================================
190
+ /**
191
+ * Sanitize string for safe display
192
+ */
193
+ export function sanitizeForDisplay(input, maxLength = 1000) {
194
+ return input
195
+ .slice(0, maxLength)
196
+ .replace(/[\x00-\x1F\x7F]/g, '') // Remove control characters
197
+ .trim();
198
+ }
199
+ /**
200
+ * Sanitize arbitrary content before sending to a prompt/LLM.
201
+ * Removes control/directional chars and script/style blocks, and enforces length.
202
+ */
203
+ export function sanitizeForPrompt(input, maxLength = 8000) {
204
+ const withoutControls = input
205
+ .slice(0, maxLength)
206
+ .replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, '')
207
+ .replace(/[\u202A-\u202E\u2066-\u2069]/g, '');
208
+ const withoutScripts = withoutControls.replace(/<\s*(script|style)[^>]*>[\s\S]*?<\s*\/\s*\1\s*>/gi, '');
209
+ return withoutScripts.trim();
210
+ }
211
+ /**
212
+ * Sanitize file path
213
+ */
214
+ export function sanitizePath(input) {
215
+ return input
216
+ .replace(/\.\./g, '') // Remove directory traversal
217
+ .replace(/^\/+/, '/') // Normalize leading slashes
218
+ .replace(/\\/g, '/'); // Normalize backslashes
219
+ }
220
+ /**
221
+ * Sanitize identifier
222
+ */
223
+ export function sanitizeIdentifier(input) {
224
+ return input
225
+ .replace(/[^a-zA-Z0-9_-]/g, '-')
226
+ .replace(/^-+|-+$/g, '')
227
+ .slice(0, 100);
228
+ }
229
+ // ============================================================================
230
+ // Schema Registry (for dynamic validation)
231
+ // ============================================================================
232
+ export const HANDLER_SCHEMAS = {
233
+ 'setup': SetupInputSchema,
234
+ 'rules': RulesInputSchema,
235
+ 'knowledge': KnowledgeInputSchema,
236
+ 'review': ReviewInputSchema,
237
+ 'context': ContextInputSchema,
238
+ 'docs': DocsInputSchema,
239
+ 'cursor': CursorInputSchema,
240
+ 'config': ConfigInputSchema,
241
+ 'custom-rule': CustomRuleInputSchema,
242
+ 'generate': GenerateInputSchema,
243
+ 'health': HealthInputSchema,
244
+ 'help': HelpInputSchema
245
+ };
246
+ /**
247
+ * Validate handler input by handler name
248
+ */
249
+ export function validateHandlerInput(handlerName, input) {
250
+ const schema = HANDLER_SCHEMAS[handlerName];
251
+ if (!schema) {
252
+ return { success: true, data: input }; // No schema, pass through
253
+ }
254
+ return validate(schema, input);
255
+ }
256
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/validation/schemas.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackguide/mcp-server",
3
- "version": "3.3.0",
3
+ "version": "3.8.2",
4
4
  "description": "MCP Server for dynamic language and framework context loading - Compatible with Cursor and GitHub Copilot",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -34,10 +34,17 @@
34
34
  "license": "GPL-3.0",
35
35
  "dependencies": {
36
36
  "@modelcontextprotocol/sdk": "^1.0.0",
37
+ "better-sqlite3": "^12.5.0",
38
+ "tree-sitter": "^0.25.0",
39
+ "tree-sitter-go": "^0.25.0",
40
+ "tree-sitter-python": "^0.25.0",
41
+ "tree-sitter-rust": "^0.24.0",
42
+ "tree-sitter-typescript": "^0.23.2",
37
43
  "ts-morph": "^27.0.2",
38
- "zod": "^3.23.8"
44
+ "zod": "^3.25.76"
39
45
  },
40
46
  "devDependencies": {
47
+ "@types/better-sqlite3": "^7.6.13",
41
48
  "@types/node": "^20.10.0",
42
49
  "@vitest/coverage-v8": "^4.0.16",
43
50
  "tsx": "^4.7.0",