github Python re-analysis due

saagpatel/MCPAudit

v2.7.0
github

Audit all locally configured MCP servers for permission risks, prompt injection threats, and schema drift

maintainer
saagpatel
licence
MIT
first seen
2026-06-06
last seen
2026-09-10
releases · 30d
2
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  2. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  3. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  4. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  5. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  6. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  7. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  8. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  9. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  10. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  11. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  12. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
  13. HIGH code analysis flagged dynamic code execution in saagpatel/MCPAudit
capabilities 13 tools
transport stdio · http verified reported listed in the official MCP registry counts 13 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • check_server
  • get_artifact_verify_findings
  • get_escalation_findings
  • get_high_risk_servers
  • get_injection_findings
  • get_integrity_findings
  • get_package_verify_findings
  • get_provenance_findings
  • get_shadowing_findings
  • get_ssrf_findings
  • get_trifecta_findings
  • list_discovered_servers
  • scan_mcp_servers
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 3dc9aad · analyzer v33 · 3d ago

skills & prompt files 3

danger signals2

code evidence vv2.7.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 165

filesystem 98

  • fs (weak) saagpatel-MCPAudit-3dc9aad/examples/consumers/dashboard_summary.py :8 from pathlib import Path
  • fs (weak) saagpatel-MCPAudit-3dc9aad/examples/consumers/parse_report.py :8 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/mcp_audit_build_backend.py :10 from pathlib import Path
  • fs (weak) saagpatel-MCPAudit-3dc9aad/scripts/generate_authorization_posture_schemas.py :6 from pathlib import Path
  • fs (weak) saagpatel-MCPAudit-3dc9aad/scripts/generate_enforcement_schemas.py :6 from pathlib import Path
  • fs (weak) saagpatel-MCPAudit-3dc9aad/scripts/generate_oauth_transcript_fixtures.py :7 from pathlib import Path
  • fs (weak) saagpatel-MCPAudit-3dc9aad/scripts/launch_preflight.py :8 import shutil
  • fs (weak) saagpatel-MCPAudit-3dc9aad/scripts/smoke_installed_artifact.py :7 from pathlib import Path
  • fs (weak) saagpatel-MCPAudit-3dc9aad/scripts/validate_delivery_evidence.py :14 from pathlib import Path
  • fs (weak) saagpatel-MCPAudit-3dc9aad/scripts/verify_release.py :16 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/agent_ui_cli.py :10 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/agent_ui_scanner.py :11 from pathlib import Path
show 28 more
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/authorization_posture_cli.py :6 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/authorization_posture_scanner.py :8 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/cache_contract_cli.py :6 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/cache_contract_scanner.py :10 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/cli.py :10 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/confighealth.py :14 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/connector.py :8 from pathlib import PurePath
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/discovery/base.py :5 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/discovery/claude_code.py :5 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/discovery/claude_desktop.py :6 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/discovery/cursor.py :4 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/discovery/vscode.py :13 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/discovery/windsurf.py :5 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/enforcement_cli.py :7 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/engine.py :23 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/evidence_enforcement.py :18 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/integrity.py :28 import shutil
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/monitor.py :10 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/oauth_transcript_cli.py :6 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/oauth_transcript_scanner.py :11 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/overrides.py :5 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/pinning.py :12 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/pkgverify.py :584 with _ARTIFACT_OPENER.open(req, timeout=_DOWNLOAD_TIMEOUT) as resp: # noqa: S310 (https + host allowlisted)
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/policy.py :6 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proof_capsule.py :11 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proof_cli.py :6 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proof_models.py :9 from pathlib import Path
  • fs saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proof_observer.py :11 import shutil

58 more not shown — this panel samples each group; the count above is the real total.

shell / exec 21

  • shell saagpatel-MCPAudit-3dc9aad/mcp_audit_build_backend.py :7 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/scripts/launch_preflight.py :9 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/scripts/verify_release.py :11 import subprocess
  • shell saagpatel-MCPAudit-3dc9aad/src/mcp_audit/monitor.py :7 import subprocess
  • shell saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proof_capsule.py :10 import subprocess
  • shell saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proof_observer.py :14 import subprocess
  • shell saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proof_trust.py :9 import subprocess
  • shell saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proofos_postgres.py :19 import subprocess
  • shell saagpatel-MCPAudit-3dc9aad/src/mcp_audit/safeforge_runtime.py :13 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_agent_ui_audit.py :6 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_api.py :13 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_delivery_evidence.py :7 import subprocess
show 9 more
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_examples.py :7 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_oauth_transcript_audit.py :7 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_proof_attempt_evidence.py :8 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_proof_before_action.py :10 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_proofos_postgres.py :7 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_release_metadata.py :8 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_repo_hygiene.py :5 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_safeforge_consumer.py :7 import subprocess
  • shell (weak) saagpatel-MCPAudit-3dc9aad/tests/test_skillscan.py :220 subprocess_line = "subprocess.run(['" + "wget" + "', remote])"

network 27

  • net (weak) saagpatel-MCPAudit-3dc9aad/scripts/launch_preflight.py :12 import urllib.error
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/agent_ui_scanner.py :13 from urllib.parse import urlsplit
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/analyzer.py :5 from urllib.parse import urlparse
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/authorization_posture_models.py :10 from urllib.parse import unquote, urlsplit
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/cache_contract_scanner.py :870 "Do not cache results from requests carrying inputResponses or requestState.",
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/egress.py :38 from urllib.parse import urlparse
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/engine.py :19 import socket
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/oauth_transcript_models.py :9 from urllib.parse import urlsplit
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/oauth_transcript_scanner.py :13 from urllib.parse import urlsplit, urlunsplit
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/pkgverify.py :46 import urllib.error
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proof_trust.py :14 from urllib.parse import urlsplit, urlunsplit
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/safeforge.py :389 from urllib.parse import urlsplit
show 15 more
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/safeforge_consumer.py :610 from urllib.parse import urlsplit
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/safeforge_runtime.py :22 from urllib.parse import urlsplit
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/session_resume_lab.py :235 state = self.requests.get(request_id)
  • net saagpatel-MCPAudit-3dc9aad/src/mcp_audit/ssrf.py :13 from urllib.parse import urlparse
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_agent_ui_audit.py :5 import socket
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_api.py :12 import socket
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_artifact_verify.py :16 import urllib.error
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_authorization_posture.py :6 import socket
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_egress.py :5 import socket
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_oauth_transcript_audit.py :6 import socket
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_result_parcel_lab.py :9 import socket
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_safeforge_runtime.py :7 import socket
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_session_resume_lab.py :5 import socket
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_skillscan.py :177 "import requests",
  • net (weak) saagpatel-MCPAudit-3dc9aad/tests/test_task_time_machine.py :5 import socket

secrets 2

  • secrets saagpatel-MCPAudit-3dc9aad/src/mcp_audit/engine.py :138 api_key = os.environ.get("ANTHROPIC_API_KEY", "")
  • secrets saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proofos_postgres.py :11 import getpass

database 3

  • db saagpatel-MCPAudit-3dc9aad/src/mcp_audit/proof_observer.py :12 import sqlite3
  • db (weak) saagpatel-MCPAudit-3dc9aad/tests/test_proof_attempt_evidence.py :7 import sqlite3
  • db (weak) saagpatel-MCPAudit-3dc9aad/tests/test_proof_before_action.py :9 import sqlite3

tool registrations 13

  • scan_mcp_servers saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :106
  • get_high_risk_servers saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :112
  • check_server saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :123
  • get_injection_findings saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :134
  • get_ssrf_findings saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :153
  • get_trifecta_findings saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :173
  • get_shadowing_findings saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :207
  • get_escalation_findings saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :225
  • get_provenance_findings saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :250
  • get_integrity_findings saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :276
  • get_package_verify_findings saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :303
  • get_artifact_verify_findings saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :331
show 1 more
  • list_discovered_servers saagpatel-MCPAudit-3dc9aad/src/mcp_audit/server.py :359

declared dependencies 10

  • mcp@>=2.0,<3.0
  • click@>=8.3.3,<9.0
  • rich@>=15.0.0
  • anyio@>=4.0
  • json5@>=0.10
  • cryptography@>=50.0.0,<51.0
  • pydantic@>=2.0
  • pyyaml@>=6.0
  • watchfiles@>=1.1.1
  • anthropic@>=0.40