code-auditor-mcp 1.1.0 → 1.1.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/dist/mcp-standalone.js +60 -49
- package/dist/mcp-standalone.js.map +1 -1
- package/package.json +15 -14
package/dist/mcp-standalone.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
5
|
-
import {
|
|
5
|
+
import { createAuditRunner } from './auditRunner.js';
|
|
6
6
|
import path from 'node:path';
|
|
7
7
|
import chalk from 'chalk';
|
|
8
8
|
const tools = [
|
|
@@ -33,41 +33,25 @@ const tools = [
|
|
|
33
33
|
],
|
|
34
34
|
},
|
|
35
35
|
];
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (code !== 0) {
|
|
56
|
-
reject(new Error(`Command failed with exit code ${code}: ${stderr}`));
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
try {
|
|
60
|
-
// Try to parse as JSON first
|
|
61
|
-
const result = JSON.parse(stdout);
|
|
62
|
-
resolve(result);
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
// If not JSON, return as text
|
|
66
|
-
resolve({ output: stdout, stderr });
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
});
|
|
36
|
+
function getAllViolations(result) {
|
|
37
|
+
const violations = [];
|
|
38
|
+
for (const [analyzerName, analyzerResult] of Object.entries(result.analyzerResults)) {
|
|
39
|
+
for (const violation of analyzerResult.violations) {
|
|
40
|
+
violations.push({
|
|
41
|
+
...violation,
|
|
42
|
+
analyzer: analyzerName,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return violations;
|
|
47
|
+
}
|
|
48
|
+
function calculateHealthScore(result) {
|
|
49
|
+
let score = 100;
|
|
50
|
+
const critical = result.summary.criticalIssues;
|
|
51
|
+
const warning = result.summary.warnings;
|
|
52
|
+
score -= critical * 10;
|
|
53
|
+
score -= warning * 2;
|
|
54
|
+
return Math.max(0, Math.min(100, score));
|
|
71
55
|
}
|
|
72
56
|
async function startMcpServer() {
|
|
73
57
|
const server = new Server({
|
|
@@ -107,27 +91,54 @@ async function startMcpServer() {
|
|
|
107
91
|
let result;
|
|
108
92
|
switch (name) {
|
|
109
93
|
case 'audit_run': {
|
|
110
|
-
const auditPath = args.path || process.cwd();
|
|
111
|
-
|
|
94
|
+
const auditPath = path.resolve(args.path || process.cwd());
|
|
95
|
+
const options = {
|
|
96
|
+
projectRoot: auditPath,
|
|
97
|
+
enabledAnalyzers: ['solid', 'dry'],
|
|
98
|
+
verbose: false,
|
|
99
|
+
};
|
|
100
|
+
const runner = createAuditRunner(options);
|
|
101
|
+
const auditResult = await runner.run();
|
|
102
|
+
// Format for MCP
|
|
103
|
+
result = {
|
|
104
|
+
summary: {
|
|
105
|
+
totalViolations: auditResult.summary.totalViolations,
|
|
106
|
+
criticalIssues: auditResult.summary.criticalIssues,
|
|
107
|
+
warnings: auditResult.summary.warnings,
|
|
108
|
+
suggestions: auditResult.summary.suggestions,
|
|
109
|
+
filesAnalyzed: auditResult.metadata.filesAnalyzed,
|
|
110
|
+
executionTime: auditResult.metadata.auditDuration,
|
|
111
|
+
healthScore: calculateHealthScore(auditResult),
|
|
112
|
+
},
|
|
113
|
+
violations: getAllViolations(auditResult).slice(0, 100), // Limit to first 100
|
|
114
|
+
recommendations: auditResult.recommendations,
|
|
115
|
+
};
|
|
112
116
|
break;
|
|
113
117
|
}
|
|
114
118
|
case 'audit_check_health': {
|
|
115
|
-
const auditPath = args.path || process.cwd();
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const
|
|
119
|
+
const auditPath = path.resolve(args.path || process.cwd());
|
|
120
|
+
const runner = createAuditRunner({
|
|
121
|
+
projectRoot: auditPath,
|
|
122
|
+
enabledAnalyzers: ['solid', 'dry'],
|
|
123
|
+
minSeverity: 'warning',
|
|
124
|
+
verbose: false,
|
|
125
|
+
});
|
|
126
|
+
const auditResult = await runner.run();
|
|
127
|
+
const healthScore = calculateHealthScore(auditResult);
|
|
123
128
|
result = {
|
|
124
129
|
healthScore,
|
|
130
|
+
threshold: 70,
|
|
131
|
+
passed: healthScore >= 70,
|
|
125
132
|
status: healthScore >= 70 ? 'healthy' : 'needs-attention',
|
|
126
133
|
metrics: {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
134
|
+
filesAnalyzed: auditResult.metadata.filesAnalyzed,
|
|
135
|
+
totalViolations: auditResult.summary.totalViolations,
|
|
136
|
+
criticalViolations: auditResult.summary.criticalIssues,
|
|
137
|
+
warningViolations: auditResult.summary.warnings,
|
|
130
138
|
},
|
|
139
|
+
recommendation: healthScore >= 90 ? 'Excellent code health!' :
|
|
140
|
+
healthScore >= 70 ? 'Good code health with room for improvement' :
|
|
141
|
+
'Code health needs attention - run detailed audit',
|
|
131
142
|
};
|
|
132
143
|
break;
|
|
133
144
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-standalone.js","sourceRoot":"","sources":["../src/mcp-standalone.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mcp-standalone.js","sourceRoot":"","sources":["../src/mcp-standalone.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "code-auditor-mcp",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "TypeScript/JavaScript code quality auditor with MCP server - Analyze code for SOLID principles, DRY violations, security patterns, and more",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,6 +9,19 @@
|
|
|
9
9
|
"code-audit": "./dist/cli.js",
|
|
10
10
|
"code-auditor-mcp": "./dist/mcp-standalone.js"
|
|
11
11
|
},
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"watch": "tsc --watch",
|
|
15
|
+
"dev": "tsx src/cli.ts",
|
|
16
|
+
"dev:server": "tsx --watch src/cli.ts start --rest-api",
|
|
17
|
+
"audit": "node dist/cli.js",
|
|
18
|
+
"start": "node dist/mcp-standalone.js",
|
|
19
|
+
"start:rest": "node dist/cli.js start --rest-api",
|
|
20
|
+
"generate": "node dist/cli.js generate-config",
|
|
21
|
+
"prepublishOnly": "npm run build",
|
|
22
|
+
"test": "vitest",
|
|
23
|
+
"test:watch": "vitest watch"
|
|
24
|
+
},
|
|
12
25
|
"keywords": [
|
|
13
26
|
"audit",
|
|
14
27
|
"code-quality",
|
|
@@ -66,17 +79,5 @@
|
|
|
66
79
|
"bugs": {
|
|
67
80
|
"url": "https://github.com/code-auditor/code-auditor/issues"
|
|
68
81
|
},
|
|
69
|
-
"homepage": "https://github.com/code-auditor/code-auditor#readme"
|
|
70
|
-
"scripts": {
|
|
71
|
-
"build": "tsc",
|
|
72
|
-
"watch": "tsc --watch",
|
|
73
|
-
"dev": "tsx src/cli.ts",
|
|
74
|
-
"dev:server": "tsx --watch src/cli.ts start --rest-api",
|
|
75
|
-
"audit": "node dist/cli.js",
|
|
76
|
-
"start": "node dist/mcp-standalone.js",
|
|
77
|
-
"start:rest": "node dist/cli.js start --rest-api",
|
|
78
|
-
"generate": "node dist/cli.js generate-config",
|
|
79
|
-
"test": "vitest",
|
|
80
|
-
"test:watch": "vitest watch"
|
|
81
|
-
}
|
|
82
|
+
"homepage": "https://github.com/code-auditor/code-auditor#readme"
|
|
82
83
|
}
|