agent-security-scanner-mcp 3.10.0 → 3.10.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/cli/init.js +56 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-security-scanner-mcp",
3
- "version": "3.10.0",
3
+ "version": "3.10.1",
4
4
  "mcpName": "io.github.sinewaveai/agent-security-scanner-mcp",
5
5
  "description": "Security scanner MCP server for AI coding agents. Prompt injection firewall, package hallucination detection (4.3M+ packages), 1000+ vulnerability rules with AST & taint analysis, auto-fix. For Claude Code, Cursor, Windsurf, Cline, OpenClaw.",
6
6
  "main": "index.js",
package/src/cli/init.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { readFileSync, existsSync, writeFileSync, copyFileSync, mkdirSync } from "fs";
2
+ import { spawnSync } from "child_process";
2
3
  import { dirname, join } from "path";
3
4
  import { homedir, platform } from "os";
4
5
  import { createInterface } from "readline";
@@ -79,6 +80,10 @@ const CLIENT_CONFIGS = {
79
80
  isSkillBased: true, // OpenClaw uses skills, not MCP config
80
81
  skillPath: () => join(homedir(), '.openclaw', 'workspace', 'skills', 'security-scanner'),
81
82
  configPath: () => join(homedir(), '.openclaw', 'workspace', 'skills', 'security-scanner', 'SKILL.md')
83
+ },
84
+ 'codex': {
85
+ name: 'Codex',
86
+ isCLIBased: true // Codex uses 'codex mcp add' CLI, not a JSON config
82
87
  }
83
88
  };
84
89
 
@@ -237,6 +242,51 @@ async function installOpenClawSkill(client, flags) {
237
242
  console.log(` - Or ask: "scan this prompt for security issues"\n`);
238
243
  }
239
244
 
245
+ // Installer for Codex (CLI-based, uses 'codex mcp add')
246
+ async function installCodexMCP(flags, serverName) {
247
+ console.log(`\n Client: Codex`);
248
+ console.log(` Config: ~/.codex/config.toml (managed by codex CLI)`);
249
+ console.log(` OS: ${platform()} (${process.arch})\n`);
250
+
251
+ // Check codex CLI is available
252
+ const which = spawnSync('which', ['codex'], { encoding: 'utf-8' });
253
+ if (which.status !== 0) {
254
+ console.error(` ERROR: 'codex' CLI not found in PATH.`);
255
+ console.error(` Install it first: https://github.com/openai/codex\n`);
256
+ process.exit(1);
257
+ }
258
+
259
+ if (flags.dryRun) {
260
+ console.log(` [dry-run] Would run:`);
261
+ console.log(` codex mcp add ${serverName} -- npx -y agent-security-scanner-mcp`);
262
+ console.log(` No changes made.\n`);
263
+ process.exit(0);
264
+ }
265
+
266
+ console.log(` Running: codex mcp add ${serverName} -- npx -y agent-security-scanner-mcp\n`);
267
+
268
+ const result = spawnSync(
269
+ 'codex',
270
+ ['mcp', 'add', serverName, '--', 'npx', '-y', 'agent-security-scanner-mcp'],
271
+ { encoding: 'utf-8', stdio: 'inherit' }
272
+ );
273
+
274
+ if (result.status !== 0) {
275
+ console.error(`\n ERROR: 'codex mcp add' failed (exit ${result.status}).`);
276
+ console.error(` You can add it manually to ~/.codex/config.toml:\n`);
277
+ console.error(` [mcp_servers.${serverName}]`);
278
+ console.error(` command = "npx"`);
279
+ console.error(` args = ["-y", "agent-security-scanner-mcp"]\n`);
280
+ process.exit(1);
281
+ }
282
+
283
+ console.log(`\n Codex MCP server '${serverName}' registered successfully!`);
284
+ console.log(`\n Next steps:`);
285
+ console.log(` 1. Start a Codex session`);
286
+ console.log(` 2. Run /mcp to verify 'agentic-security' is listed`);
287
+ console.log(` 3. Quick test: ask Codex to run scan_security on any code file\n`);
288
+ }
289
+
240
290
  export async function runInit(args) {
241
291
  const flags = parseInitFlags(args);
242
292
  let clientName = flags.client;
@@ -264,6 +314,12 @@ export async function runInit(args) {
264
314
  return;
265
315
  }
266
316
 
317
+ // Special handling for Codex (CLI-based, uses 'codex mcp add')
318
+ if (client.isCLIBased) {
319
+ await installCodexMCP(flags, flags.name);
320
+ return;
321
+ }
322
+
267
323
  const configPath = flags.path || client.configPath();
268
324
  const serverName = flags.name;
269
325
  const entry = client.buildEntry();