frugal-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
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-auditor
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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
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.
Scan prompts for injection attacks, redact PII, and audit LLM SDK usage from any MCP client
Exposes FEDLIN's public security scanners as agent-callable tools over Streamable HTTP.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAudits 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.110 PyPI4MIT
- AlicenseNot gradedqualityCmaintenanceOfficial 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
- AlicenseAqualityBmaintenanceEnables MCP clients to run read-only static audits on supplied n8n, Dify, Trigger.dev, Activepieces, and OpenAPI exports, and to screen HTTPS URLs for unsafe schemes, returning structured findings and limitations.426 PyPIApache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to audit client websites read-only: page and structured-data checks, crawler access, Core Web Vitals, site crawls, answerability scoring, Search Console reporting and answer-engine visibility. Every tool is scoped to a per-client domain allowlist, routed through an SSRF guard and rate limits, and returns fetched third-party text inside a fenced untrusted-data block.103 npmMIT