AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

SAST MCP Server

mcp-skyrxin-sast-mcp-server · by Skyrxin

11-scanner SAST/DAST MCP server with closed-loop remediation, SBOM/SARIF, and CI integrations

No reviews yet
0 installs
48 views
0.0% view→install

Install

$ agentstack add mcp-skyrxin-sast-mcp-server

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.8.1 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution Used
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.8.1. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-skyrxin-sast-mcp-server)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of SAST MCP Server? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

SAST MCP Server

[](https://pypi.org/project/sast-mcp-server/) [](https://glama.ai/mcp/servers/Skyrxin/sast-mcp-server) [](https://python.org) [](LICENSE) [](https://github.com/Skyrxin/sast-mcp-server/actions) [](https://codecov.io/gh/Skyrxin/sast-mcp-server)

Static Application Security Testing (SAST) for AI agents. A production-ready MCP server that gives any AI agent the ability to scan code for security vulnerabilities.

Supports 11 industry-standard scanners:

| Scanner | Languages / Scope | Type | |---------|-------------------|------| | Bandit | Python | Security linter | | njsscan | JavaScript, Node.js | Static analysis | | Bearer | Python, JS, Ruby, Java, Go, PHP | Data-flow SAST | | Semgrep | 30+ languages | Rule-based SAST | | Trivy | All (CVEs, Secrets, IaC, images) | Multi-scanner | | CodeQL | Python, JS, Java, Go, C/C++, C#, Ruby, Swift | Semantic SAST | | Checkov | Terraform, K8s, Docker, CloudFormation | IaC policy scanner | | Gitleaks | All (.git history) | Deep secret scanning | | OSV-Scanner| Multiple (lockfiles, sboms) | SCA | | Grype | Containers, OS packages, lockfiles, SBOMs | SCA / image scanning | | OWASP ZAP | RUNTIME | Dynamic (DAST) via Docker |

Works with any MCP-compatible agent: Gemini CLI, Claude Desktop, OpenAI Agents, Cursor, Windsurf, and more.


Features

  • 🔍 11 SAST/SCA/DAST scanners with a unified output format
  • 🌳 AST-aware context — shows the full enclosing function, not just a line number
  • 📊 Severity & confidence filtering — focus on what matters
  • 🔀 Git diff mode — scan only modified files for incremental reviews
  • 🙈 Ignore management — suppress false positives with audit trail
  • 📄 Pagination — handle large codebases without overwhelming the agent
  • 🌐 Dual transport — stdio (local) or Streamable HTTP (remote deployments)
  • 🔐 JWT & API key authentication — secure remote deployments
  • 📦 One command installpip install sast-mcp-server
  • 🚀 Multi-scanner mode — run all installed scanners in parallel with deduplication
  • 📋 SARIF export — CI/CD integration with GitHub, GitLab, Azure DevOps
  • 🏗️ IaC scanning — Terraform, Kubernetes, Docker security policies
  • 🔑 Secret detection — find hardcoded API keys, tokens, and passwords in code and git history
  • 📦 SCA / dependency CVEs — scan lock files for known vulnerabilities against the OSV database
  • 🕷️ DAST — dynamic baseline scans of running apps via OWASP ZAP + Docker
  • 📈 Baselines & trend tracking — cache scans and diff against a saved baseline
  • 🤖 MCP Prompts & Resources — pre-built security workflows and live dashboards for agents
  • 📤 Dashboard integrations — push SARIF results to DefectDojo or GitHub Code Scanning
  • 🩹 AI-assisted remediation — generate fix prompts and apply agent-written patches via git apply

Quick Start

The server is only as useful as the scanners installed alongside it. Pick the install path that matches how much of the toolset you want out of the box.

Option 1 — Full container (recommended: 9 scanners, zero setup)

docker pull ghcr.io/skyrxin/sast-mcp-server:full

Bundles bandit, njsscan, bearer, semgrep, trivy, checkov, gitleaks, osv-scanner, and grype so scan_all works immediately. Or bring up an HTTP server with one command:

docker compose up          # serves http://localhost:8080/mcp + /health /ready /metrics

Option 2 — pip extra (4 pip-installable scanners)

pip install "sast-mcp-server[scanners]"   # adds bandit, njsscan, semgrep, checkov

Option 3 — minimal / custom

pip install sast-mcp-server               # server only — bring your own scanners
uvx sast-mcp-server                        # run without installing

Then install whichever scanners you need (binary scanners aren't pip packages):

pip install bandit njsscan semgrep checkov     # pip-installable
# trivy:        https://aquasecurity.github.io/trivy/latest/getting-started/installation/
# grype:        https://github.com/anchore/grype#installation
# gitleaks:     https://github.com/gitleaks/gitleaks#installing
# osv-scanner:  https://google.github.io/osv-scanner/installation/
# bearer:       https://docs.bearer.com/installation/
# codeql:       https://github.com/github/codeql-cli-binaries/releases

What ships where

| Scanner | :full image | [scanners] extra | Notes | |---------|:---:|:---:|-------| | Bandit | ✅ | ✅ | pip | | njsscan | ✅ | ✅ | pip | | Semgrep | ✅ | ✅ | pip | | Checkov | ✅ | ✅ | pip | | Bearer | ✅ | — | install script | | Trivy | ✅ | — | binary | | Gitleaks | ✅ | — | binary | | OSV-Scanner | ✅ | — | binary | | Grype | ✅ | — | binary | | CodeQL | — | — | multi-GB bundle — mount at runtime | | OWASP ZAP | — | — | runs via Docker on the host (run_active_scan) |

> At startup the server logs how many scanners it can actually see (e.g. > Scanners available: 9/11 (...)), and the list_scanners tool / /ready > endpoint report the same — so it's always obvious what you have.

[](https://glama.ai/mcp/servers/Skyrxin/sast-mcp-server)


Usage with AI Agents

Gemini CLI

Install as an extension:

gemini extensions install https://github.com/Skyrxin/sast-mcp-server

Or add to your ~/.gemini/settings.json:

{
  "mcpServers": {
    "sast": {
      "command": "uvx",
      "args": ["sast-mcp-server"]
    }
  }
}

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "sast": {
      "command": "uvx",
      "args": ["sast-mcp-server"]
    }
  }
}

See [full Claude Desktop guide](docs/claude-desktop.md).

Cursor IDE

Add to Cursor Settings → MCP Servers:

{
  "mcpServers": {
    "sast": {
      "command": "uvx",
      "args": ["sast-mcp-server"]
    }
  }
}

See [full Cursor guide](docs/cursor.md).

OpenAI Agents SDK

from agents.mcp import MCPServerStdio

sast_server = MCPServerStdio(command="uvx", args=["sast-mcp-server"])

See [full OpenAI guide](docs/openai.md).


Available MCP Tools

scan_vulnerabilities

Scan a directory for security vulnerabilities using a specific scanner.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Path to scan | | scanner_name | string | "bearer" | Scanner: bandit, njsscan, bearer, semgrep, trivy, codeql, checkov | | min_severity | string | "LOW" | Minimum severity: LOW, MEDIUM, HIGH, CRITICAL | | min_confidence | string | "LOW" | Minimum confidence: LOW, MEDIUM, HIGH | | git_diff_only | bool | false | Only scan git-modified files | | limit | int | 50 | Max findings to return | | offset | int | 0 | Pagination offset |

scan_all

Run ALL installed scanners in parallel with automatic deduplication. Recommended for comprehensive security scanning.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Path to scan | | min_severity | string | "MEDIUM" | Minimum severity (higher default to reduce noise) | | min_confidence | string | "LOW" | Minimum confidence | | git_diff_only | bool | false | Only scan git-modified files | | limit | int | 50 | Max findings to return | | offset | int | 0 | Pagination offset |

scan_git_history

Scan the entire .git history for leaked secrets and credentials using Gitleaks.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | "." | Path to the repository root (must contain .git) | | min_severity | string | "LOW" | Minimum severity to report |

run_active_scan

Run a dynamic (DAST) baseline scan with OWASP ZAP by orchestrating a Docker Compose stack.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Directory containing the docker-compose file | | docker_compose_file | string | required | Name of the docker-compose file (e.g. docker-compose.yml) | | target_url | string | required | URL of the running app once it's up (e.g. http://localhost:8080) |

export_sarif

Export scan results in SARIF 2.1.0 format for CI/CD integration.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Path to scan | | scanner_name | string | "bearer" | Scanner to use | | min_severity | string | "LOW" | Minimum severity | | min_confidence | string | "LOW" | Minimum confidence | | output_path | string | "" | File path to write SARIF (empty = return as string) |

list_scanners

List available scanners, their installation status, and supported languages.

ignore_vulnerability

Suppress a finding from future scans (with audit trail).

unignore_vulnerability

Re-enable a previously suppressed finding.

list_ignored_vulnerabilities

Show all currently suppressed findings for a project.

save_baseline

Run a scan and cache the results as a named baseline for future trend comparison.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Path to scan | | tag | string | "latest" | Name for this baseline (e.g. main, pre-release) | | scanner_name | string | "bearer" | Scanner to use | | min_severity | string | "LOW" | Minimum severity to include | | min_confidence | string | "LOW" | Minimum confidence to include |

compare_baseline

Compare a fresh scan against a saved baseline to highlight new and fixed findings.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Path to scan | | tag | string | "latest" | Baseline tag to compare against | | scanner_name | string | "bearer" | Scanner to use | | min_severity | string | "LOW" | Minimum severity to include | | min_confidence | string | "LOW" | Minimum confidence to include |

upload_to_defectdojo

Import a SARIF export into a DefectDojo engagement. Requires DEFECTDOJO_URL and DEFECTDOJO_API_KEY environment variables.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | sarif_path | string | required | Path to a SARIF file from export_sarif | | engagement_id | int | required | Target DefectDojo engagement ID | | active | bool | true | Mark imported findings active | | verified | bool | false | Mark imported findings verified |

upload_to_github

Upload a SARIF report to GitHub Code Scanning. Requires a GITHUB_TOKEN with security_events: write scope.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | sarif_path | string | required | Path to a SARIF file from export_sarif | | repo | string | required | Repository in owner/name form | | commit_sha | string | required | Full commit SHA the results apply to | | ref | string | required | Fully qualified ref, e.g. refs/heads/main |

generate_fix_prompt

Package a cached finding's vulnerable code and context into an LLM-ready prompt that asks for a strict unified diff fix.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Scanned project root (with .sast-mcp-cache) | | finding_hash | string | required | Hash of the finding to fix (from scan output) | | context_window | int | 15 | Source lines to include before/after the finding |

apply_patch

Apply an agent-generated unified diff to disk via git apply (paths that escape the target directory are rejected).

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Directory the patch paths are relative to | | patch | string | required | The unified diff text to apply | | check_only | bool | false | Validate without modifying files |

evaluate_policy

Run all scanners and return an explicit PASS/FAIL verdict for CI gating.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Path to scan | | max_critical | int | 0 | Max allowed CRITICAL (−1 = unlimited) | | max_high | int | -1 | Max allowed HIGH (−1 = unlimited) | | max_medium | int | -1 | Max allowed MEDIUM (−1 = unlimited) | | fail_on_new | bool | false | Fail if findings are new vs. a scan_all baseline | | baseline_tag | string | "latest" | Baseline tag used when fail_on_new | | output_format | string | "markdown" | markdown or json |

export_sbom

Run all scanners and export an SBOM / vulnerability report. In CycloneDX mode, if Syft is installed the component inventory is the full dependency list (not just vulnerable packages).

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Path to scan | | output_path | string | "" | File to write (empty = return inline) | | min_severity | string | "LOW" | Minimum severity to include | | sca_only | bool | true | Only dependency (SCA) findings; false = all | | format | string | "cyclonedx" | cyclonedx or spdx (SPDX 2.3) |

generate_report

Run all scanners and render an executive security report.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Path to scan | | output_path | string | "" | File to write (empty = return inline HTML; required for PDF) | | min_severity | string | "LOW" | Minimum severity to include | | format | string | "html" | html or pdf (needs the [pdf] extra) |

compliance_report

Map findings to a compliance framework and report the posture.

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Path to scan | | framework | string | "owasp" | owasp, sans, pci, or cis | | output_path | string | "" | Optional file to write the markdown report | | min_severity | string | "LOW" | Minimum severity to include |

scan_image

Scan a container image reference for vulnerabilities and secrets (Trivy or Grype).

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | image_ref | string | required | Image reference, e.g. nginx:1.25 | | scanner_name | string | "trivy" | trivy or grype | | min_severity | string | "MEDIUM" | Minimum severity to report | | output_format | string | "markdown" | markdown or json |

remediate_and_verify

Closed-loop remediation: dry-run a patch, apply it, re-scan, and confirm the finding is gone (rolling the patch back on failure).

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | target_path | string | required | Project root (with a .sast-mcp-cache) | | finding_hash | string | required | Hash of the finding to fix | | patch | string | required | Unified diff to apply | | scanner_name | string | "" | Re-scan scanner (default: the finding's scanner) | | auto_rollback | bool | true | Revert the patch if verification fails |

import_sarif

Ingest a

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.8.1 Imported from the upstream source.