Scan MCP servers for potential threats & security findings.
Warning. Serious findings were identified. Review the full report before connecting. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
cisco-ai-defense
Source: github_code
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
M8ven verifies MCPs across every public registry — install directly from whichever one you prefer.
MCP_SCANNER_ENDPOINTexport ="https://us.api.inspect.aidefense.security.cisco.com/api/v1"MCP_SCANNER_API_KEYexport ="your_cisco_api_key"MCP_SCANNER_LLM_API_KEYexport ="bedrock-api-key-..." # Generated via Amazon Bedrock -> API KeysMCP_SCANNER_LLM_BASE_URLexport ="https://api.openai.com/v1" # Custom LLM endpointMCP_SCANNER_LLM_API_VERSIONexport ="2025-04-01-preview" # API version (if required)MCP_SCANNER_LLM_MODELexport ="bedrock/anthropic.claude-sonnet-4-5-20250929-v2:0" # Any AWS Bedrock supported modelMCP_SCANNER_LLM_TIMEOUTexport =300MCP_SCANNER_STDIO_TIMEOUTexport =180 # 3 minutes — useful for servers with heavy depsVIRUSTOTAL_API_KEYexport ="your_virustotal_api_key"MCP_SCANNER_VIRUSTOTAL_UPLOAD_FILESexport =falseMCP_SCANNER_VIRUSTOTAL_ENABLEDexport =falseAWS_REGIONexport ="us-east-1"AWS_DEFAULT_REGIONAWS_SESSION_TOKENAWS_PROFILEexport ="your-profile"AWS_BEARER_TOKEN_BEDROCKMCP_SCANNER_DEFAULT_HOSTMCP_SCANNER_DEFAULT_PORTMCP_SCANNER_ENV_API_KEY_NAMEMCP_SCANNER_ENV_AWS_REGION_NAMEMCP_SCANNER_DEFAULT_ENV_FILEMCP_SCANNER_YARA_RULES_EXTMCP_SCANNER_DEFAULT_LLM_MAX_TOKENSMCP_SCANNER_DEFAULT_LLM_TEMPERATUREMCP_SCANNER_PROMPT_LENGTH_THRESHOLDMCP_SCANNER_LLM_MAX_RETRIESMCP_SCANNER_LLM_RETRY_BASE_DELAYMCP_SCANNER_LLM_SLOW_REQUEST_THRESHOLD_MSMCP_SCANNER_MAX_FILE_SIZE_BYTESMCP_SCANNER_MAX_FUNCTION_SIZE_BYTESMCP_SCANNER_HTTP_TIMEOUTMCP_SCANNER_BEHAVIORAL_MAX_OPERATIONS_PER_PARAMMCP_SCANNER_BEHAVIORAL_MAX_FUNCTION_CALLSMCP_SCANNER_BEHAVIORAL_MAX_ASSIGNMENTSMCP_SCANNER_BEHAVIORAL_MAX_CROSS_FILE_CALLSMCP_SCANNER_BEHAVIORAL_MAX_REACHABLE_FILESMCP_SCANNER_BEHAVIORAL_MAX_CONSTANTSMCP_SCANNER_BEHAVIORAL_MAX_STRING_LITERALSMCP_SCANNER_BEHAVIORAL_MAX_REACHES_CALLSMCP_SCANNER_VT_MAX_FILESexport =10MCP_SCANNER_VT_INCLUSION_EXTENSIONSMCP_SCANNER_VT_EXCLUSION_EXTENSIONSMCP_SCANNER_PYPI_SCAN_TIMEOUTMCP_SCANNER_NPM_SCAN_TIMEOUTMCP_SCANNER_PACKAGE_ARCHIVE_MAX_BYTESMCP_SCANNER_PACKAGE_EXTRACTED_MAX_BYTESMCP_SCANNER_PACKAGE_EXTRACTED_MAX_FILESMCP_SCANNER_PACKAGE_DOWNLOAD_TIMEOUTMCP_SCANNER_VULNERABLE_PACKAGE_TIMEOUTMCP_SCANNER_OAUTH_SCOPEMCP_SCANNER_YARA_RULES_DIRLLM_API_KEYLLM_MODELLLM_BASE_URLLLM_API_VERSIONNPM_REGISTRY_URLKEYHOSTNAMEPOSTMARK_SERVER_TOKENDEFAULT_SENDER_EMAILDEFAULT_MESSAGE_STREAMLD_PRELOADTool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
538/538 tools missing one or more hints — add (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); echo (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); add (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +535 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Descriptions match behaviour
1 tool describes read intent but its handler mutates — list_directory (line 60: result = subprocess.check_output()
Rename the tool, rewrite the description, or move the side-effect into a separate clearly-named tool.
Tool inputs are validated
518/533 tool handlers declare input schemas (97%)
Declare an inputSchema with zod/joi/yup on every tool definition.
Tool handlers catch errors
Only 3/533 tool handlers wrap calls in try/catch (1%)
Wrap each tool handler body in try/catch and return a structured error response.
Tests exist
No test files found
Add tests that exercise each declared tool.
No access to sensitive paths
Reads sensitive paths: ~/.ssh/id_rsa, ~/.git-credentials, ~/.aws/credentials
Remove reads of sensitive system paths. If you genuinely need them, document why in the README.
Shell command execution
8 child_process calls — runs shell commands
Prefer library functions over shell-outs. If you must shell out, ensure all inputs are properly escaped.
Tool description accuracy
get_weather: accesses sensitive paths not mentioned in description; list_directory: description implies read-only but handler writes/deletes/executes
Update tool descriptions to accurately reflect all capabilities — especially write, delete, or execute operations.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/cisco-ai-defense-mcp-scanner-17qm4a)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check