AC

argus-code-scanning/argus-codescan-mcp

Developer tools
10 stars 15 forks Quality 87 Trend 38MIT

Argus — open-source security scanner (SAST, secrets, malware heuristics, SARIF, MCP). YAML rules welcome — good first issues.

Overview

In Greek mythology, Argus Panoptes was the hundred-eyed giant — an all-seeing guardian who never slept. Argus orchestrates (Semgrep, Trivy, Gitleaks, tfsec, Checkov, OWASP ZAP, and more) behind a single command and an for any MCP-compatible IDE or AI client. Runs locally. MIT licensed. pip install argus-scan · npm install -D argus-codescan · Docker · Launch kit solo devs, OSS maintainers, teams wanting DevSecOps without a proprietary scanner SaaS. managed AppSec platforms with centralized policy, SOC, or compliance sign-off — Argus is a you own. Works for anyone. Just install Argus and the open-source scanner tools. Connect Cursor, VS Code, Claude Desktop, JetBrains, Windsurf, or any MCP-compatible IDE and drive scans through natural language. The AI subscription is for the AI client — Argus itself is always free. MCP clients can also read the finding schema, scan categories and example workflows through the documentation resources.

README

Argus

In Greek mythology, Argus Panoptes was the hundred-eyed giant — an all-seeing guardian who never slept.

One open-source scanner. Many eyes. SAST, SCA, secrets, IaC, Terraform, Ansible — CLI, MCP, and GitHub SARIF.

Argus orchestrates 20+ industry-standard tools (Semgrep, Trivy, Gitleaks, tfsec, Checkov, OWASP ZAP, and more) behind a single command and an MCP server for any MCP-compatible IDE or AI client. Runs locally. No Argus subscription. MIT licensed.

Install: pip install argus-scan · npm install -D argus-codescan · Docker · Launch kit


Why Argus?

Run scanners yourself Argus
Setup Install & configure each tool separately One CLI / MCP config
Output Different JSON/text per tool Unified report + SARIF
CI Wire scripts yourself --format sarif, .argus.yml, baseline diff
AI (MCP IDE) Manual copy-paste MCP tools: scan_all, compare_scans, apply_fix
Cost Free (DIY labor) Free (MIT) — AI client optional
Fixes You decide Scan never auto-fixes; fix only when you ask

Good for: solo devs, OSS maintainers, teams wanting DevSecOps without a proprietary scanner SaaS.

Not a replacement for: managed AppSec platforms with centralized policy, SOC, or compliance sign-off — Argus is a local orchestrator you own.


Two ways to use Argus

1 — Standalone CLI (no AI needed)

argus scan sast /my/project
argus scan terraform /my/infra
argus scan all /my/project --fail-on high
argus scan code /my/project --format sarif -o argus.sarif
argus scan ml /my/ml-app
argus scan malware /my/project
argus review .                      # local code review — git-changed files only
argus review . --staged             # only staged files
argus review . --base main          # vs main (+ local dirty files)
argus compare baseline.json current.json --fail-on-new
argus tools

Works for anyone. Just install Argus and the open-source scanner tools.

2 — MCP server (AI-assisted, optional)

argus mcp    # starts the MCP server

Connect Cursor, VS Code, Claude Desktop, JetBrains, Windsurf, or any MCP-compatible IDE and drive scans through natural language. The AI subscription is for the AI client — Argus itself is always free.


What Argus Scans

Category Tools
SAST Semgrep · Bandit · ESLint-security · flake8-bandit
DAST OWASP ZAP · Nikto
SCA Trivy · Safety · pip-audit · npm audit
Secrets Gitleaks · detect-secrets · TruffleHog
IaC Checkov · Trivy config · Terrascan · KICS
Terraform tfsec · tflint · terraform validate · KICS · Checkov
Ansible ansible-lint · KICS · Checkov
Container Trivy image scan
AI/ML Built-in rules — unsafe model load, LLM API keys, prompt injection, Gradio share
Malware Built-in heuristics — crypto miners, reverse shells, BAT/PS1 droppers, web shells (not AV)

MCP Tools (for AI clients)

Tool What It Does
scan_sast Static code analysis — all languages
scan_dast Dynamic scan of a running web app
scan_sca Vulnerable dependency detection
scan_secrets Leaked API keys, tokens, passwords
scan_iac Terraform, K8s, Dockerfile, Helm, Ansible misconfigs
scan_terraform Deep Terraform scan (tfsec, tflint, validate, KICS)
scan_ansible Ansible playbook & role security scan
scan_ml AI/ML & LLM pipeline security (model load, API keys, prompts)
scan_malware Malware / backdoor / crypto-miner / malicious BAT-PS1 heuristics
scan_pci PCI-DSS cardholder-data heuristics (CVV storage, PANs in logs, http:// card data)
scan_container Container image CVE scanning
scan_all Everything, in parallel
review_code Local code review — secrets + SAST + malware on git-changed / staged files only
apply_fix Preview or apply a fix for one finding (user must ask — scans never auto-fix)
compare_scans Diff baseline vs current scan JSON (new/fixed findings)
explain_finding Explain a supplied finding with CWE links, remediation guidance and a review prompt.
get_scan_report Reformat a previous scan JSON as Markdown or SARIF
get_fix_plan Group scan findings into a read-only remediation plan ordered by severity.
check_tools List which scanners are installed

MCP clients can also read the finding schema, scan categories and example workflows through the documentation resources.

Scans are read-only. Fixes run only when you ask — via apply_fix, VS Code Quick Fix, or your AI editing code from fix_guidance.


Fix on request

Argus never modifies your code during a scan. After results come back:

How AI token needed?
VS Code Quick Fix (lightbulb → Show fix guidance / Apply automated fix) No
MCP apply_fix with apply=true (ESLint / Semgrep autofix only) Only if AI calls it for you
AI edits code from finding guidance (secrets, CVEs, IaC, OWASP, etc.) Yes (for the AI client)
# CLI and MCP scans — detect only
argus scan all /path/to/project

# MCP: user asks AI to fix a specific finding
# → apply_fix { target, file, tool, apply: true }

Details: API Reference — apply_fix


SARIF, policy & baseline diff

Ship security findings to GitHub Code Scanning, enforce repo policy, and fail CI only on new findings.

SARIF export (GitHub Security tab)

# Export SARIF for GitHub Code Scanning
argus scan code . --format sarif -o argus.sarif --fail-on high

# MCP: scan_sast / scan_all with format: "sarif"

Upload in GitHub Actions (see .github/workflows/argus-sarif.yml). Pull requests scan only the files changed in the diff, and fall back to a full scan when more than 50 files changed:

argus ci pr-paths --base "$BASE_SHA" --limit 50 -o scan-paths.txt
argus scan sast . --paths-file scan-paths.txt --format sarif -o sast.sarif
argus scan secrets . --paths-file scan-paths.txt --format sarif -o secrets.sarif
- run: pip install argus-scan && argus scan code . --format sarif -o argus.sarif
- uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: argus.sarif
    category: argus

.argus.yml policy file

Copy .argus.yml.example to .argus.yml in your repo root:

fail_on: high
exclude_paths:
  - "tests/fixtures/**"
semgrep:
  config: p/owasp-top-ten
suppressions:
  - rule_id: bandit.B101
    path: "tests/**"
    reason: "asserts in tests"
    expires: "2026-12-31"

Argus auto-discovers .argus.yml when scanning. Override with --policy path/to/.argus.yml.

Baseline diff (PR-only new findings)

# Save baseline from main
argus scan all . --format json -o baseline.json

# On PR — compare against baseline
argus scan all . --baseline baseline.json --format json -o current.json
argus compare baseline.json current.json --fail-on-new

# Or set in .argus.yml:
# baseline: .argus/baseline.json
# fail_on_new_only: true

Secret remediation guidance

Secret findings include step-by-step rotate/revoke guidance (AWS, GitHub tokens, private keys, Stripe, etc.):

argus scan secrets . --format json   # fix_guidance on each finding
# MCP apply_fix for secrets returns remediation steps (no auto-fix)

Database security rules

Built-in static rules for SQL injection, connection strings, migration GRANTs, ORM raw queries:

argus scan code .    # includes database.yaml rules via argus-languages

Full docs: docs/features-roadmap.md · API reference


Cloud dashboard upload (optional)

Send scan results to the Argus cloud dashboard when ARGUS_API_KEY is set. Local scans still work without any key.

export ARGUS_API_URL=http://localhost:4000/v1   # default
export ARGUS_API_KEY=arg_live_PASTE_YOUR_KEY

argus scan all /path/to/project                 # uploads automatically
argus scan sast . --upload --fail-on high       # force upload
argus scan secrets . --no-upload                # skip upload

MCP — add env to your IDE’s MCP config (e.g. Cursor ~/.cursor/mcp.json, VS Code MCP settings, Claude Desktop config):

{
  "mcpServers": {
    "argus": {
      "command": "argus",
      "args": ["mcp"],
      "env": {
        "ARGUS_API_URL": "http://localhost:4000/v1",
        "ARGUS_API_KEY": "arg_live_PASTE_YOUR_KEY"
      }
    }
  }
}

Print the same template: argus mcp --config

After each MCP scan or CLI scan, results upload to {ARGUS_API_URL}/scans with repo/branch/commit from git. Full setup: docs/AGENT-UPLOAD.md


Install

Pick the package that matches your project:

Your project Install Scan command
React / Next.js / Node npm install -D argus-codescan npx argus-codescan scan all .
Java, PHP, Flutter, Terraform, Ansible pip install argus-languages argus-languages scan /path/to/project
Full suite (MCP, DAST, IaC tools) pip install argus-scan argus scan all /path/to/project

React / Node (npm) — no Python required

npm install -D argus-codescan

npx argus-codescan scan sca .       # dependencies (npm audit)
npx argus-codescan scan sast .      # source code (JS/TS)
npx argus-codescan scan secrets .   # API keys, tokens
npx argus-codescan scan all .       # everything

# CSV report written automatically (or set path with --output)
npx argus-codescan scan all . --output ./reports/security.csv

Add to package.json:

{
  "scripts": {
    "security:scan": "argus-codescan scan sca . --output ./reports/deps.csv",
    "security:code": "argus-codescan scan sast . --output ./reports/code.csv",
    "security:secrets": "argus-codescan scan secrets . --output ./reports/secrets.csv",
    "security:all": "argus-codescan scan all . --output ./reports/full.csv"
  }
}

Java, PHP, Flutter, IaC (pip — lightweight)

pip install argus-languages

# Any supported language / IaC in one command
argus-languages scan /path/to/project

# Examples
argus-languages scan ./my-java-app
argus-languages scan ./terraform
argus-languages scan ./flutter-app

Full Argus CLI + MCP (pip)

pip install argus-scan
# With all Python-native scanners:
pip install "argus-scan[all-tools]"

argus scan code /path/to/project    # built-in multi-language (uses argus-languages)
argus scan sast /path/to/project    # + Semgrep, Bandit, ESLint if installed
argus scan terraform /path/to/infra
argus scan ansible /path/to/playbooks
argus scan all /path/to/project --fail-on high
argus scan all /path/to/project --upload          # cloud dashboard (needs ARGUS_API_KEY)
argus scan all . --format sarif -o argus.sarif    # GitHub Code Scanning export
argus compare baseline.json current.json          # diff two scan JSON files
argus tools                         # show installed scanners
argus mcp                           # start MCP server for any MCP-compatible IDE
argus mcp --config                  # print MCP config with cloud env vars

Zero-install

uvx argus-scan       # full Python CLI via uv
npx argus-codescan   # Node/React via npm

Go (single binary)

go install github.com/argus-code-scanning/argus-codescan-mcp/packages/go/cmd/argus@latest

Shell script

curl -sSfL https://raw.githubusercontent.com/argus-code-scanning/argus-codescan-mcp/main/packages/shell/install.sh | sh

Docker (all scanners bundled)

docker pull ghcr.io/okirigabriel/argus-codescan-mcp:latest

# MCP server (add to ~/.cursor/mcp.json — see packages/docker/README.md)
docker run --rm -i -v "$(pwd):/workspace" ghcr.io/okirigabriel/argus-codescan-mcp

# One-shot CLI scan
docker run --rm -v "$(pwd):/workspace" ghcr.io/okirigabriel/argus-codescan-mcp \
  scan all /workspace

Full Docker guide: packages/docker/README.md

VS Code Extension

Install Argus Security Scanner from the VS Code Marketplace.


Quick Start

React / Next.js

npm install -D argus-codescan
npm run security:all   # after adding scripts — see Install section above

Flutter / Java / PHP / Terraform

pip install argus-languages
argus-languages scan /path/to/project

Full CLI (all scan types)

pip install "argus-scan[all-tools]"
argus tools
argus scan code /path/to/project
argus scan terraform /path/to/infra
argus scan all /path/to/project --format table
argus scan all /path/to/project --fail-on high

MCP (any MCP-compatible IDE)

Add to your MCP client config (e.g. Cursor ~/.cursor/mcp.json, VS Code MCP settings, Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "argus": {
      "command": "argus",
      "args": ["mcp"],
      "env": {
        "ARGUS_API_URL": "http://localhost:4000/v1",
        "ARGUS_API_KEY": "arg_live_PASTE_YOUR_KEY"
      }
    }
  }
}

Omit the env block if you only want local scans (no cloud upload). Or zero-install with uvx:

{
  "mcpServers": {
    "argus": { "command": "uvx", "args": ["argus-scan", "mcp"] }
  }
}

Then ask your AI:

Scan /path/to/myproject for security vulnerabilities
Are there any hardcoded secrets in this repo?
Fix the high-severity finding in src/api.js line 42
Run a full security audit and give me a prioritised fix list

Install Scanners

Run argus tools to see what’s installed. Quick install for common tools:

# macOS
brew install semgrep trivy gitleaks trufflehog tfsec tflint kics
pip install bandit safety pip-audit detect-secrets checkov ansible-lint
docker pull ghcr.io/zaproxy/zaproxy:stable   # OWASP ZAP

# Linux
pip install "argus-scan[all-tools]"
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh

Full guide: docs/tool-setup.md


Do I Need a Token or Subscription?

No Argus subscription for local scanning. Every scanner runs on your machine:

Layer Cost Requires
Argus CLI & MCP Free Python 3.10+
Semgrep, Trivy, Bandit, tfsec… Free Local install
Cloud dashboard upload Optional ARGUS_API_KEY from your dashboard
AI client (Cursor, Claude) Subscription Only for chat-driven scans and fixes

The AI subscription is for the AI client, not for Argus. Cloud upload uses your Argus API key (arg_live_…), not your Cursor/Claude token.


Repository Structure

argus-codescan-mcp/
├── packages/
│   ├── python/          pip install argus-scan
│   │   └── src/argus/
│   │       ├── cli.py             Standalone CLI
│   │       ├── server.py          MCP server
│   │       ├── cloud_upload.py    Optional dashboard upload
│   │       └── tools/             SAST, DAST, SCA, secrets, IaC, …
│   ├── languages/       pip install argus-languages  ← Java, PHP, Terraform, Ansible, all code
│   │   └── src/argus_languages/
│   │       └── bundled_rules/     YAML rules shared across Python (and future Go client)
│   ├── npm/             npx argus-codescan  (Node.js / JS-TS only)
│   ├── go/              go install .../argus@latest
│   ├── shell/           curl | sh installer
│   └── docker/          ghcr.io/okiriGabriel/argus-codescan-mcp
├── extensions/
│   └── vscode/          Argus Security Scanner VS Code extension
├── docs/
│   ├── getting-started.md
│   ├── architecture.md
│   ├── api-reference.md
│   ├── AGENT-UPLOAD.md
│   └── tool-setup.md
└── .github/
    ├── workflows/        CI for Python, npm, Go, VS Code, Docker
    └── ISSUE_TEMPLATE/

Documentation

Doc Description
Getting Started Install, configure, first scan
Architecture How Argus works under the hood
API Reference All MCP tools, parameters, schemas
Agent Upload Cloud dashboard upload & API keys
Privacy & data What stays local vs cloud/CI egress
Tool Setup Install every scanner on every platform
Contributing Add scanners, clients, and fixes
Add a YAML rule 5-minute guide to extend malware/ML/DB rules
MCP Prompt Cookbook 8 example prompts for Argus MCP scans
Security Policy Report vulnerabilities

Contributing

Everyone is welcome to contribute, whether it’s your first open-source PR or your hundredth. Start with the pinned 👋 Contributors welcome issue.

🟢 Good first issues Small, self-contained tasks: docs, YAML rules, CI workflows
🙋 Help wanted Bigger features: scanners, privacy controls, integrations
⚡ Add a YAML rule Fastest first PR: one detection rule plus a test

To claim an issue, comment “I’d like to work on this” with a short plan and a maintainer will assign it. Setup, code style and PR checklist: CONTRIBUTING.md.

License

MIT — see LICENSE

View the full README on GitHub

Install

uvx argus-scan mcp
New to MCP? Start with the mcpskill.org guide →

Configuration

{ "mcpServers": { "argus": { "command": "argus", "args": ["mcp"], "env": { "ARGUS_API_URL": "http://localhost:4000/v1", "ARGUS_API_KEY": "arg_live_PASTE_YOUR_KEY" } } } }