Prowler mcp
Creates MCP tools for Prowler MCP Server. Covers BaseTool pattern, model design, and API client usage. Trigger: When working in mcp_server/ on tools (BaseTool), models (MinimalSerializerMixin/from_api_response), or API client patterns.From its SKILL.md
npx -y skills add prowler-cloud/prowler --skill prowler-mcpAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
2.7 KB, as published. Nobody here has run it
Overview
The Prowler MCP Server uses three sub-servers with prefixed namespacing:
| Sub-Server | Prefix | Auth | Purpose |
|---|---|---|---|
| Prowler | prowler_* | Required | Prowler Cloud, Private Cloud & Local Server management tools |
| Prowler Hub | prowler_hub_* | No | Security checks catalog |
| Prowler Docs | prowler_docs_* | No | Documentation search |
For complete architecture, patterns, and examples, see docs/developer-guide/mcp-server.mdx.
Critical Rules (Prowler Tools Only)
Tool Implementation
- ALWAYS: Extend
BaseTool(auto-registered viatool_loader.py, only public methods from the class are exposed as a tool) - NEVER: Manually register BaseTool subclasses
- NEVER: Import tools directly in server.py
Models
- ALWAYS: Use
MinimalSerializerMixinfor responses - ALWAYS: Implement
from_api_response()factory method - ALWAYS: Use two-tier models (Simplified for lists, Detailed for single items)
- NEVER: Return raw API responses
API Client
- ALWAYS: Use
self.api_clientsingleton - ALWAYS: Use
build_filter_params()for query parameters - NEVER: Create new httpx clients
Hub/Docs Tools
Use @mcp.tool() decorator directly—no BaseTool or models required.
Quick Reference: New Prowler Tool
- Create tool class in
prowler_app/tools/extendingBaseTool - Create models in
prowler_app/models/usingMinimalSerializerMixin - Tools auto-register via
tool_loader.py
QA Checklist (Prowler Tools)
- Tool docstrings describe LLM-relevant behavior
- Models use
MinimalSerializerMixin - API responses transformed to simplified models
- Error handling returns
{"error": str, "status": "failed"} - Parameters use
Field()with descriptions - No hardcoded secrets
- Tests added under
mcp_server/tests/
Resources
- Full Guide: docs/developer-guide/mcp-server.mdx
- Templates: See assets/ for tool and model templates
- Testing: See prowler-test-mcp for fixtures and test patterns