Skip to content

firmis pentest - Dynamic Security Probing

Terminal window
firmis pentest [path] [options]

Static analysis finds what is written in the code. firmis pentest finds what happens when you actually call the tool.

firmis scan reads your MCP server configuration and flags suspicious patterns. firmis pentest connects to your running MCP servers, sends controlled security probes, and reports on how each server behaves under attack conditions. The difference is reading a lock specification versus actually trying to pick it.

The pentest engine discovers MCP servers from your config files (claude_desktop_config.json, .vscode/mcp.json, and others), attempts to connect to each one, and runs up to 10 probe types per server. Probes cover prompt injection, tool output manipulation, exfiltration vectors, permission boundary enforcement, and path traversal. All probes are local and controlled - no traffic leaves your environment. Results are reported per-server with pass/fail and severity per probe, plus an aggregate summary.

Use firmis scan in CI on every pull request for fast static coverage. Use firmis pentest before major releases or when a new MCP server is being added to production.

Terminal
npx firmis pentest .

Run pentest with a JSON report saved to file

Section titled “Run pentest with a JSON report saved to file”
Terminal
npx firmis pentest . --output pentest-report.json
Terminal
npx firmis pentest . --probes prompt-injection,path-traversal

Static analysis only - no live connections

Section titled “Static analysis only - no live connections”
Terminal
npx firmis pentest . --skip-connect

Increase timeout for slow servers and show verbose output

Section titled “Increase timeout for slow servers and show verbose output”
Terminal
npx firmis pentest . --timeout 30000 --verbose
FlagTypeDefaultDescription
--timeout <ms>number10000Connection timeout per server in milliseconds. Increase for slow or remote servers.
--max-probes <n>number50Maximum number of probes to run per server.
--output <file>string-Save the full JSON report to a file.
--skip-connectbooleanfalseSkip live connections and run static analysis only. Useful when servers are not running.
--probes <types>stringallComma-separated list of probe types to run. Omit to run all available probes.
--verbosebooleanfalseShow detailed probe payloads, raw server responses, and per-probe evidence.
CodeMeaning
0All probes passed. No confirmed vulnerabilities.
0No MCP servers found in the target path.
1One or more probes failed. Vulnerabilities confirmed.
  • scan - static analysis, no running server required
  • discover - find MCP servers and other AI platforms before running pentest
  • MCP Servers - MCP-specific threat detection rules and what they catch