@guardrail-ai/mcp 0.1.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/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # @guardrail-ai/mcp
2
+
3
+ Model Context Protocol (MCP) server for Guardrail. Use Guardrail as a Claude Code plugin or with any MCP-compatible AI assistant.
4
+
5
+ ## Setup with Claude Code
6
+
7
+ Add to your Claude Code settings (`.claude/settings.json`):
8
+
9
+ ```json
10
+ {
11
+ "mcpServers": {
12
+ "guardrail": {
13
+ "command": "npx",
14
+ "args": ["@guardrail-ai/mcp"]
15
+ }
16
+ }
17
+ }
18
+ ```
19
+
20
+ ## Available Tools
21
+
22
+ ### guardrail_scan
23
+ Scan a directory or file for issues.
24
+
25
+ ### guardrail_fix
26
+ Auto-fix detected issues (dry-run by default).
27
+
28
+ ### guardrail_list_rules
29
+ List all 19 built-in detection rules.
@@ -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":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
5
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
6
+ const zod_1 = require("zod");
7
+ const core_1 = require("@guardrail-ai/core");
8
+ const rules_1 = require("@guardrail-ai/rules");
9
+ const fixer_1 = require("@guardrail-ai/fixer");
10
+ const server = new mcp_js_1.McpServer({
11
+ name: 'guardrail',
12
+ version: '0.1.0',
13
+ });
14
+ // ── Tool: scan ──────────────────────────────────────────────────────────────
15
+ server.tool('guardrail_scan', 'Scan a directory or file for security issues, performance problems, bad patterns, and AI-generated code anti-patterns. Returns structured violations with file, line, severity, and rule ID.', {
16
+ target: zod_1.z.string().describe('Path to a file or directory to scan'),
17
+ severity: zod_1.z
18
+ .enum(['critical', 'high', 'warning', 'info'])
19
+ .optional()
20
+ .describe('Minimum severity threshold (default: info)'),
21
+ }, async ({ target, severity }) => {
22
+ const engine = new core_1.GuardrailEngine({
23
+ severityThreshold: severity ?? 'info',
24
+ });
25
+ engine.registerRules(rules_1.builtinRules);
26
+ const summary = await engine.scan(target);
27
+ const lines = [];
28
+ lines.push(`Scanned ${summary.totalFiles} files. Found ${summary.totalViolations} issues.`);
29
+ lines.push(` Critical: ${summary.bySeverity.critical}, High: ${summary.bySeverity.high}, Warning: ${summary.bySeverity.warning}, Info: ${summary.bySeverity.info}`);
30
+ lines.push('');
31
+ for (const result of summary.results) {
32
+ if (result.violations.length === 0)
33
+ continue;
34
+ lines.push(`${result.filePath}:`);
35
+ for (const v of result.violations) {
36
+ const fix = v.fix ? ' (fixable)' : '';
37
+ lines.push(` ${v.severity.toUpperCase()} ${v.location.line}:${v.location.column} ${v.message} [${v.ruleId}]${fix}`);
38
+ }
39
+ lines.push('');
40
+ }
41
+ return {
42
+ content: [{ type: 'text', text: lines.join('\n') }],
43
+ };
44
+ });
45
+ // ── Tool: fix ───────────────────────────────────────────────────────────────
46
+ server.tool('guardrail_fix', 'Auto-fix detected issues in a directory or file using AST transformations. Returns diffs of applied changes.', {
47
+ target: zod_1.z.string().describe('Path to a file or directory to fix'),
48
+ dryRun: zod_1.z
49
+ .boolean()
50
+ .optional()
51
+ .describe('If true, show diffs without applying changes (default: true)'),
52
+ }, async ({ target, dryRun = true }) => {
53
+ const engine = new core_1.GuardrailEngine();
54
+ engine.registerRules(rules_1.builtinRules);
55
+ const summary = await engine.scan(target);
56
+ const fixer = new fixer_1.FixerEngine();
57
+ const lines = [];
58
+ let totalFixed = 0;
59
+ for (const result of summary.results) {
60
+ const fixable = result.violations.filter((v) => v.fix);
61
+ if (fixable.length === 0)
62
+ continue;
63
+ const fixResult = await fixer.applyFixes(result.filePath, result.violations, !dryRun);
64
+ if (fixResult.applied > 0) {
65
+ totalFixed += fixResult.applied;
66
+ if (fixResult.diff) {
67
+ lines.push(fixResult.diff);
68
+ }
69
+ }
70
+ }
71
+ if (totalFixed === 0) {
72
+ lines.push('No auto-fixable issues found.');
73
+ }
74
+ else {
75
+ const action = dryRun ? 'would fix' : 'fixed';
76
+ lines.push(`\n${totalFixed} issues ${action}.`);
77
+ }
78
+ return {
79
+ content: [{ type: 'text', text: lines.join('\n') }],
80
+ };
81
+ });
82
+ // ── Tool: list-rules ────────────────────────────────────────────────────────
83
+ server.tool('guardrail_list_rules', 'List all available Guardrail detection rules with their IDs, categories, and severities.', {}, async () => {
84
+ const lines = rules_1.builtinRules.map((r) => `${r.id} | ${r.category} | ${r.severity} | ${r.description}`);
85
+ return {
86
+ content: [
87
+ {
88
+ type: 'text',
89
+ text: `ID | Category | Severity | Description\n${'-'.repeat(80)}\n${lines.join('\n')}`,
90
+ },
91
+ ],
92
+ };
93
+ });
94
+ // ── Start ───────────────────────────────────────────────────────────────────
95
+ async function main() {
96
+ const transport = new stdio_js_1.StdioServerTransport();
97
+ await server.connect(transport);
98
+ }
99
+ main().catch(console.error);
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@guardrail-ai/mcp",
3
+ "version": "0.1.0",
4
+ "description": "Model Context Protocol (MCP) server for Guardrail — use as a Claude Code plugin",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "guardrail-mcp": "dist/index.js"
8
+ },
9
+ "files": ["dist", "README.md"],
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/Manavarya09/Guardrail.git",
16
+ "directory": "packages/mcp"
17
+ },
18
+ "homepage": "https://github.com/Manavarya09/Guardrail",
19
+ "bugs": "https://github.com/Manavarya09/Guardrail/issues",
20
+ "keywords": ["guardrail", "mcp", "claude", "claude-code", "model-context-protocol"],
21
+ "scripts": {
22
+ "build": "tsc -p tsconfig.json",
23
+ "prepublishOnly": "npm run build"
24
+ },
25
+ "dependencies": {
26
+ "@guardrail-ai/core": "*",
27
+ "@guardrail-ai/rules": "*",
28
+ "@guardrail-ai/fixer": "*",
29
+ "@modelcontextprotocol/sdk": "^1.12.1"
30
+ },
31
+ "license": "MIT"
32
+ }