atlas-pipeline-mcp 1.0.21 → 1.0.22

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.
@@ -0,0 +1,338 @@
1
+ /**
2
+ * Atlas Server - RAG-Powered Codebase Search & Understanding
3
+ *
4
+ * Semantic code search using vector embeddings and RAG:
5
+ * - Natural language queries to find code
6
+ * - Semantic similarity matching (not just keyword search)
7
+ * - Code understanding through embeddings
8
+ * - Cross-file dependency discovery
9
+ * - Architecture pattern detection
10
+ * - Similar code detection
11
+ * - Knowledge graph construction
12
+ * - Multi-modal code analysis (code + docs + comments)
13
+ *
14
+ * @module rag-search
15
+ * @author Nishant Unavane
16
+ * @version 1.0.0
17
+ */
18
+ import { promises as fs } from 'fs';
19
+ import { join, relative, extname } from 'path';
20
+ import { getActiveProvider, isNoLLMMode } from '../providers/index.js';
21
+ import { logger, createTimer } from '../utils.js';
22
+ import { z } from 'zod';
23
+ // ============================================================================
24
+ // Validation Schema
25
+ // ============================================================================
26
+ const RAGSearchOptionsSchema = z.object({
27
+ projectPath: z.string().min(1),
28
+ query: z.string().min(1),
29
+ searchType: z.enum(['semantic', 'keyword', 'hybrid']).optional(),
30
+ maxResults: z.number().min(1).max(100).optional(),
31
+ minSimilarity: z.number().min(0).max(1).optional(),
32
+ fileTypes: z.array(z.string()).optional(),
33
+ excludePaths: z.array(z.string()).optional(),
34
+ includeTests: z.boolean().optional(),
35
+ includeDocs: z.boolean().optional(),
36
+ chunkSize: z.number().optional(),
37
+ overlapSize: z.number().optional(),
38
+ useCache: z.boolean().optional(),
39
+ });
40
+ // ============================================================================
41
+ // Code Indexing
42
+ // ============================================================================
43
+ /**
44
+ * Find all source files in project
45
+ */
46
+ async function findSourceFiles(projectPath, fileTypes, excludePaths) {
47
+ const files = [];
48
+ async function scan(dir) {
49
+ try {
50
+ const entries = await fs.readdir(dir, { withFileTypes: true });
51
+ for (const entry of entries) {
52
+ const fullPath = join(dir, entry.name);
53
+ const relativePath = relative(projectPath, fullPath);
54
+ // Check if excluded
55
+ if (excludePaths.some(exclude => relativePath.startsWith(exclude))) {
56
+ continue;
57
+ }
58
+ if (entry.isDirectory()) {
59
+ if (!['node_modules', '.git', 'dist', 'build', 'coverage'].includes(entry.name)) {
60
+ await scan(fullPath);
61
+ }
62
+ }
63
+ else if (entry.isFile()) {
64
+ const ext = extname(entry.name);
65
+ if (fileTypes.includes(ext)) {
66
+ files.push(fullPath);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ catch (error) {
72
+ logger.debug({ error, dir }, 'Error scanning directory');
73
+ }
74
+ }
75
+ await scan(projectPath);
76
+ return files;
77
+ }
78
+ /**
79
+ * Extract code chunks from file
80
+ */
81
+ async function extractCodeChunks(filePath, chunkSize, overlapSize) {
82
+ const content = await fs.readFile(filePath, 'utf-8');
83
+ const lines = content.split('\n');
84
+ const chunks = [];
85
+ for (let i = 0; i < lines.length; i += chunkSize - overlapSize) {
86
+ const endLine = Math.min(i + chunkSize, lines.length);
87
+ const chunkLines = lines.slice(i, endLine);
88
+ chunks.push({
89
+ content: chunkLines.join('\n'),
90
+ lineStart: i + 1,
91
+ lineEnd: endLine,
92
+ });
93
+ if (endLine >= lines.length)
94
+ break;
95
+ }
96
+ return chunks;
97
+ }
98
+ /**
99
+ * Simple keyword-based search (fallback when no LLM)
100
+ */
101
+ function keywordSearch(query, files) {
102
+ const matches = [];
103
+ const queryWords = query.toLowerCase().split(/\s+/).filter(Boolean);
104
+ for (const file of files) {
105
+ const lines = file.content.split('\n');
106
+ const contentLower = file.content.toLowerCase();
107
+ // Calculate relevance score
108
+ let score = 0;
109
+ for (const word of queryWords) {
110
+ const count = (contentLower.match(new RegExp(word, 'g')) || []).length;
111
+ score += count;
112
+ }
113
+ if (score > 0) {
114
+ // Find best matching snippet
115
+ for (let i = 0; i < lines.length; i++) {
116
+ const currentLine = lines[i];
117
+ if (!currentLine)
118
+ continue;
119
+ const lineLower = currentLine.toLowerCase();
120
+ const lineScore = queryWords.filter(word => lineLower.includes(word)).length;
121
+ if (lineScore > 0) {
122
+ const contextStart = Math.max(0, i - 2);
123
+ const contextEnd = Math.min(lines.length, i + 3);
124
+ matches.push({
125
+ filePath: file.path,
126
+ snippet: currentLine,
127
+ context: lines.slice(contextStart, contextEnd).join('\n'),
128
+ similarity: lineScore / queryWords.length,
129
+ explanation: `Contains keywords: ${queryWords.join(', ')}`,
130
+ lineStart: i + 1,
131
+ lineEnd: i + 1,
132
+ matchType: 'partial',
133
+ metadata: {
134
+ language: extname(file.path).substring(1),
135
+ fileSize: file.content.length,
136
+ lastModified: new Date(),
137
+ category: detectCategory(currentLine),
138
+ },
139
+ });
140
+ }
141
+ }
142
+ }
143
+ }
144
+ return matches.sort((a, b) => b.similarity - a.similarity);
145
+ }
146
+ /**
147
+ * Detect code category from line
148
+ */
149
+ function detectCategory(line) {
150
+ const trimmed = line.trim();
151
+ if (trimmed.startsWith('function ') || trimmed.includes('=> '))
152
+ return 'function';
153
+ if (trimmed.startsWith('class '))
154
+ return 'class';
155
+ if (trimmed.startsWith('interface '))
156
+ return 'interface';
157
+ if (trimmed.startsWith('type '))
158
+ return 'type';
159
+ if (trimmed.startsWith('import ') || trimmed.startsWith('from '))
160
+ return 'import';
161
+ if (trimmed.startsWith('//') || trimmed.startsWith('/*') || trimmed.startsWith('*'))
162
+ return 'comment';
163
+ return 'variable';
164
+ }
165
+ /**
166
+ * Build simple knowledge graph
167
+ */
168
+ function buildKnowledgeGraph(files) {
169
+ const nodes = [];
170
+ const edges = [];
171
+ // Extract imports and exports
172
+ for (const file of files) {
173
+ const lines = file.content.split('\n');
174
+ for (let i = 0; i < lines.length; i++) {
175
+ const currentLine = lines[i];
176
+ if (!currentLine)
177
+ continue;
178
+ const line = currentLine.trim();
179
+ // Detect imports
180
+ const importMatch = line.match(/import\s+.*\s+from\s+['"](.+)['"]/);
181
+ if (importMatch && importMatch[1]) {
182
+ edges.push({
183
+ from: file.path,
184
+ to: importMatch[1],
185
+ type: 'imports',
186
+ weight: 1,
187
+ });
188
+ }
189
+ // Detect function definitions
190
+ const funcMatch = line.match(/(?:function|const|let|var)\s+(\w+)/);
191
+ if (funcMatch && funcMatch[1]) {
192
+ nodes.push({
193
+ id: `${file.path}:${funcMatch[1]}`,
194
+ label: funcMatch[1],
195
+ type: 'function',
196
+ filePath: file.path,
197
+ importance: 0.5,
198
+ });
199
+ }
200
+ // Detect class definitions
201
+ const classMatch = line.match(/class\s+(\w+)/);
202
+ if (classMatch && classMatch[1]) {
203
+ nodes.push({
204
+ id: `${file.path}:${classMatch[1]}`,
205
+ label: classMatch[1],
206
+ type: 'class',
207
+ filePath: file.path,
208
+ importance: 0.8,
209
+ });
210
+ }
211
+ }
212
+ }
213
+ return {
214
+ nodes,
215
+ edges,
216
+ clusters: [],
217
+ };
218
+ }
219
+ // ============================================================================
220
+ // Main RAG Search Function
221
+ // ============================================================================
222
+ /**
223
+ * RAG-powered semantic code search
224
+ */
225
+ export async function searchCodebase(options) {
226
+ const timer = createTimer();
227
+ const { projectPath, query, searchType = 'hybrid', maxResults = 10, minSimilarity = 0.3, fileTypes = ['.ts', '.tsx', '.js', '.jsx', '.py', '.java', '.go', '.rs'], excludePaths = ['node_modules', 'dist', 'build', '.git'], includeTests = false, includeDocs = true, chunkSize = 50, overlapSize = 5, useCache = true, } = RAGSearchOptionsSchema.parse(options);
228
+ logger.info({ query, projectPath, searchType }, 'Starting RAG code search');
229
+ // Find all source files
230
+ const files = await findSourceFiles(projectPath, fileTypes, excludePaths);
231
+ logger.info({ fileCount: files.length }, 'Source files indexed');
232
+ // Load file contents
233
+ const fileContents = await Promise.all(files.slice(0, 100).map(async (path) => ({
234
+ path,
235
+ content: await fs.readFile(path, 'utf-8').catch(() => ''),
236
+ })));
237
+ let results = [];
238
+ let semanticSearch = false;
239
+ // Try semantic search with LLM
240
+ if (!isNoLLMMode() && (searchType === 'semantic' || searchType === 'hybrid')) {
241
+ try {
242
+ const provider = await getActiveProvider();
243
+ semanticSearch = true;
244
+ // Use LLM to understand the query and find relevant code
245
+ const prompt = `You are a code search expert. Find code snippets that match this query: "${query}"
246
+
247
+ Available files (showing first 5):
248
+ ${fileContents.slice(0, 5).map(f => `\n--- ${f.path} ---\n${f.content.substring(0, 500)}...`).join('\n')}
249
+
250
+ Identify the TOP 5 most relevant code snippets. For each match, provide:
251
+ 1. File path
252
+ 2. Line numbers (estimate)
253
+ 3. Similarity score (0-1)
254
+ 4. Brief explanation of why it matches
255
+
256
+ Format as JSON array:
257
+ [
258
+ {
259
+ "filePath": "path/to/file.ts",
260
+ "lineStart": 10,
261
+ "lineEnd": 15,
262
+ "similarity": 0.95,
263
+ "explanation": "This function handles user authentication"
264
+ }
265
+ ]`;
266
+ const response = await provider.complete(prompt, {
267
+ temperature: 0.2,
268
+ maxTokens: 1000,
269
+ });
270
+ // Parse LLM response
271
+ const jsonMatch = response.text.match(/\[[\s\S]*\]/);
272
+ if (jsonMatch) {
273
+ const llmResults = JSON.parse(jsonMatch[0]);
274
+ for (const result of llmResults) {
275
+ const fileContent = fileContents.find(f => f.path.includes(result.filePath));
276
+ if (fileContent) {
277
+ const lines = fileContent.content.split('\n');
278
+ const snippet = lines.slice(result.lineStart - 1, result.lineEnd).join('\n');
279
+ const contextStart = Math.max(0, result.lineStart - 3);
280
+ const contextEnd = Math.min(lines.length, result.lineEnd + 3);
281
+ results.push({
282
+ filePath: fileContent.path,
283
+ snippet,
284
+ context: lines.slice(contextStart, contextEnd).join('\n'),
285
+ similarity: result.similarity || 0.7,
286
+ explanation: result.explanation || '',
287
+ lineStart: result.lineStart || 1,
288
+ lineEnd: result.lineEnd || 1,
289
+ matchType: 'semantic',
290
+ metadata: {
291
+ language: extname(fileContent.path).substring(1),
292
+ fileSize: fileContent.content.length,
293
+ lastModified: new Date(),
294
+ category: 'function',
295
+ },
296
+ });
297
+ }
298
+ }
299
+ }
300
+ }
301
+ catch (error) {
302
+ logger.warn({ error }, 'Semantic search failed, falling back to keyword search');
303
+ }
304
+ }
305
+ // Fallback to keyword search
306
+ if (results.length === 0 || searchType === 'keyword' || searchType === 'hybrid') {
307
+ const keywordResults = keywordSearch(query, fileContents);
308
+ results = results.concat(keywordResults);
309
+ }
310
+ // Remove duplicates and apply filters
311
+ const uniqueResults = Array.from(new Map(results.map(r => [`${r.filePath}:${r.lineStart}`, r])).values());
312
+ const filteredResults = uniqueResults
313
+ .filter(r => r.similarity >= minSimilarity)
314
+ .sort((a, b) => b.similarity - a.similarity)
315
+ .slice(0, maxResults);
316
+ // Build knowledge graph
317
+ const knowledgeGraph = buildKnowledgeGraph(fileContents);
318
+ const searchTimeMs = timer.elapsed();
319
+ logger.info({
320
+ matches: filteredResults.length,
321
+ semanticSearch,
322
+ searchTimeMs
323
+ }, 'RAG search completed');
324
+ return {
325
+ query,
326
+ results: filteredResults,
327
+ totalMatches: uniqueResults.length,
328
+ searchTimeMs,
329
+ indexedFiles: files.length,
330
+ semanticSearch,
331
+ knowledgeGraph,
332
+ };
333
+ }
334
+ // ============================================================================
335
+ // Export
336
+ // ============================================================================
337
+ export default searchCodebase;
338
+ //# sourceMappingURL=rag-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rag-search.js","sourceRoot":"","sources":["../../src/tools/rag-search.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "atlas-pipeline-mcp",
3
- "version": "1.0.21",
3
+ "version": "1.0.22",
4
4
  "mcpName": "io.github.IamNishant51/atlas-pipeline",
5
- "description": "Model Context Protocol server with multi-stage AI pipeline - works with any LLM provider (Ollama, OpenAI, Anthropic). Compatible with Cursor, GitHub Copilot, Windsurf, and more. Features 15 tools including security scanning, test generation, code explanation, debugging assistance, and advanced sequential thinking.",
5
+ "description": "Advanced AI/ML-powered MCP server with RAG search, ML bug prediction, intelligent code migration, and advanced test generation. Works with any LLM (Ollama, OpenAI, Anthropic). 13 professional tools + 4 cutting-edge AI/ML tools. Compatible with Cursor, Windsurf, Claude Desktop.",
6
6
  "main": "dist/server.js",
7
7
  "bin": {
8
8
  "atlas-pipeline-mcp": "./dist/mcp.js",