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 via tool_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
MinimalSerializerMixin for 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_client singleton
- 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/ extending BaseTool
- Create models in
prowler_app/models/ using MinimalSerializerMixin
- Tools auto-register via
tool_loader.py
QA Checklist (Prowler Tools)
Resources