MCP server wrapper for Hashcat — GPU-accelerated password recovery.
Hashcat (hashcat) is a security tool that provides: GPU-accelerated password recovery.
See hashcat/hashcat for full documentation.
No API keys required — Hashcat runs locally inside the Docker container.
Summary. MCP server wrapper for Hashcat — GPU-accelerated password recovery.
Tools:
run_hashcat — Run hashcat with the given arguments. Returns structured JSON output.download_file — Download a file or repository from a URL into the container workspace. Use this to pre-download content before running multiple analyses on the same data.cleanup_downloads — Remove downloaded files from the container workspace.run_hashcatRun hashcat with the given arguments. Returns structured JSON output.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
arguments | string | Yes | — | Command-line arguments (e.g. "--help") |
source_url | string | No | "" | URL to download files into the container before running. Supports HTTP(S) files, archives (auto-extracted), and GitHub/GitLab repo URLs. Use {source} in arguments as a placeholder for the downloaded path. |
timeout_seconds | integer | No | 600 | Maximum execution time in seconds |
{
"raw": "hashcat output will appear here"
}
download_fileDownload a file or repository from a URL into the container workspace. Use this to pre-download content before running multiple analyses on the same data.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Yes | — | HTTP(S) URL, GitHub/GitLab repo URL, or data: URI |
extract | boolean | No | true | Auto-extract archives (.zip, .tar.gz, etc.) |
Returns JSON with path (local file path to use in other tools) and job_id (for cleanup).
cleanup_downloadsRemove downloaded files from the container workspace.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
job_id | string | No | "" | Specific job ID to clean up. If empty, removes all downloads |
Here are example prompts you can use with Claude (or any MCP client) when this tool is connected:
URL-based ingestion (no volume mounts needed):
docker-compose up -d
docker run -i --rm hackerdogs/hashcat-mcp:latest
docker run -d -p 8235:8235 \
-e MCP_TRANSPORT=streamable-http \
-e MCP_PORT=8235 \
hackerdogs/hashcat-mcp:latest
Add to your Claude Desktop or Cursor MCP config:
{
"mcpServers": {
"hashcat-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT", "hackerdogs/hashcat-mcp:latest"],
"env": {
"MCP_TRANSPORT": "stdio"
}
}
}
}
First, start the server using Docker Compose or docker run with HTTP mode (see Deploy above), then point your MCP client at the running server:
{
"mcpServers": {
"hashcat-mcp": {
"url": "http://localhost:8235/mcp"
}
}
}
When to use HTTP mode: HTTP mode is ideal for shared/remote deployments, multi-user setups, and Hackerdogs scheduled prompts. The server runs as a long-lived process and accepts connections from multiple MCP clients concurrently.
| Variable | Default | Description |
|---|---|---|
MCP_TRANSPORT | stdio | Transport mode: stdio or streamable-http |
MCP_PORT | 8235 | HTTP port (only used with streamable-http) |
HD_MAX_DOWNLOAD_MB | 500 | Max file download size in MB (URL fetch) |
HD_FETCH_TIMEOUT | 120 | Download timeout in seconds (URL fetch) |
The fastest way to get started is through Hackerdogs:
Give it a couple of minutes to go live. Then start querying by asking Hackerdogs to use the tool explicitly (e.g. "Use naabu to scan example.com"). If you don't specify, Hackerdogs will automatically choose the best tool for the job — it may choose this one on its own.
Want to contribute or chat with the team? Join our Discord.
docker build -t hackerdogs/hashcat-mcp:latest .
./test.sh
1. Start the server in HTTP mode:
docker run -d --rm --name hashcat-mcp-test -p 8235:8235 \
-e MCP_TRANSPORT=streamable-http \
hackerdogs/hashcat-mcp:latest
2. Initialize the MCP session:
SESSION_ID=$(curl -s -D - -X POST http://localhost:8235/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.1"}}}' \
2>&1 | grep -i mcp-session-id | awk '{print $2}' | tr -d '\r\n')
curl -s -X POST http://localhost:8235/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
3. Call a tool:
curl -s -X POST http://localhost:8235/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: $SESSION_ID" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"run_hashcat","arguments":{"arguments":"--help"}}}'
4. Clean up:
docker stop hashcat-mcp-test
You can run the hashcat CLI in the same container by overriding the entrypoint to crack hashes (mount wordlists/hashes) without starting the MCP server.
Show hash types:
docker run -i --rm --entrypoint hashcat hackerdogs/hashcat-mcp:latest --help
Example crack:
docker run -i --rm --entrypoint hashcat hackerdogs/hashcat-mcp:latest -m 0 -a 0 hashes.txt wordlist.txt
Content type
Image
Digest
sha256:0deaa8cfc…
Size
275.6 MB
Last updated
3 months ago
docker pull hackerdogs/hashcat-mcp