framework-compliance-t…
Make a cloud account compliant with a security or industry framework using Prowler Cloud.
Creates MCP tools for Prowler MCP Server. Covers BaseTool pattern, tool annotations, model design, error handling and API client usage. Trigger: When working in mcp_server/ on tools (BaseTool), models (MinimalSerializerMixin/from_api_response), Hub/Docs tools, or API client
Claude Code
$ npx -y skills add prowler-cloud/prowler --skill prowler-mcp --agent claude-code
Codex
$ npx skills add prowler-cloud/prowler --skill prowler-mcp -a codex -y
Cursor
$ npx skills add prowler-cloud/prowler --skill prowler-mcp -a cursor -y
Gemini CLI
$ npx skills add prowler-cloud/prowler --skill prowler-mcp -a gemini-cli -y
GitHub Copilot
$ npx skills add prowler-cloud/prowler --skill prowler-mcp -a github-copilot -y
OpenCode
$ npx skills add prowler-cloud/prowler --skill prowler-mcp -a opencode -y
Windsurf
$ npx skills add prowler-cloud/prowler --skill prowler-mcp -a windsurf -y
name: prowler-mcp description: > Creates MCP tools for Prowler MCP Server. Covers BaseTool pattern, tool annotations, model design, error handling and API client usage. Trigger: When working in mcp_server/ on tools (BaseTool), models (MinimalSerializerMixin/from_api_response), Hub/Docs tools, or API client patterns. license: Apache-2.0 metadata: author: prowler-cloud version: "1.1" scope: [root, mcp_server] auto_invoke: "Working on MCP server tools" allowed-tools: Read, Edit, Write, Glob, Grep, Bash, WebFetch, WebSearch, Task
Stack: Python >= 3.12, FastMCP 3.4.x, httpx, Pydantic, uv (source of truth: `mcp_server/pyproject.toml`).
`prowler_mcp_server/server.py` mounts three sub-servers with prefixed namespaces:
| Sub-Server | Prefix | Auth | Source | How tools are defined | |------------|--------|------|--------|-----------------------| | Prowler App | `prowler_*` | Required (`PROWLER_API_KEY` in STDIO, bearer token in HTTP) | `prowler_app/` | `BaseTool` subclasses, auto-loaded | | Prowler Hub | `prowler_hub_*` | No | `prowler_hub/server.py` | `@hub_mcp_server.tool(annotations=...)` | | Prowler Docs | `prowler_docs_*` | No | `prowler_documentation/server.py` | `@docs_mcp_server.tool(annotations=...)` |
mcp_server/prowler_mcp_server/
├── server.py # Root server: mounts, SharedFailureMiddleware, /health
├── main.py # CLI: --transport stdio|http --host --port
├── lib/ # errors.py, types.py (NonBlankStr), logger.py, urls.py
├── prowler_app/
│ ├── server.py # FastMCP("prowler-app") + load_all_tools()
│ ├── tools/{feature}.py # BaseTool subclasses (tools/base.py = BaseTool)
│ ├── models/{feature}.py # Pydantic models (models/base.py = MinimalSerializerMixin)
│ └── utils/ # api_client.py, auth.py, tool_loader.py
├── prowler_hub/server.py
└── prowler_documentation/ # server.py, search_engine.py---
---
Plain functions decorated on the sub-server; no `BaseTool` or models. Always set both hints:
@hub_mcp_server.tool(annotations={"readOnlyHint": True, "destructiveHint": False})
async def list_checks(providers: list[str] = Field(default=[], description="...")) -> dict: ...---
1. Models in `prowler_app/models/{feature}.py` (see [assets/models.py](assets/models.py)). 2. Tool class in `prowler_app/tools/{feature}.py` extending `BaseTool` (see [assets/tool_implementation.py](assets/tool_implementation.py)). 3. Tests in `mcp_server/tests/prowler_app/{models,tools}/test_{feature}.py` (see `prowler-test-mcp`). 4. Changelog fragment `mcp_server/changelog.d/<slug>.<type>.md` (see `prowler-changelog`); never edit `CHANGELOG.md`.
---
cd mcp_server uv run prowler-mcp # STDIO mode uv run prowler-mcp --transport http --port 8000 # HTTP mode (GET /health) uv run pytest
Prowler is the world’s most widely used Open-Source Cloud Security Platform that automates security and compliance across any cloud environment.
Make a cloud account compliant with a security or industry framework using Prowler Cloud.
Vercel AI SDK patterns for the installed major (ui/package.json: `ai` 6.x, `@ai-sdk/react` 3.x). The skill name is historical;…
Django REST Framework patterns. Trigger: When implementing generic DRF APIs (ViewSets, serializers, routers, permissions,…
Reviews Django migration files for PostgreSQL best practices specific to Prowler. Trigger: When creating migrations, running…
Create and maintain GitHub Agentic Workflows (gh-aw) for Prowler. Trigger: When creating agentic workflows, modifying gh-aw…
Strict JSON:API v1.1 specification compliance. Trigger: When creating or modifying API endpoints, reviewing API responses, or…
Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication,…
Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys)…
Clean and finalize authorized natural-language text intended for readers by auditing suspicious invisible Unicode and rewriting…