Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
11-scanner SAST/DAST MCP server with closed-loop remediation, SBOM/SARIF, and CI integrations
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
SAST_MCP_TIMEOUT, SAST_MCP_LOG_LEVEL, SAST_MCP_API_KEY, SAST_MCP_JWT_SECRETค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"sast": {
"command": "uvx",
"args": [
"sast-mcp-server"
],
"env": {
"SAST_MCP_TIMEOUT": "ใส่ค่าของคุณ",
"SAST_MCP_LOG_LEVEL": "ใส่ค่าของคุณ",
"SAST_MCP_API_KEY": "ใส่ค่าของคุณ",
"SAST_MCP_JWT_SECRET": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add sast --env SAST_MCP_TIMEOUT='ใส่ค่าของคุณ' --env SAST_MCP_LOG_LEVEL='ใส่ค่าของคุณ' --env SAST_MCP_API_KEY='ใส่ค่าของคุณ' --env SAST_MCP_JWT_SECRET='ใส่ค่าของคุณ' -- uvx sast-mcp-serverเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"sast": {
"command": "uvx",
"args": [
"sast-mcp-server"
],
"env": {
"SAST_MCP_TIMEOUT": "ใส่ค่าของคุณ",
"SAST_MCP_LOG_LEVEL": "ใส่ค่าของคุณ",
"SAST_MCP_API_KEY": "ใส่ค่าของคุณ",
"SAST_MCP_JWT_SECRET": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"sast": {
"type": "stdio",
"command": "uvx",
"args": [
"sast-mcp-server"
],
"env": {
"SAST_MCP_TIMEOUT": "ใส่ค่าของคุณ",
"SAST_MCP_LOG_LEVEL": "ใส่ค่าของคุณ",
"SAST_MCP_API_KEY": "ใส่ค่าของคุณ",
"SAST_MCP_JWT_SECRET": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
SAST_MCP_TIMEOUT envSAST_MCP_LOG_LEVEL envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub Skyrxin ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: SAST_MCP_API_KEY, SAST_MCP_JWT_SECRET
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.8.3) เข้า registry 5 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Qemu MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Boot and drive QEMU VMs from an AI agent: keys, screenshots, serial. No guest agent.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
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](https://bandit.readthedocs.io/) | Python | Security linter |
| [njsscan](https://github.com/ajinabraham/njsscan) | JavaScript, Node.js | Static analysis |
| [Bearer](https://www.bearer.com/) | Python, JS, Ruby, Java, Go, PHP | Data-flow SAST |
| [Semgrep](https://semgrep.dev/) | 30+ languages | Rule-based SAST |
| [Trivy](https://trivy.dev/) | All (CVEs, Secrets, IaC, images) | Multi-scanner |
| [CodeQL](https://codeql.github.com/) | Python, JS, Java, Go, C/C++, C#, Ruby, Swift | Semantic SAST |
| [Checkov](https://www.checkov.io/) | Terraform, K8s, Docker, CloudFormation | IaC policy scanner |
| [Gitleaks](https://gitleaks.io/) | All (.git history) | Deep secret scanning |
| [OSV-Scanner](https://google.github.io/osv-scanner/) | Multiple (lockfiles, sboms) | SCA |
| [Grype](https://github.com/anchore/grype) | Containers, OS packages, lockfiles, SBOMs | SCA / image scanning |
| [OWASP ZAP](https://www.zaproxy.org/) | RUNTIME | Dynamic (DAST) via Docker |
Works with any MCP-compatible agent: Gemini CLI, Claude Desktop, OpenAI Agents, Cursor, Windsurf, and more.
pip install sast-mcp-servergit applyThe 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.
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
pip install "sast-mcp-server[scanners]" # adds bandit, njsscan, semgrep, checkov
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
| 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 thelist_scannerstool //ready
endpoint report the same — so it's always obvious what you have.
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"] } } }
Add to your claude_desktop_config.json:
{
"mcpServers": { "sast": { "command": "uvx", "args": ["sast-mcp-server"] } } }
See full Claude Desktop guide.
Add to Cursor Settings → MCP Servers:
{
"mcpServers": { "sast": { "command": "uvx", "args": ["sast-mcp-server"] } } }
See full Cursor guide.
from agents.mcp import MCPServerStdio
sast_server = MCPServerStdio(command="uvx", args=["sast-mcp-server"])
See full OpenAI guide.
scan_vulnerabilitiesScan 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_allRun 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_historyScan 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_scanRun 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_sarifExport 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_scannersList available scanners, their installation status, and supported languages.
ignore_vulnerabilitySuppress a finding from future scans (with audit trail).
unignore_vulnerabilityRe-enable a previously suppressed finding.
list_ignored_vulnerabilitiesShow all currently suppressed findings for a project.
save_baselineRun 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_baselineCompare 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_defectdojoImport 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_githubUpload a SARIF report to GitHub Code Scanning. Requires a GITHUB_TOKEN with security_events: write scope.
| Parameter | Type | Default | Description |
|---|
| sarif_path | string | *required
ตัดมาแค่ช่วงต้น อ่านต่อใน repo