@guardbee/security-suite 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 +129 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +166 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/package.json +34 -0
package/README.md
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# @guardbee/security-suite
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@guardbee/security-suite)
|
|
4
|
+
[](LICENSE)
|
|
5
|
+
|
|
6
|
+
Tüm GuardBee MCP güvenlik araçlarını tek pakette toplayan meta-paket. Secret scanner, dependency auditor, SSL inspector ve DNS intelligence tek kurulumla kullanılabilir.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Hızlı Başlangıç
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install -g @guardbee/security-suite
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Claude Desktop (MCP — tüm araçlar tek server)
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"mcpServers": {
|
|
21
|
+
"guardbee": {
|
|
22
|
+
"command": "npx",
|
|
23
|
+
"args": ["-y", "@guardbee/security-suite", "serve"]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## CLI Kullanımı
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
guardbee secret-scan <path> # Secret taraması
|
|
35
|
+
guardbee dep-audit <dir> # CVE denetimi
|
|
36
|
+
guardbee ssl-inspect <domain>... # TLS denetimi
|
|
37
|
+
guardbee dns-check <domain> # DNS/SPF/DMARC kontrolü
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Ortak Seçenekler
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
--fail-on=<level> critical | high | medium | low (varsayılan: araç özelinde)
|
|
44
|
+
--format=text|json|sarif
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Örnekler
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
guardbee secret-scan . --fail-on=high
|
|
51
|
+
guardbee dep-audit . --fail-on=critical --format=sarif > results.sarif
|
|
52
|
+
guardbee ssl-inspect example.com api.example.com shop.example.com
|
|
53
|
+
guardbee dns-check example.com --fail-on=medium
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## CI/CD Entegrasyonu
|
|
59
|
+
|
|
60
|
+
### GitHub Actions
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
name: Security Suite
|
|
64
|
+
on: [push, pull_request]
|
|
65
|
+
|
|
66
|
+
jobs:
|
|
67
|
+
security:
|
|
68
|
+
runs-on: ubuntu-latest
|
|
69
|
+
steps:
|
|
70
|
+
- uses: actions/checkout@v4
|
|
71
|
+
- uses: actions/setup-node@v4
|
|
72
|
+
with: { node-version: 20 }
|
|
73
|
+
- run: npm ci
|
|
74
|
+
|
|
75
|
+
- name: Secret scan
|
|
76
|
+
run: npx @guardbee/security-suite secret-scan . --fail-on=high
|
|
77
|
+
|
|
78
|
+
- name: Dependency audit
|
|
79
|
+
run: npx @guardbee/security-suite dep-audit . --fail-on=high
|
|
80
|
+
|
|
81
|
+
- name: SARIF upload (GitHub Security tab)
|
|
82
|
+
if: always()
|
|
83
|
+
run: |
|
|
84
|
+
npx @guardbee/security-suite secret-scan . --format=sarif > secrets.sarif || true
|
|
85
|
+
npx @guardbee/security-suite dep-audit . --format=sarif > deps.sarif || true
|
|
86
|
+
|
|
87
|
+
- uses: github/codeql-action/upload-sarif@v3
|
|
88
|
+
if: always()
|
|
89
|
+
with:
|
|
90
|
+
sarif_file: secrets.sarif
|
|
91
|
+
|
|
92
|
+
- uses: github/codeql-action/upload-sarif@v3
|
|
93
|
+
if: always()
|
|
94
|
+
with:
|
|
95
|
+
sarif_file: deps.sarif
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### GitLab CI
|
|
99
|
+
|
|
100
|
+
```yaml
|
|
101
|
+
include:
|
|
102
|
+
- template: Security/Secret-Detection.gitlab-ci.yml
|
|
103
|
+
|
|
104
|
+
guardbee-security:
|
|
105
|
+
image: node:20
|
|
106
|
+
script:
|
|
107
|
+
- npx @guardbee/security-suite secret-scan . --fail-on=high
|
|
108
|
+
- npx @guardbee/security-suite dep-audit . --fail-on=high
|
|
109
|
+
only:
|
|
110
|
+
- merge_requests
|
|
111
|
+
- main
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Dahil Olan Araçlar
|
|
117
|
+
|
|
118
|
+
| Araç | Paket | Açıklama |
|
|
119
|
+
|------|-------|----------|
|
|
120
|
+
| `secret-scan` | `@guardbee/mcp-secret-scanner` | 40+ pattern ile secret tespiti |
|
|
121
|
+
| `dep-audit` | `@guardbee/mcp-dependency-auditor` | OSV CVE veritabanı denetimi |
|
|
122
|
+
| `ssl-inspect` | `@guardbee/mcp-ssl-inspector` | TLS sertifika ve cipher analizi |
|
|
123
|
+
| `dns-check` | `@guardbee/mcp-dns-intelligence` | DNS, SPF, DMARC, dangling subdomain |
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Lisans
|
|
128
|
+
|
|
129
|
+
MIT — [GuardBee](https://guardbee.ai)
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @guardbee/security-suite — unified CLI for all GuardBee security tools.
|
|
4
|
+
*
|
|
5
|
+
* MCP mode: guardbee serve → combined MCP server (all tools)
|
|
6
|
+
* CLI mode: guardbee <tool> <args> → delegates to the specific tool's CLI
|
|
7
|
+
*/
|
|
8
|
+
import { spawnSync } from "child_process";
|
|
9
|
+
import { fileURLToPath } from "url";
|
|
10
|
+
import { dirname, resolve } from "path";
|
|
11
|
+
import { existsSync } from "fs";
|
|
12
|
+
// ── Tool → package mapping ─────────────────────────────────────────────────────
|
|
13
|
+
const TOOL_MAP = {
|
|
14
|
+
"secret-scan": { pkg: "@guardbee/mcp-secret-scanner", cmd: "scan" },
|
|
15
|
+
"dep-audit": { pkg: "@guardbee/mcp-dependency-auditor", cmd: "audit" },
|
|
16
|
+
"ssl-inspect": { pkg: "@guardbee/mcp-ssl-inspector", cmd: "inspect" },
|
|
17
|
+
"dns-check": { pkg: "@guardbee/mcp-dns-intelligence", cmd: "check" },
|
|
18
|
+
};
|
|
19
|
+
// ── Resolve a package's dist/cli.js via import.meta.resolve ───────────────────
|
|
20
|
+
async function resolveCliJs(pkgName) {
|
|
21
|
+
// Resolve the main export of the package, then find dist/cli.js relative to it
|
|
22
|
+
const mainUrl = await import.meta.resolve(pkgName);
|
|
23
|
+
const mainPath = fileURLToPath(mainUrl);
|
|
24
|
+
const pkgDir = dirname(dirname(mainPath)); // mainPath = <pkg>/dist/index.js → up twice
|
|
25
|
+
const cliPath = resolve(pkgDir, "dist", "cli.js");
|
|
26
|
+
if (existsSync(cliPath))
|
|
27
|
+
return cliPath;
|
|
28
|
+
// Fallback: maybe dist is one level up
|
|
29
|
+
const cliPath2 = resolve(dirname(mainPath), "cli.js");
|
|
30
|
+
if (existsSync(cliPath2))
|
|
31
|
+
return cliPath2;
|
|
32
|
+
throw new Error(`Cannot find cli.js for ${pkgName} (tried ${cliPath})`);
|
|
33
|
+
}
|
|
34
|
+
// ── CLI delegation ─────────────────────────────────────────────────────────────
|
|
35
|
+
async function runTool(tool, args) {
|
|
36
|
+
const entry = TOOL_MAP[tool];
|
|
37
|
+
if (!entry) {
|
|
38
|
+
console.error(`Unknown tool: ${tool}`);
|
|
39
|
+
printHelp();
|
|
40
|
+
process.exit(2);
|
|
41
|
+
}
|
|
42
|
+
const cliPath = await resolveCliJs(entry.pkg);
|
|
43
|
+
const result = spawnSync(process.execPath, [cliPath, entry.cmd, ...args], {
|
|
44
|
+
stdio: "inherit",
|
|
45
|
+
env: process.env,
|
|
46
|
+
});
|
|
47
|
+
process.exit(result.status ?? 1);
|
|
48
|
+
}
|
|
49
|
+
// ── MCP server (combined) ─────────────────────────────────────────────────────
|
|
50
|
+
async function runServe() {
|
|
51
|
+
// Start all 4 tools as a combined MCP server by re-exporting their tools
|
|
52
|
+
// into a single McpServer instance.
|
|
53
|
+
const { McpServer } = await import("@modelcontextprotocol/sdk/server/mcp.js");
|
|
54
|
+
const { StdioServerTransport } = await import("@modelcontextprotocol/sdk/server/stdio.js");
|
|
55
|
+
const { z } = await import("zod");
|
|
56
|
+
// Import core functions from each tool
|
|
57
|
+
const { scanDirectory, scanFile } = await import("@guardbee/mcp-secret-scanner");
|
|
58
|
+
const { parseNpmManifest } = await import("@guardbee/mcp-dependency-auditor");
|
|
59
|
+
const { parsePipRequirements } = await import("@guardbee/mcp-dependency-auditor");
|
|
60
|
+
const { queryOsvBatch } = await import("@guardbee/mcp-dependency-auditor");
|
|
61
|
+
const { inspectHost, checkHsts } = await import("@guardbee/mcp-ssl-inspector");
|
|
62
|
+
const { enumerateDomain, enumerateSubdomains } = await import("@guardbee/mcp-dns-intelligence");
|
|
63
|
+
const server = new McpServer({ name: "guardbee-security-suite", version: "0.1.0" });
|
|
64
|
+
// ── Secret Scanner tools ────────────────────────────────────────────────────
|
|
65
|
+
server.tool("scan_directory", "Scan a directory for exposed secrets, API keys, and credentials", { directory: z.string(), maxFiles: z.number().optional() }, async ({ directory, maxFiles = 5000 }) => {
|
|
66
|
+
const result = scanDirectory(directory, { maxFiles });
|
|
67
|
+
const counts = {};
|
|
68
|
+
for (const f of result.findings)
|
|
69
|
+
counts[f.severity] = (counts[f.severity] ?? 0) + 1;
|
|
70
|
+
const summary = result.findings.length === 0
|
|
71
|
+
? `✅ No secrets found in ${result.scannedFiles} files`
|
|
72
|
+
: `⚠️ Found ${result.findings.length} secrets — Critical:${counts["critical"] ?? 0} High:${counts["high"] ?? 0} Medium:${counts["medium"] ?? 0}`;
|
|
73
|
+
return { content: [{ type: "text", text: summary + "\n\n" + JSON.stringify(result.findings.slice(0, 20), null, 2) }] };
|
|
74
|
+
});
|
|
75
|
+
server.tool("scan_file", "Scan a single file for secrets", { filePath: z.string() }, async ({ filePath }) => {
|
|
76
|
+
const result = scanFile(filePath);
|
|
77
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
78
|
+
});
|
|
79
|
+
// ── Dependency Auditor tools ────────────────────────────────────────────────
|
|
80
|
+
server.tool("audit_dependencies", "Audit npm/pip dependencies for known CVEs", { directory: z.string() }, async ({ directory }) => {
|
|
81
|
+
const lines = [];
|
|
82
|
+
const npmDeps = parseNpmManifest(directory).filter((d) => !d.isDev);
|
|
83
|
+
if (npmDeps.length > 0) {
|
|
84
|
+
const results = await queryOsvBatch(npmDeps.map((d) => ({ name: d.name, version: d.version, ecosystem: "npm" })));
|
|
85
|
+
const vuln = results.filter((r) => r.vulns.length > 0);
|
|
86
|
+
lines.push(`npm: ${vuln.length}/${results.length} vulnerable packages`);
|
|
87
|
+
}
|
|
88
|
+
const pipDeps = parsePipRequirements(directory);
|
|
89
|
+
if (pipDeps.length > 0) {
|
|
90
|
+
const results = await queryOsvBatch(pipDeps.map((d) => ({ name: d.name, version: d.version, ecosystem: "PyPI" })));
|
|
91
|
+
const vuln = results.filter((r) => r.vulns.length > 0);
|
|
92
|
+
lines.push(`pip: ${vuln.length}/${results.length} vulnerable packages`);
|
|
93
|
+
}
|
|
94
|
+
return { content: [{ type: "text", text: lines.join("\n") || "No manifests found" }] };
|
|
95
|
+
});
|
|
96
|
+
// ── SSL Inspector tools ─────────────────────────────────────────────────────
|
|
97
|
+
server.tool("inspect_ssl", "Inspect TLS certificate, cipher suite, and HSTS for a domain", { host: z.string(), port: z.number().optional() }, async ({ host, port = 443 }) => {
|
|
98
|
+
const result = await inspectHost(host, port);
|
|
99
|
+
const hsts = await checkHsts(host, port);
|
|
100
|
+
result.supportsHsts = hsts.enabled;
|
|
101
|
+
const issues = result.findings.filter((f) => f.code !== "OK");
|
|
102
|
+
const summary = issues.length === 0
|
|
103
|
+
? `✅ ${host} — no SSL issues`
|
|
104
|
+
: `⚠️ ${host} — ${issues.length} issue(s): ${issues.map((f) => f.code).join(", ")}`;
|
|
105
|
+
return { content: [{ type: "text", text: summary }] };
|
|
106
|
+
});
|
|
107
|
+
// ── DNS Intelligence tools ──────────────────────────────────────────────────
|
|
108
|
+
server.tool("check_dns", "Enumerate DNS records and check SPF/DMARC/DKIM configuration", { domain: z.string() }, async ({ domain }) => {
|
|
109
|
+
const result = await enumerateDomain(domain);
|
|
110
|
+
const issues = result.findings.filter((f) => f.severity === "high" || f.severity === "critical");
|
|
111
|
+
const summary = issues.length === 0
|
|
112
|
+
? `✅ ${domain} — no critical DNS issues`
|
|
113
|
+
: `⚠️ ${domain} — ${issues.length} high/critical issue(s)`;
|
|
114
|
+
return { content: [{ type: "text", text: summary + "\n\n" + JSON.stringify(result.findings, null, 2) }] };
|
|
115
|
+
});
|
|
116
|
+
const transport = new StdioServerTransport();
|
|
117
|
+
await server.connect(transport);
|
|
118
|
+
}
|
|
119
|
+
// ── Help ───────────────────────────────────────────────────────────────────────
|
|
120
|
+
function printHelp() {
|
|
121
|
+
console.log(`@guardbee/security-suite
|
|
122
|
+
|
|
123
|
+
Usage (MCP server — all tools combined):
|
|
124
|
+
guardbee serve
|
|
125
|
+
|
|
126
|
+
Usage (CLI — direct tool invocation):
|
|
127
|
+
guardbee secret-scan <path> Scan for exposed secrets
|
|
128
|
+
guardbee dep-audit <dir> Audit npm/pip for CVEs
|
|
129
|
+
guardbee ssl-inspect <domain>... TLS certificate inspection
|
|
130
|
+
guardbee dns-check <domain> DNS/SPF/DMARC/dangling check
|
|
131
|
+
|
|
132
|
+
Each command supports:
|
|
133
|
+
--fail-on=<level> critical | high | medium | low (| any for secrets)
|
|
134
|
+
--format=text|json|sarif
|
|
135
|
+
|
|
136
|
+
Examples:
|
|
137
|
+
guardbee secret-scan . --fail-on=high --format=sarif > secrets.sarif
|
|
138
|
+
guardbee dep-audit . --fail-on=critical
|
|
139
|
+
guardbee ssl-inspect example.com api.example.com
|
|
140
|
+
guardbee dns-check example.com --fail-on=medium
|
|
141
|
+
`);
|
|
142
|
+
}
|
|
143
|
+
// ── Entry point ────────────────────────────────────────────────────────────────
|
|
144
|
+
const [, , firstArg, ...rest] = process.argv;
|
|
145
|
+
if (!firstArg || firstArg === "--help" || firstArg === "-h") {
|
|
146
|
+
printHelp();
|
|
147
|
+
process.exit(0);
|
|
148
|
+
}
|
|
149
|
+
else if (firstArg === "serve") {
|
|
150
|
+
runServe().catch((err) => {
|
|
151
|
+
console.error("Fatal:", err.message);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
else if (TOOL_MAP[firstArg]) {
|
|
156
|
+
runTool(firstArg, rest).catch((err) => {
|
|
157
|
+
console.error("Error:", err.message);
|
|
158
|
+
process.exit(2);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
console.error(`Unknown command: ${firstArg}`);
|
|
163
|
+
printHelp();
|
|
164
|
+
process.exit(2);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { scanText, scanFile, scanDirectory } from "@guardbee/mcp-secret-scanner";
|
|
2
|
+
export { parseNpmManifest, parsePipRequirements, queryOsvBatch, getSeverity, getFixedVersion } from "@guardbee/mcp-dependency-auditor";
|
|
3
|
+
export { inspectHost, checkHsts, formatInspectReport } from "@guardbee/mcp-ssl-inspector";
|
|
4
|
+
export { enumerateDomain, enumerateSubdomains, formatDnsReport } from "@guardbee/mcp-dns-intelligence";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACvI,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Selective re-exports to avoid naming conflicts
|
|
2
|
+
export { scanText, scanFile, scanDirectory } from "@guardbee/mcp-secret-scanner";
|
|
3
|
+
export { parseNpmManifest, parsePipRequirements, queryOsvBatch, getSeverity, getFixedVersion } from "@guardbee/mcp-dependency-auditor";
|
|
4
|
+
export { inspectHost, checkHsts, formatInspectReport } from "@guardbee/mcp-ssl-inspector";
|
|
5
|
+
export { enumerateDomain, enumerateSubdomains, formatDnsReport } from "@guardbee/mcp-dns-intelligence";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACvI,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@guardbee/security-suite",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "All GuardBee MCP security tools in one package — secret scanner, dependency auditor, SSL inspector, DNS intelligence",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"guardbee": "./dist/cli.js",
|
|
8
|
+
"guardbee-suite": "./dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"files": ["dist", "README.md"],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"start": "node dist/cli.js",
|
|
15
|
+
"prepublishOnly": "npm run build"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@guardbee/mcp-secret-scanner": "^0.1.5",
|
|
19
|
+
"@guardbee/mcp-dependency-auditor": "^0.1.5",
|
|
20
|
+
"@guardbee/mcp-ssl-inspector": "^0.1.4",
|
|
21
|
+
"@guardbee/mcp-dns-intelligence": "^0.1.4",
|
|
22
|
+
"@modelcontextprotocol/sdk": "^1.0.0"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/node": "^26.0.0",
|
|
26
|
+
"typescript": "^5.0.0"
|
|
27
|
+
},
|
|
28
|
+
"keywords": ["mcp", "security", "secret-scanner", "dependency-audit", "ssl", "dns", "guardbee", "devtools", "cli"],
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/GuardBee/guardbee-mcp-security-suite"
|
|
33
|
+
}
|
|
34
|
+
}
|