@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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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
+ }