frugal-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@frugal-mcpaudit my-app.example.com for security headers, cookies, and forms"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Frugal Pentest Agent
Frugal Pentest Agent is a defensive web-security auditor for the applications you own. An LLM agent works through a web application, and optionally through its source code. Every request leaves from an isolated Docker sandbox, is checked against a scope you define, and ends up in a report with verified findings and CVSS 3.1 scores.
It is for developers who want to check their own application before they deploy it. It works with any OpenAI-compatible model, including models that run on your computer. It also runs as an MCP server, so people without an API key can use it from Claude Desktop.
Only test systems you own, or systems you have written permission to test. The tool asks you to confirm this, and it refuses to send requests to hosts outside the scope you set. Read the threat model before you use it on anything that matters.
Español: README.es.md
Features
Black-box checks. Send HTTP requests, crawl a site, and review security headers, cookie flags, forms and links.
Source review. Read an application's source tree in read-only mode (
--source), then confirm what the code suggests with a live request.Verified findings. Each finding has evidence, counterevidence, impact, remediation and a CVSS 3.1 base score.
Reports for people and tools.
report.md,findings.sarif(SARIF 2.1.0 for code-scanning platforms),findings.json,run.json, and an audit trail inaudit.jsonl.Two front ends. An interactive terminal session, and an MCP server (
frugal-mcp) for Claude Desktop and other MCP clients.Headless mode for CI.
--non-interactiveruns a task list without prompts and exits with code 3 when a finding reaches--fail-on.Any model. LM Studio, Ollama, llama.cpp, vLLM, OpenAI, OpenRouter or any other OpenAI-compatible endpoint. See docs/providers.md.
Guard rails. A scope check on every request, a Docker sandbox with no route to your host, commands run without a shell, an allowlist of two utilities (
curlandping), and an audit trail with credentials masked.Ready for coding agents. AGENTS.md and two skills explain how an agent can use the tool or work on it.
Related MCP server: mcp-security-suite
Requirements
Python 3.11 or newer.
Docker: Docker Desktop on Windows and macOS, or Docker Engine on Linux and WSL 2.
A model endpoint that speaks the OpenAI chat API, or an MCP client such as Claude Desktop. The MCP mode needs no API key.
Quick start
Start Docker. The first audit pulls the sandbox image from GitHub Container Registry (
ghcr.io/yayuuun/frugal-sandbox). To build it from this repository instead, run:docker build -t frugal-sandbox:latest docker/sandboxThe
v0.1.0binary predates the automatic pull. With that release, pull the image once and tag it with the local name:docker pull ghcr.io/yayuuun/frugal-sandbox:0.1.0 docker tag ghcr.io/yayuuun/frugal-sandbox:0.1.0 frugal-sandbox:latestInstall from a clone of this repository:
pip install ".[mcp]"The
mcpextra is only needed for the MCP server. If you want to work on the code, follow CONTRIBUTING.md instead.Configure the scope and the model. Copy the example file, then edit it:
cp .env.example .env # on Windows: copy .env.example .envSet
PENTEST_SCOPEto the hosts you may test, andLLM_BASE_URLandLLM_MODELto your model.Check Docker, the sandbox and the model:
frugal-audit doctorAudit. The agent asks you to confirm each tool call. Type a task in plain language, and type
/exitwhen you finish:frugal-audit runEach run writes a folder under
audit-runs/.
Continuous integration
Run a fixed task list without prompts. Calls are approved automatically, but the scope and the sandbox still apply:
frugal-audit run --non-interactive --authorized \
--scope my-app.example.com \
--task-file audit-tasks.txt \
--fail-on highaudit-tasks.txt has one task per line, and lines that start with # are comments. Keep the scope narrow and the tasks specific. The exit codes are listed in docs/reports.md.
Source code review
Point the agent at the application's source tree to review it next to the running application:
frugal-audit run --scope my-app.example.com --source ./my-appThe source tree is read-only. The agent can list and read its files. It cannot write to them or run them.
Use it from Claude Desktop without an API key
frugal-mcp exposes the audit tools over the Model Context Protocol. Claude Desktop, or another MCP client, does the reasoning with its own model, and the server still enforces the scope and the sandbox.
See docs/mcp.md for the setup and the tool list, and examples/claude-desktop/claude_desktop_config.json for a configuration example.
Configuration
Settings come from environment variables, or from a .env file in the working directory. Command-line flags override them.
Environment variable | Flag | Default | Purpose |
|
| none | Comma-separated hosts you may test. Bare host names or IPv4 addresses only. |
|
| none | Source tree to review, read-only. |
|
|
| Folder where run folders are written. |
|
|
| OpenAI-compatible endpoint. |
|
| none | Model name, exactly as the endpoint lists it. |
| none |
| Key for endpoints that require one. |
|
| model default | Sampling temperature. |
| none |
| Seconds to wait for each model reply. |
| none |
| Conversation size before older turns are summarized. |
| none |
| Image that runs the tools. |
| none |
| Network of the sandbox. The |
Other flags: --run-name (a label for the run folder), --timeout (minutes), --max-tool-steps (default 15), --task, --task-file, --authorized, --non-interactive, and --fail-on (critical, high, medium, low, info or none; default high).
Command | Purpose |
| An interactive session, or a non-interactive run with |
| Checks Docker, the sandbox network and the model endpoint. |
| Regenerates |
| Serves the audit tools over MCP. |
Reports
Each run writes a folder such as audit-runs/20261022-101500-my-app/, with report.md, findings.sarif, findings.json, run.json and audit.jsonl. docs/reports.md describes the fields, the severity scale and how to upload the SARIF file.
Run folders can hold sensitive data from the systems you test. audit-runs/ is in .gitignore. Review a report before you share it.
Practice target
The repository includes a Docker Compose file for OWASP Juice Shop, a deliberately vulnerable application. It joins the same isolated lab network as the sandbox:
docker compose -f examples/juice-shop/docker-compose.yml up -d
frugal-audit run --scope juice-shopThe target publishes no ports to your machine, so only the sandbox can reach it. Juice Shop is insecure by design. Never expose it to the internet.
How it stays safe
Every request is checked against the scope before it is sent. Redirects are not followed automatically.
Requests run in a container with a read-only file system, no host mounts, all Linux capabilities dropped except the one
pingneeds, a memory limit and a process limit. The sandbox network is internal by default.Commands run as argument lists, never through a shell. Only
curlandpingcan run, and only against hosts in scope.In an interactive session you approve each call, unless you type
/accept_all on. MCP clients approve calls through their own settings.The audit trail records each decision and its outcome. It never contains response bodies, and it masks credentials in headers, options and URLs.
The threat model lists the risks that remain, such as state-changing requests against in-scope systems and what a hosted model endpoint learns about the target.
Documentation
Contributing and security
CONTRIBUTING.md explains the development setup and the checks a change must pass.
CODE_OF_CONDUCT.md sets the expectations for everyone who takes part.
SECURITY.md explains how to report a vulnerability in this tool privately.
Acknowledgements
The project layout takes ideas from Strix, an Apache-2.0 licensed AI pentesting tool: agent guidance files, skills, a headless CI mode and a report folder per run. The code here is written from scratch, and no Strix code is copied.
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Find, vet, and run MCP tools through a secure audited gateway with prompt-injection risk scoring
Security & DLP proxy for MCP: tool-poisoning scans, PII redaction on tool args/results. Beta.
Exposes FEDLIN's public security scanners as agent-callable tools over Streamable HTTP.
Paid remote MCP for LLM security scans, jailbreak checks, analytics, checkout, and readiness.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAudits MCP server configurations for security risks including capability inventory, SSRF, prompt injection, and drift detection. Works in read-only mode and can also be used as an MCP server to let AI agents audit their own attack surface.132 PyPI4MIT
- AlicenseNot gradedqualityCmaintenanceEnables enterprise MCP security auditing through 12 deterministic no-LLM tools for evidence-gated claims, skill/prompt supply-chain audits, token profiling, and server auth-mode checks.MIT
- AlicenseNot gradedqualityBmaintenanceOfficial Model Context Protocol server exposing static AST security tools (audit_mcp_repository, audit_local_directory) to scan MCP tools for vulnerabilities before connecting them to Claude or Cursor.MIT

@cognium/mcp-serverofficial
AlicenseNot gradedqualityDmaintenanceEnables MCP clients such as Cursor, Claude Desktop, and Claude Code to run deterministic static-analysis tools for scanning projects, listing entry points and reachable sinks, tracing taint paths, explaining findings, and checking sanitizers without API keys or network access.MIT