@giauphan/codeatlas-mcp 1.0.0
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/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +277 -0
- package/dist/index.js.map +1 -0
- package/package.json +54 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import * as fs from "fs";
|
|
6
|
+
import * as path from "path";
|
|
7
|
+
// Auto-discover all projects with .codeatlas/analysis.json
|
|
8
|
+
function discoverProjects() {
|
|
9
|
+
const projects = [];
|
|
10
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || "/home";
|
|
11
|
+
// Scan directories for .codeatlas/analysis.json
|
|
12
|
+
const searchDirs = [];
|
|
13
|
+
// Add env var project if specified
|
|
14
|
+
if (process.env.CODEATLAS_PROJECT_DIR) {
|
|
15
|
+
searchDirs.push(process.env.CODEATLAS_PROJECT_DIR);
|
|
16
|
+
}
|
|
17
|
+
// Add cwd
|
|
18
|
+
searchDirs.push(process.cwd());
|
|
19
|
+
// Scan home directory children (max depth 2)
|
|
20
|
+
try {
|
|
21
|
+
const homeDirs = fs.readdirSync(homeDir);
|
|
22
|
+
for (const d of homeDirs) {
|
|
23
|
+
if (d.startsWith("."))
|
|
24
|
+
continue;
|
|
25
|
+
const fullPath = path.join(homeDir, d);
|
|
26
|
+
try {
|
|
27
|
+
if (fs.statSync(fullPath).isDirectory()) {
|
|
28
|
+
searchDirs.push(fullPath);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch { /* skip */ }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch { /* skip */ }
|
|
35
|
+
// Check each directory for .codeatlas/analysis.json
|
|
36
|
+
const seen = new Set();
|
|
37
|
+
for (const dir of searchDirs) {
|
|
38
|
+
const analysisPath = path.join(dir, ".codeatlas", "analysis.json");
|
|
39
|
+
if (seen.has(analysisPath))
|
|
40
|
+
continue;
|
|
41
|
+
seen.add(analysisPath);
|
|
42
|
+
if (fs.existsSync(analysisPath)) {
|
|
43
|
+
try {
|
|
44
|
+
const stat = fs.statSync(analysisPath);
|
|
45
|
+
projects.push({
|
|
46
|
+
name: path.basename(dir),
|
|
47
|
+
dir,
|
|
48
|
+
analysisPath,
|
|
49
|
+
modifiedAt: stat.mtime,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch { /* skip */ }
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Sort by most recently modified
|
|
56
|
+
projects.sort((a, b) => b.modifiedAt.getTime() - a.modifiedAt.getTime());
|
|
57
|
+
return projects;
|
|
58
|
+
}
|
|
59
|
+
function loadAnalysis(projectDir) {
|
|
60
|
+
const projects = discoverProjects();
|
|
61
|
+
if (projects.length === 0)
|
|
62
|
+
return null;
|
|
63
|
+
let target = projects[0]; // default: most recently modified
|
|
64
|
+
if (projectDir) {
|
|
65
|
+
const match = projects.find((p) => p.dir === projectDir || p.name.toLowerCase() === projectDir.toLowerCase());
|
|
66
|
+
if (match)
|
|
67
|
+
target = match;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const data = fs.readFileSync(target.analysisPath, "utf-8");
|
|
71
|
+
return { analysis: JSON.parse(data), projectName: target.name, projectDir: target.dir };
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Create MCP server
|
|
78
|
+
const server = new McpServer({
|
|
79
|
+
name: "codeatlas",
|
|
80
|
+
version: "1.2.2",
|
|
81
|
+
});
|
|
82
|
+
// Tool 0: List all discovered projects
|
|
83
|
+
server.tool("list_projects", "List all projects that have been analyzed by CodeAtlas. Returns project names, paths, and last analysis time.", {}, async () => {
|
|
84
|
+
const projects = discoverProjects();
|
|
85
|
+
if (projects.length === 0) {
|
|
86
|
+
return { content: [{ type: "text", text: "No analyzed projects found. Run 'CodeAtlas: Analyze Project' in VS Code first." }] };
|
|
87
|
+
}
|
|
88
|
+
const result = {
|
|
89
|
+
projectCount: projects.length,
|
|
90
|
+
projects: projects.map((p) => ({
|
|
91
|
+
name: p.name,
|
|
92
|
+
path: p.dir,
|
|
93
|
+
lastAnalyzed: p.modifiedAt.toISOString(),
|
|
94
|
+
})),
|
|
95
|
+
};
|
|
96
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
97
|
+
});
|
|
98
|
+
// Tool 1: Get project structure
|
|
99
|
+
server.tool("get_project_structure", "Get all modules, classes, functions, and variables in the analyzed project. Returns entity type, name, file path, and line number.", {
|
|
100
|
+
project: z.string().optional().describe("Project name or path (auto-detects if omitted)"),
|
|
101
|
+
type: z.enum(["all", "module", "class", "function", "variable"]).optional().describe("Filter by entity type"),
|
|
102
|
+
limit: z.number().optional().describe("Max results to return (default: 100)"),
|
|
103
|
+
}, async ({ project, type, limit }) => {
|
|
104
|
+
const loaded = loadAnalysis(project);
|
|
105
|
+
if (!loaded) {
|
|
106
|
+
return { content: [{ type: "text", text: "No analysis data found. Run 'CodeAtlas: Analyze Project' in VS Code first." }] };
|
|
107
|
+
}
|
|
108
|
+
let nodes = loaded.analysis.graph.nodes;
|
|
109
|
+
if (type && type !== "all") {
|
|
110
|
+
nodes = nodes.filter((n) => n.type === type);
|
|
111
|
+
}
|
|
112
|
+
const maxResults = limit || 100;
|
|
113
|
+
const truncated = nodes.length > maxResults;
|
|
114
|
+
nodes = nodes.slice(0, maxResults);
|
|
115
|
+
const result = {
|
|
116
|
+
project: loaded.projectName,
|
|
117
|
+
projectDir: loaded.projectDir,
|
|
118
|
+
total: loaded.analysis.graph.nodes.length,
|
|
119
|
+
showing: nodes.length,
|
|
120
|
+
truncated,
|
|
121
|
+
stats: loaded.analysis.stats,
|
|
122
|
+
entities: nodes.map((n) => ({
|
|
123
|
+
name: n.label,
|
|
124
|
+
type: n.type,
|
|
125
|
+
filePath: n.filePath || null,
|
|
126
|
+
line: n.line || null,
|
|
127
|
+
})),
|
|
128
|
+
};
|
|
129
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
130
|
+
});
|
|
131
|
+
// Tool 2: Get dependencies
|
|
132
|
+
server.tool("get_dependencies", "Get import/call/containment relationships between entities. Shows how modules, classes, and functions are connected.", {
|
|
133
|
+
project: z.string().optional().describe("Project name or path"),
|
|
134
|
+
source: z.string().optional().describe("Filter by source entity name"),
|
|
135
|
+
target: z.string().optional().describe("Filter by target entity name"),
|
|
136
|
+
relationship: z.enum(["all", "import", "call", "contains"]).optional().describe("Filter by relationship type"),
|
|
137
|
+
limit: z.number().optional().describe("Max results (default: 100)"),
|
|
138
|
+
}, async ({ project, source, target, relationship, limit }) => {
|
|
139
|
+
const loaded = loadAnalysis(project);
|
|
140
|
+
if (!loaded) {
|
|
141
|
+
return { content: [{ type: "text", text: "No analysis data found. Run 'CodeAtlas: Analyze Project' first." }] };
|
|
142
|
+
}
|
|
143
|
+
const nodeMap = new Map(loaded.analysis.graph.nodes.map((n) => [n.id, n.label]));
|
|
144
|
+
let links = loaded.analysis.graph.links;
|
|
145
|
+
if (relationship && relationship !== "all") {
|
|
146
|
+
links = links.filter((l) => l.type === relationship);
|
|
147
|
+
}
|
|
148
|
+
if (source) {
|
|
149
|
+
links = links.filter((l) => {
|
|
150
|
+
const label = nodeMap.get(l.source) || l.source;
|
|
151
|
+
return label.toLowerCase().includes(source.toLowerCase());
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
if (target) {
|
|
155
|
+
links = links.filter((l) => {
|
|
156
|
+
const label = nodeMap.get(l.target) || l.target;
|
|
157
|
+
return label.toLowerCase().includes(target.toLowerCase());
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
const maxResults = limit || 100;
|
|
161
|
+
const truncated = links.length > maxResults;
|
|
162
|
+
links = links.slice(0, maxResults);
|
|
163
|
+
const result = {
|
|
164
|
+
total: loaded.analysis.graph.links.length,
|
|
165
|
+
showing: links.length,
|
|
166
|
+
truncated,
|
|
167
|
+
dependencies: links.map((l) => ({
|
|
168
|
+
source: nodeMap.get(l.source) || l.source,
|
|
169
|
+
target: nodeMap.get(l.target) || l.target,
|
|
170
|
+
type: l.type,
|
|
171
|
+
})),
|
|
172
|
+
};
|
|
173
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
174
|
+
});
|
|
175
|
+
// Tool 3: Get AI insights
|
|
176
|
+
server.tool("get_insights", "Get AI-generated code insights including refactoring suggestions, security issues, and maintainability analysis.", {}, async () => {
|
|
177
|
+
const loaded = loadAnalysis();
|
|
178
|
+
if (!loaded) {
|
|
179
|
+
return { content: [{ type: "text", text: "No analysis data found. Run 'CodeAtlas: Analyze Project' first." }] };
|
|
180
|
+
}
|
|
181
|
+
const result = {
|
|
182
|
+
project: loaded.projectName,
|
|
183
|
+
stats: loaded.analysis.stats,
|
|
184
|
+
insights: loaded.analysis.insights,
|
|
185
|
+
};
|
|
186
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
187
|
+
});
|
|
188
|
+
// Tool 4: Search entities
|
|
189
|
+
server.tool("search_entities", "Search for functions, classes, modules, or variables by name. Supports fuzzy matching.", {
|
|
190
|
+
project: z.string().optional().describe("Project name or path"),
|
|
191
|
+
query: z.string().describe("Search query (case-insensitive, partial match)"),
|
|
192
|
+
type: z.enum(["all", "module", "class", "function", "variable"]).optional().describe("Filter by entity type"),
|
|
193
|
+
}, async ({ project, query, type }) => {
|
|
194
|
+
const loaded = loadAnalysis(project);
|
|
195
|
+
if (!loaded) {
|
|
196
|
+
return { content: [{ type: "text", text: "No analysis data found. Run 'CodeAtlas: Analyze Project' first." }] };
|
|
197
|
+
}
|
|
198
|
+
let nodes = loaded.analysis.graph.nodes;
|
|
199
|
+
if (type && type !== "all") {
|
|
200
|
+
nodes = nodes.filter((n) => n.type === type);
|
|
201
|
+
}
|
|
202
|
+
const q = query.toLowerCase();
|
|
203
|
+
const matches = nodes.filter((n) => n.label.toLowerCase().includes(q));
|
|
204
|
+
// For each match, find its relationships
|
|
205
|
+
const links = loaded.analysis.graph.links;
|
|
206
|
+
const nodeMap = new Map(loaded.analysis.graph.nodes.map((n) => [n.id, n.label]));
|
|
207
|
+
const result = {
|
|
208
|
+
query,
|
|
209
|
+
matchCount: matches.length,
|
|
210
|
+
results: matches.slice(0, 50).map((n) => {
|
|
211
|
+
const incomingLinks = links
|
|
212
|
+
.filter((l) => l.target === n.id)
|
|
213
|
+
.map((l) => ({ from: nodeMap.get(l.source) || l.source, type: l.type }));
|
|
214
|
+
const outgoingLinks = links
|
|
215
|
+
.filter((l) => l.source === n.id)
|
|
216
|
+
.map((l) => ({ to: nodeMap.get(l.target) || l.target, type: l.type }));
|
|
217
|
+
return {
|
|
218
|
+
name: n.label,
|
|
219
|
+
type: n.type,
|
|
220
|
+
filePath: n.filePath || null,
|
|
221
|
+
line: n.line || null,
|
|
222
|
+
incomingRelationships: incomingLinks,
|
|
223
|
+
outgoingRelationships: outgoingLinks,
|
|
224
|
+
};
|
|
225
|
+
}),
|
|
226
|
+
};
|
|
227
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
228
|
+
});
|
|
229
|
+
// Tool 5: Get file entities
|
|
230
|
+
server.tool("get_file_entities", "Get all entities (classes, functions, variables) defined in a specific file.", {
|
|
231
|
+
project: z.string().optional().describe("Project name or path"),
|
|
232
|
+
filePath: z.string().describe("File path (partial match, e.g. 'User.php' or 'src/models')"),
|
|
233
|
+
}, async ({ project, filePath }) => {
|
|
234
|
+
const loaded = loadAnalysis(project);
|
|
235
|
+
if (!loaded) {
|
|
236
|
+
return { content: [{ type: "text", text: "No analysis data found. Run 'CodeAtlas: Analyze Project' first." }] };
|
|
237
|
+
}
|
|
238
|
+
const q = filePath.toLowerCase().replace(/\\/g, "/");
|
|
239
|
+
const matches = loaded.analysis.graph.nodes.filter((n) => {
|
|
240
|
+
const fp = (n.filePath || n.id).toLowerCase().replace(/\\/g, "/");
|
|
241
|
+
return fp.includes(q);
|
|
242
|
+
});
|
|
243
|
+
const links = loaded.analysis.graph.links;
|
|
244
|
+
const nodeMap = new Map(loaded.analysis.graph.nodes.map((n) => [n.id, n.label]));
|
|
245
|
+
// Group by file
|
|
246
|
+
const byFile = new Map();
|
|
247
|
+
for (const n of matches) {
|
|
248
|
+
const fp = n.filePath || "unknown";
|
|
249
|
+
if (!byFile.has(fp))
|
|
250
|
+
byFile.set(fp, []);
|
|
251
|
+
byFile.get(fp).push(n);
|
|
252
|
+
}
|
|
253
|
+
const result = {
|
|
254
|
+
query: filePath,
|
|
255
|
+
filesFound: byFile.size,
|
|
256
|
+
files: Array.from(byFile.entries()).map(([fp, entities]) => ({
|
|
257
|
+
filePath: fp,
|
|
258
|
+
entities: entities.map((e) => ({
|
|
259
|
+
name: e.label,
|
|
260
|
+
type: e.type,
|
|
261
|
+
line: e.line || null,
|
|
262
|
+
dependencies: links
|
|
263
|
+
.filter((l) => l.source === e.id)
|
|
264
|
+
.map((l) => ({ to: nodeMap.get(l.target) || l.target, type: l.type })),
|
|
265
|
+
})),
|
|
266
|
+
})),
|
|
267
|
+
};
|
|
268
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
269
|
+
});
|
|
270
|
+
// Start server
|
|
271
|
+
async function main() {
|
|
272
|
+
const transport = new StdioServerTransport();
|
|
273
|
+
await server.connect(transport);
|
|
274
|
+
console.error("CodeAtlas MCP server running on stdio");
|
|
275
|
+
}
|
|
276
|
+
main().catch(console.error);
|
|
277
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@giauphan/codeatlas-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for CodeAtlas — exposes code analysis data to AI assistants via Model Context Protocol",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"codeatlas-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/",
|
|
12
|
+
"README.md",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"start": "node dist/index.js",
|
|
18
|
+
"dev": "npx tsx index.ts",
|
|
19
|
+
"prepublishOnly": "npm run build"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"mcp",
|
|
23
|
+
"model-context-protocol",
|
|
24
|
+
"codeatlas",
|
|
25
|
+
"code-analysis",
|
|
26
|
+
"ai",
|
|
27
|
+
"vscode",
|
|
28
|
+
"cursor",
|
|
29
|
+
"codebase",
|
|
30
|
+
"architecture",
|
|
31
|
+
"dependencies"
|
|
32
|
+
],
|
|
33
|
+
"author": "GiauPhan <zero99ck9@gmail.com>",
|
|
34
|
+
"license": "MIT",
|
|
35
|
+
"repository": {
|
|
36
|
+
"type": "git",
|
|
37
|
+
"url": "https://github.com/giauphan/codeatlas-mcp.git"
|
|
38
|
+
},
|
|
39
|
+
"bugs": {
|
|
40
|
+
"url": "https://github.com/giauphan/codeatlas-mcp/issues"
|
|
41
|
+
},
|
|
42
|
+
"homepage": "https://github.com/giauphan/codeatlas-mcp#readme",
|
|
43
|
+
"engines": {
|
|
44
|
+
"node": ">=18.0.0"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
48
|
+
"zod": "^3.24.4"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "^18.0.0",
|
|
52
|
+
"typescript": "^5.1.6"
|
|
53
|
+
}
|
|
54
|
+
}
|