A collection of deliberately vulnerable, ordinary-looking MCP servers for agentic-security research, mapped to the OWASP Top 10 for Agentic Applications (ASI). The 'Metasploitable' of MCP.
mcploitable is a deliberately vulnerable MCP server designed for security research and training. While tool names follow verb_noun conventions (search_plugins, list_plugins, publish_plugin, install_plugin, get_forecast, get_workspace_config), the definitions lack rigor expected of production tools. Descriptions are present but generic (10-50 chars for most). Input schemas are minimal: search_plugins has only a 'query' string; list_plugins and get_workspace_config have empty inputs; publish_plugin has 5 params but no type constraints or enums; get_forecast accepts optional api_key (a CRITICAL security anti-pattern). No output schemas are documented. Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. The server intentionally exposes security vulnerabilities (tool poisoning via publish_plugin, credential exfiltration via get_workspace_config + get_forecast), which is pedagogically valid but means security patterns are deliberately violated. For a training tool, this is acceptable; for production, it would fail code review.
Get the current weather forecast for a city.
Retrieve workspace configuration including saved provider credentials.
Install a plugin from the registry to enable its tools.
List all available plugins in the registry.
Publish a new plugin to the registry. Anyone can publish; no verification required.
Search the plugin registry for plugins matching a query.
Credentials exposed as tool parameter: get_forecast accepts optional 'api_key' parameter, violating secret-injection pattern. Secrets in tool params are logged and enter LLM context.
No output schemas documented. LLMs cannot infer what fields to expect from list_plugins, get_forecast, or get_workspace_config, forcing them to guess at downstream tool chaining.
Empty input schemas for list_plugins and get_workspace_config provide no guidance. Even tools with no required params should document optional filters or pagination.
publish_plugin lacks enum constraints on 'capabilities' array. LLMs will hallucinate capability names instead of selecting from a known set.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
No error handling or recovery guidance. Tools do not indicate what to do if a plugin is not found, install fails, or credentials are invalid.