Security scanner for Model Context Protocol servers. Catch tool poisoning, prompt injection, and supply-chain attacks before your AI agent runs them.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · streamable-http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 3531afc · analyzer v33 · 1d ago
skills & prompt files 24
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/auth-hardening-auditor.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/ci-sarif-engineer.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/detection-rule-engineer.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/diff-snapshot-dev.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/docs-maintainer.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/package-source-scanner.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/sandbox-runtime-engineer.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/scoring-fp-engineer.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/source-analysis-engineer.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/supply-chain-analyst.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/test-qa.md
- agent-rules yatuk-mcpradar-3531afc/.claude/agents/transport-specialist.md
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/auth-hardening-auditor.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/ci-sarif-engineer.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/detection-rule-engineer.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/diff-snapshot-dev.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/docs-maintainer.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/package-source-scanner.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/sandbox-runtime-engineer.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/scoring-fp-engineer.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/source-analysis-engineer.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/supply-chain-analyst.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/test-qa.toml
- agent-rules yatuk-mcpradar-3531afc/.codex/agents/transport-specialist.toml
danger signals4
- suspicious endpoint 169.254.169.254 (cloud metadata) yatuk-mcpradar-3531afc/tests/test_javascript_analyzer.py :106
"fetch('http://169.254.169.254/latest');", - suspicious endpoint 169.254.169.254 (cloud metadata) yatuk-mcpradar-3531afc/tests/test_oauth_r112.py :154
json={"authorization_servers": ["http://169.254.169.254/latest"]}, - suspicious endpoint 169.254.169.254 (cloud metadata) yatuk-mcpradar-3531afc/tests/test_safe_http.py :28
"http://169.254.169.254/latest/meta-data", - suspicious endpoint 169.254.169.254 (cloud metadata) yatuk-mcpradar-3531afc/tests/test_source_analyzer.py :24
f = _scan("url = 'http://169.254.169.254/latest/meta-data/'\n", tmp_path)
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 160
filesystem 58
- fs (weak) yatuk-mcpradar-3531afc/docs/leaderboard/generate.py :11
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/scripts/batch_results.py :11
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/scripts/batch_scan.py :6
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/scripts/check_coverage.py :7
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/scripts/generate_rule_docs.py :3
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/audit/auditor.py :9
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/cli.py :8
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/config.py :7
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/config_scan/scanner.py :19
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/cvefeed/syncer.py :9
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/enrich.py :12
import shutil - fs yatuk-mcpradar-3531afc/src/mcpradar/fetch/fetcher.py :15
import shutil
show 28 more
- fs yatuk-mcpradar-3531afc/src/mcpradar/init/initializer.py :5
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/leaderboard/generator.py :10
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/output/sarif.py :6
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/output/sbom.py :13
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/plugin/manager.py :8
import shutil - fs yatuk-mcpradar-3531afc/src/mcpradar/plugin/runtime.py :10
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/plugin/scaffolder.py :5
import shutil - fs yatuk-mcpradar-3531afc/src/mcpradar/plugin/validator.py :10
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/plugin/worker.py :8
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/policy/engine.py :8
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/registry/client.py :9
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/src/mcpradar/sandbox/container.py :20
import shutil - fs yatuk-mcpradar-3531afc/src/mcpradar/snapshot/signing.py :9
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/source/analyzer.py :25
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/source/javascript.py :7
import shutil - fs yatuk-mcpradar-3531afc/src/mcpradar/storage/store.py :8
from pathlib import Path - fs yatuk-mcpradar-3531afc/src/mcpradar/supply/deps.py :15
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_audit.py :7
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_benchmark.py :5
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_cli.py :7
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_config.py :4
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_config_scan.py :6
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_coverage_gate.py :6
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_enrich.py :5
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_fetch.py :11
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_fuzz_boundaries.py :6
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_javascript_analyzer.py :5
from pathlib import Path - fs (weak) yatuk-mcpradar-3531afc/tests/test_leaderboard_refresh.py :7
from pathlib import Path
18 more not shown — this panel samples each group; the count above is the real total.
shell / exec 14
- shell yatuk-mcpradar-3531afc/src/mcpradar/fetch/fetcher.py :16
import subprocess - shell yatuk-mcpradar-3531afc/src/mcpradar/plugin/manager.py :9
import subprocess - shell yatuk-mcpradar-3531afc/src/mcpradar/plugin/runtime.py :7
import subprocess - shell yatuk-mcpradar-3531afc/src/mcpradar/plugin/validator.py :7
import subprocess - shell (weak) yatuk-mcpradar-3531afc/src/mcpradar/sandbox/container.py :21
import subprocess - shell yatuk-mcpradar-3531afc/src/mcpradar/source/javascript.py :8
import subprocess - shell yatuk-mcpradar-3531afc/src/mcpradar/watch/watcher.py :8
import subprocess - shell (weak) yatuk-mcpradar-3531afc/tests/test_javascript_analyzer.py :6
from subprocess import CompletedProcess, TimeoutExpired - shell (weak) yatuk-mcpradar-3531afc/tests/test_regression_gate.py :8
import subprocess - shell (weak) yatuk-mcpradar-3531afc/tests/test_source_analyzer.py :80
"import os, subprocess\ndef r(c):\n os.system(c)\n" - shell yatuk-mcpradar-3531afc/validation/run_benchmark.py :13
import subprocess - shell yatuk-mcpradar-3531afc/validation/run_trending.py :23
import subprocess
show 2 more
- shell yatuk-mcpradar-3531afc/validation/run_validation.py :15
import subprocess - shell yatuk-mcpradar-3531afc/validation/setup_corpus.py :7
import subprocess
network 20
- net (weak) yatuk-mcpradar-3531afc/scripts/batch_results.py :18
import urllib.request - net yatuk-mcpradar-3531afc/src/mcpradar/cvefeed/osv.py :12
import httpx - net yatuk-mcpradar-3531afc/src/mcpradar/cvefeed/syncer.py :12
import httpx - net yatuk-mcpradar-3531afc/src/mcpradar/fetch/fetcher.py :19
import urllib.parse - net yatuk-mcpradar-3531afc/src/mcpradar/fingerprint/transport_check.py :5
import socket - net yatuk-mcpradar-3531afc/src/mcpradar/network/safe_http.py :11
import socket - net yatuk-mcpradar-3531afc/src/mcpradar/output/sbom.py :10
import urllib.parse - net yatuk-mcpradar-3531afc/src/mcpradar/probe/oauth.py :27
from urllib.parse import urlparse - net yatuk-mcpradar-3531afc/src/mcpradar/registry/client.py :12
import httpx - net yatuk-mcpradar-3531afc/src/mcpradar/registry/popularity.py :27
from urllib.parse import quote, urlparse - net yatuk-mcpradar-3531afc/src/mcpradar/scanner/protocol_adapter.py :8
import httpx - net yatuk-mcpradar-3531afc/src/mcpradar/source/analyzer.py :35
"requests.get",
show 8 more
- net yatuk-mcpradar-3531afc/src/mcpradar/watch/watcher.py :11
import httpx - net (weak) yatuk-mcpradar-3531afc/tests/test_cvefeed.py :59
monkeypatch.setattr("httpx.get", mock_get) - net (weak) yatuk-mcpradar-3531afc/tests/test_oauth_r112.py :5
import httpx - net (weak) yatuk-mcpradar-3531afc/tests/test_osv.py :95
with patch("httpx.post", return_value=mock_response) as mock_post: - net (weak) yatuk-mcpradar-3531afc/tests/test_popularity.py :7
import httpx - net (weak) yatuk-mcpradar-3531afc/tests/test_protocol_adapter.py :8
import httpx - net (weak) yatuk-mcpradar-3531afc/tests/test_safe_http.py :8
import httpx - net (weak) yatuk-mcpradar-3531afc/tests/test_source_analyzer.py :28
f = _scan("import requests\ndef go(u):\n requests.get(u)\n", tmp_path)
secrets 3
- secrets yatuk-mcpradar-3531afc/src/mcpradar/cvefeed/syncer.py :91
self._api_key = api_key or os.environ.get("NVD_API_KEY", "") - secrets yatuk-mcpradar-3531afc/src/mcpradar/registry/popularity.py :92
token = os.environ.get("GITHUB_TOKEN") or os.environ.get("GH_TOKEN") - secrets (weak) yatuk-mcpradar-3531afc/tests/test_source_analyzer.py :264
" tok = os.getenv('MY_API_KEY')\n"
database 2
- db yatuk-mcpradar-3531afc/src/mcpradar/storage/store.py :6
import sqlite3 - db (weak) yatuk-mcpradar-3531afc/tests/test_storage_migrations.py :5
import sqlite3
declared dependencies 17
- mcp@>=1.27,<2
- cryptography@>=44
- httpx@>=0.28
- platformdirs@>=4.0
- pyyaml@>=6.0
- sarif-om@>=1.0
- typer@>=0.15
- rich@>=13.0
- pydantic@>=2.0
- tomli-w@>=1.0
- pytest@>=8.0
- pytest-asyncio@>=0.25
show 5 more
- pytest-cov@>=6.0
- pytest-benchmark@>=5.0
- hypothesis@>=6.130
- ruff@>=0.11
- mypy@>=1.15
perm:untrusted 1
- untrusted (weak) yatuk-mcpradar-3531afc/tests/test_source_analyzer.py :138
return requests.get(f'https://api.example.com/s?q={q}').json()
transport_posture 2
- binds all interfaces (0.0.0.0) yatuk-mcpradar-3531afc/tests/test_javascript_analyzer.py :110
"const app = { host: '0.0.0.0' };", - binds all interfaces (0.0.0.0) yatuk-mcpradar-3531afc/tests/test_source_analyzer.py :200
f = _scan("import uvicorn\nuvicorn.run(app, host='0.0.0.0', port=8000)\n", tmp_path)