MCPProxy
Local-first MCP proxy with BM25 tool discovery, security scanning, quarantine & ~99% token savings
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Local security scanner for AI agents: SAST, SCA, secrets, IaC; verifies exploit and fix.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
GSC_ALLOWED_ROOTSต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"gsc-scanner": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GSC_ALLOWED_ROOTS",
"ghcr.io/poliakarmai/gsc-scanner:v1",
"mcp"
],
"env": {
"GSC_ALLOWED_ROOTS": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add gsc-scanner --env GSC_ALLOWED_ROOTS='ใส่ค่าของคุณ' -- docker run -i --rm -e GSC_ALLOWED_ROOTS ghcr.io/poliakarmai/gsc-scanner:v1 mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"gsc-scanner": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GSC_ALLOWED_ROOTS",
"ghcr.io/poliakarmai/gsc-scanner:v1",
"mcp"
],
"env": {
"GSC_ALLOWED_ROOTS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"gsc-scanner": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GSC_ALLOWED_ROOTS",
"ghcr.io/poliakarmai/gsc-scanner:v1",
"mcp"
],
"env": {
"GSC_ALLOWED_ROOTS": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
GSC_ALLOWED_ROOTS envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 8 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub poliakarmai ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.0) เข้า registry 13 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Docker ในเครื่องด้วย
ในหมวดเดียวกันมี MCPProxy, ConnectSecure MCP, EchelonGraph CVE & Exposure
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Local-first MCP proxy with BM25 tool discovery, security scanning, quarantine & ~99% token savings
Vulnerability management across all ConnectSecure clients: exposure ranking, CVE impact, blind spots
CVE, KEV, EPSS, SBOM and advisory lookups; per-CVE exposure from Shodan data (© Shodan). Keyless.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
GSC is a self-learning AppSec platform that proves exploits, verifies fixes, and heals CI.
detect → prove → fix → verify → heal → learn
$ gsc scan . --ci --json
[{"rule_id": "GS001", "severity": "CRITICAL", "title": "Hardcoded API key", "file_path": "app.py", "line": 1, "fix_suggestion": "Move this value to an env var"}]
Most scanners report matches. GSC proves them: every finding can be turned into a runnable proof-of-concept, validated in a sandbox, then fixed and re-verified by re-running the exploit.
What makes it different:
{tenant_hash, rule_id, tp, fp} + DP noise).Who it is for: platform/DevSecOps teams that need findings *proven* before a PR blocks; AppSec engineers triaging noisy regex output; AI coding agents that need a scanner tool over MCP.
Use it as a GitHub Action (see below), from the CLI / Docker image, or as an MCP server for AI coding agents — ten tools (scan_repo, scan_diff, list_findings, get_finding, get_poc, verify_finding, verify_findings, verify_fix, doctor, list_detectors) over stdio or HTTP. Read-only towards your repository: no patching, no PRs, no writes to the working tree. (verify_finding does execute a PoC — see the safety notes in the MCP section.)
Proven on real code: HALL_OF_FAME.md · first public case study: CASE_STUDY_CYBERBRO.md
The same fixed corpus is re-scanned after detector changes — 100 real repositories (90 clean + 10 known-vulnerable), pinned to specific commits, regex-only, no LLM key. Same projects every run, so a delta is the fix and not a new dataset.
| 2026-08-21 (baseline) | 2026-08-28 (after FP fixes) | |
|---|---|---|
| Findings | 64,831 | 41,127 |
| CRITICAL | 4,302 | 414 |
| HIGH | 37,246 | 2,187 |
| Known-vulnerable projects flagged | 8 / 10 | 10 / 10 |
| Clean projects with ≥1 false CRITICAL | 48 / 90 | 41 / 90 |
CRITICAL precision on a labeled review of 434 findings: ~4–5% at baseline → 31.1% (TP = 135, FP = 299, 2026-08-26). That is still noisy. The remaining false-positive mass is concentrated in GS001 (secrets), GS005 (SQLi), GS020 (XSS) and GS037 (path traversal) and is worked down rule by rule — we publish the numbers we have, not the numbers we would like.
*Method note:* corpus, severity counting and per-rule aggregation are ours; the engine ships as a closed image, so reproducing this means running gsc scan --ci --json over the same pinned projects and aggregating the same way. No clean-room comparison against other vendors is implied.
License: this repo (Action, docs, marketing) is Apache-2.0. The engine ships as a closed Docker image ghcr.io/poliakarmai/gsc-scanner under BSL 1.1 (free to scan your own repos; competing SaaS requires a commercial license; converts to Apache-2.0 on 2030-08-06).
First public proof — stanfrbd/cyberbro (46,677 LOC, 281 files):
| Finding | CWE-79 XSS via search highlight — static/history.js:50, p.innerHTML = p.title.replace(...) |
| Severity | MEDIUM (CVSS 5.4) — reflected XSS без аутентификации |
| Detector | GS020 (gs020_xss_injection) |
| Fix | 9 lines, 1 file — exploit re-run in sandbox confirms it no longer fires |
Full write-up → CASE_STUDY_CYBERBRO.md · more findings in production OSS → HALL_OF_FAME.md
GSC — самообучающаяся AppSec-платформа полного цикла.
detect → prove → fix → verify → heal → learn
Проверьте свой репозиторий за 30 секунд. Добавьте файл .github/workflows/gsc.yml:
name: GSC Audit
on: pull_request: branches: [main, master]
jobs: audit: runs-on: ubuntu-latest permissions: contents: read pull-requests: write steps:
Откройте pull request — GSC отсканирует код, пришлёт комментарий с находками (CRITICAL / HIGH) и поставит оценку безопасности. Ядро поставляется как закрытый Docker-образ ghcr.io/poliakarmai/gsc-scanner — исходный код движка не публикуется.
Воспроизводимость.
@v1и тег образа — плавающие ссылки: результат может
измениться без изменения вашего workflow. Для аудита/CI фиксируйте
poliakarmai/gsc@и образ по digest
(
ghcr.io/poliakarmai/gsc-scanner@sha256:).
Входные параметры:
| Вход | По умолчанию | Что делает |
|---|---|---|
path | . | Что сканировать (корень репозитория) |
deep_scan | true | Глубокий скан (Echelon 4, медленнее) |
fail_on_critical | false | true — упасть при CRITICAL |
fail_on_score | 0 | Упасть, если score ниже порога. 0 = выключено, диапазон 1–100 |
max_findings_to_comment | 10 | Сколько строк показывать в комментарии на каждую секцию |
llm_api_key | '' | BYO-LLM ключ для ревалидации (без него — regex-only) |
llm_base_url | '' | Свой OpenAI-совместимый эндпоинт (DeepSeek/OpenRouter/Ollama) |
llm_model | '' | Имя модели для ревалидации |
sarif | false | Дополнительно отдать SARIF для GitHub Code Scanning |
reachability | false | Понизить находки в недостижимых файлах (import-graph) |
Выходы: score (0–100) и grade (A+ … F).
Комментарий в PR считает находки по локациям (
file:line), а не по
срабатываниям детекторов: один секрет, пойманный четырьмя правилами, — это
одна строка с перечислением правил, а не четыре.
Totalв таблице всегда
равен сумме категорий.
LLM-ревалидация — на вашем ключе (BYO-LLM):
- uses: poliakarmai/gsc@v1
with: llm_api_key: ${{ secrets.DEEPSEEK_API_KEY }} # DeepSeek / OpenRouter / GMI / Ollama
Без ключа — быстрый regex-only скан (уязвимости находит; confirmed-вердикты — с ключом).
gsc scan . --ci --json # JSON-находки в stdout
gsc scan . --fail-on-blocking # exit 1 при CRITICAL/HIGH — гейт для pre-commit / CI
# тот же движок без установки
docker run --rm -v "$PWD:/repo:ro" ghcr.io/poliakarmai/gsc-scanner:v1 scan /repo --ci --json
scan — точка входа; pof (Proof-of-Fix), verify-fix, report, --compliance … и остальные ≈80 подкоманд — в gsc --help.
| Слой | Возможности |
|---|---|
| SAST | 68 детекторов (SAST · SCA · Secrets · IaC), YAML rule DSL, LLM-триаж с confidence scoring |
| Доказательство | PoC auto-generation — рабочий эксплойт для находки *(CLI --with-poc, MCP get_poc/verify_finding)* |
| Исправление | Proof-of-Fix — патч верифицируется перезапуском эксплойта в sandbox; self-healing CI (авто-PR) *(CLI, требует явного флага)* |
| Приоритизация | EPSS + CISA KEV + ExploitDB (не сырой CVSS), БДУ ФСТЭК |
| Recon | passive reconnaissance: subdomain / tech / DNS / HTTP |
| Supply chain | SBOM (CycloneDX / SPDX) + VEX |
| Compliance | маппинг находок на ГОСТ Р 56939-2024, PCI DSS 4.0, SOC2, ISO 27001, CWE, OWASP — отчёт для ФСТЭК / КИИ / аудита |
| Интеллект | security archaeology, predictive forecasting, NL-policy, federated self-learning |
Где что доступно. Возможности движка не равны возможностям Action/MCP:
| Возможность | Action | MCP | CLI / engine image |
|---|---|---|---|
| Скан (SAST/SCA/Secrets/IaC) | ✅ | ✅ | ✅ |
| PoC auto-generation | — | ✅ (
get_poc,verify_finding) | ✅ (--with-poc) |
| Proof-of-Fix | — | ✅ (
verify_fix) | ✅ (pof generate) |
| Self-healing CI (авто-PR) | — | — | ✅ (
--create-pr, human-approval) |
В MCP нет деструктивных действий (auto-patch/PR) — осознанно, они остаются
в CLI/human-лупе.
verify_findingперезапускает PoC в sandbox, то есть по
побочным эффектам это не «чисто read-only».
Исходники движка в публичном репо не публикуются (закрытый образ, BSL 1.1) — колонка «Где» называет модуль, а не путь в этом репозитории.
| Механика | Где | Что делает |
|---|---|---|
| Мутационный re-attack PoF | движок: PoC-мутатор → Proof-of-Fix | после фикса PoC перезапускается в мутированных формах (url-encode, double-encode, HTML-entities, case-swap, tab/space) — ловит «залатали симптом, а не причину». Детерминированно, без LLM |
| Positive control + taint-recheck | движок: PoF-sandbox + taint-recheck тесты | PoC обязан срабатывать на уязвимом варианте и молчать на исправленном |
| OS-изоляция hostile-PoC | движок: _isolation_backend() | docker/podman (--network none, read-only, cap-drop, non-root) на хосте, bubblewrap внутри образа (--unshare-all: mount/pid/net/user/ipc/uts, --clearenv, read-only системные деревья, writable только workspace, --die-with-parent) — докер-демон и проброс сокета не нужны. Уровень изоляции (docker / podman / bwrap) возвращается в каждом результате и в ответе verify_finding (isolation); без OS-изоляции движок fail-closed и отвечает unavailable, а не «не воспроизводится» |
| Quick-режим без LLM | CLI: gsc external-scan --scan-mode quick | regex-only: находки без LLM-вердиктов, 0 токенов |
GSC — это движок + детекторы + PoC, а не очередная обёртка над LLM.
Почему это выгодно вам:
Помимо BYO-LLM у GSC есть замкнутый контур обучения без LLM (0 токенов, детерминированный):
скан → авто-разметка findings по calibration-сети (13 проектов: 9 clean + 4 vuln)
→ авто-деактивация шумных паттернов (<30% TP) → пополнение эталонов из security-фидов → federated feedback (приватно: только {tenant_hash, rule_id, tp, fp} + DP-шум)
Детекторы учатся на реальных находках клиентов через federated-контур — то, чего мейнстрим сознательно избегает (риск дрейфа). GSC обходит это консервативным self-learning: разметка по фиксированной сети + дискретные деактивации, без переписывания весов — скорость ежедневного апдейта без катастрофического дрейфа.
| Вендор | Как обновляет правила | Self-learning |
|---|
| Semgrep | вручную (semgrep-rules) | ❌
ตัดมาแค่ช่วงต้น อ่านต่อใน repo