Security scanner for MCP (Model Context Protocol) servers that detects semantic drift, typosquatting, excessive permissions, and manifest vulnerabilities
DriftCop presents a severe case of inferred tool definitions with minimal visible schema validation and almost no parameter descriptions. The tool definitions appear only in example file paths (javascript_tool.js, python_tool.py) with no evidence of actual implementation, registration, or runtime behavior in the server codebase. The source shows a Makefile, pyproject.toml, and package.json for a security scanner project, but NO MCP server implementation code is provided. Tool names are present but lack proper verb-noun conventions (execute_command, query_database, call_api are overly generic). None of the 7 tools have visible descriptions in the source code, the descriptions provided in the evaluation prompt appear to be inferred or aspirational. Input schemas are partially visible in the prompt but lack parameter descriptions and have inconsistent constraint application (e.g., delete_file has additionalProperties:true despite being marked DESTRUCTIVE, undermining input validation). No output schemas are documented. Error handling is not visible. Security concerns are severe: execute_command and delete_file are dangerously exposed without confirmation or permission gates.
Make HTTP API calls
Delete a file - use with caution!
Execute a shell command
Execute SQL queries
Safely read file contents
Search for files by pattern
Write content to a file
NO PARAMETER DESCRIPTIONS VISIBLE. All 7 tools lack descriptions for their input parameters. LLMs cannot infer that 'pattern' in search_files means a glob or regex, or that 'confirm' in delete_file is a safety check. This violates the critical baseline that 100% of production A+ tools have parameter descriptions.
NO TOOL DESCRIPTIONS IN SOURCE. The server source code provided (Makefile, pyproject.toml, package.json) contains NO MCP server implementation. Tool descriptions are inferred from the evaluation prompt, not from actual code. This violates the principle that scores are evidence-based only from what is visible in source.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 26 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 47 | - | v1 |
TOOLS ARE INFERRED, NOT REGISTERED. The source code provided shows no explicit tool registration or MCP server class. Tool definitions appear only in example file paths in the prompt.
DANGEROUS EXECUTION TOOLS WITHOUT GATING. execute_command and delete_file are high-risk tools with no visible permission checks, rate limiting, or dry-run support. execute_command lacks args validation (type array of strings but no length bounds). delete_file accepts additionalProperties:true, allowing unconstrained input. Neither tool has error handling or recovery guidance documented.
MISSING OUTPUT SCHEMAS. No tool documents what it returns. LLMs cannot plan multi-step operations without knowing if search_files returns an array or a paginated response, or if query_database returns rows or metadata.
OVERLY GENERIC TOOL NAMES. 'execute_command' is vague (execute what kind of command? shell? API?). 'call_api' is underspecific. 'query_database' doesn't hint at the database type. Baseline: 90% of production tools start with action verbs AND distinguish related tools by specificity. These names would cause LLMs to select the wrong tool.
INCONSISTENT SCHEMA CONSTRAINTS. delete_file has additionalProperties:true despite being marked DESTRUCTIVE, defeating input validation. search_files and execute_command lack length/count bounds on arrays and strings. call_api lacks response type validation (body is additionalProperties:true). read_file pattern is overly restrictive (^[a-zA-Z0-9/_.-]+$) and excludes valid Unix paths with spaces or special chars.
NO ERROR HANDLING GUIDANCE. No tool documents how to recover from errors. If execute_command fails, what should the LLM do? Retry? Escalate? Ask the user? A bare exit code tells the agent nothing. Pattern requires: 'Error responses must tell the LLM what to do next.'