All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Feature parity with the official Rapid7 MCP server, plus modern MCP-protocol
capabilities. See docs/MCP_API.md for the full tool/resource
reference and MCP specification conformance.
- Workspace database intelligence (read-only):
list_hosts,list_services,list_vulnerabilities,list_notes,list_credentials,list_loot— expose the Metasploit workspace database, scoped by workspace, degrading gracefully to a structured error when no database is attached. check_vulnerability: runs a module's non-destructivecheck(never fires the exploit, delivers a payload, or opens a session), mapping the outcome to a structured state (vulnerable / safe / unsupported / unknown).get_module_results: retrieves status/output for an asynchronously launched module by its execution UUID.- Tool annotations: every tool advertises MCP hints (
readOnlyHint,destructiveHint,idempotentHint,openWorldHint). - MCP resources:
msf://server/info(identity, safety posture, tool taxonomy) andmsf://module/{module}(module documentation). - Elicitation confirmation (opt-in):
--confirm-dangerous/MSF_MCP_CONFIRM_DANGEROUSasks the client to confirm destructive actions, falling back to the safety gate when the client cannot elicit.
- Opt-in safe mode (dangerous actions ENABLED by default): state-changing
tools (exploit/module execution, payload generation, session control,
listeners/jobs) remain available by default so existing users are not
regressed. Harden a deployment with
--safe-mode/MSF_MCP_ALLOW_DANGEROUS=falseto expose read-only tools only. This intentionally inverts the official Rapid7 server's default-off posture. - Optional rate limiting: off by default; enable with
--rate-limit/MSF_MCP_RATE_LIMIT.health_checkreports the safety posture. - Optional elicitation confirmation:
--confirm-dangerous.
health_checknow reportsdatabase_connectedand thesafetyposture.- Evaluated the FastMCP 3.x upgrade: cap retained at
<3.4.0(3.4.x fails to import; 3.3.x is used and verified). Fixed the stale in-package__version__.
First release published to PyPI (pip install metasploit-mcp).
- Guard against console command injection via module options
(CVE-2026-5463 / GHSA-qpc3-8vqg-8g6w in
pymetasploit3, unpatched upstream): reject newline, carriage-return, and NUL characters in module/payload option names and values across both the RPC and console execution paths, so a value likeRHOSTS=10.0.0.1\nsessions -Kcan no longer inject extra console commands. - Bump
mcpto>=1.28.1to clear three high-severity advisories (GHSA-vj7q-gjh5-988w, GHSA-jpw9-pfvf-9f58, GHSA-hvrp-rf83-w775).
- CI quality gates (packaging build +
twine check,black --check, advisorymypy) and an SBOM freshness check; the release now attachessbom.json.
- Marked the package unofficial with an explicit no-affiliation-with-Rapid7
notice; credited upstream author GH05TCREW; owner references updated to
setuidloot.
- Modern src layout - Proper Python package structure with
src/metasploit_mcp/ - Improved CLI - New
metasploit-mcpcommand-line entry point - Public release - Documentation and project structure finalized
- Package restructured to
src/metasploit_mcp/ - Entry point: use
metasploit-mcpCLI command orfrom metasploit_mcp import ... - Scripts consolidated in
scripts/directory
Major rewrite:
- Poetry dependency management (replaced requirements.txt)
- FastMCP HTTP transport (replaced SSE)
- Intelligent payload/module option detection
- Port availability checking
- Comprehensive test suite (92+ tests)
- Metasploitable 3 test harness
- Per-session locking for concurrent access safety
Initial MCP server implementation:
- Core Metasploit RPC integration
- Exploit, payload, and session management
- Console command execution
- Background job management