smithery/prowler-cloud

prowler-mcp

Creates MCP tools for Prowler MCP Server. Covers BaseTool pattern, model design, and API client usage.

Installation

$ npx skills add smithery/prowler-cloud --skill prowler-mcp

Also in this package

Other skills from smithery/prowler-cloud · top by installs.

npx skills add smithery/prowler-cloud

Browse all from smithery/prowler-cloud

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.0
LicenseApache-2.0
Allowed toolsRead, Edit, Write, Glob, Grep, Bash, WebFetch, WebSearch, Task
More metadata
author
prowler-cloud
version
1.0
scope
["root","mcp_server"]
auto_invoke
Working on MCP server tools

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,053 B
  • docs SUMMARY.md 254 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

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 prowlerhub* No Security checks catalog
Prowler Docs prowlerdocs* No Documentation search

For complete architecture, patterns, and examples, see [docs/developer-guide/mcp-server.mdx](../../../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 fromapiresponse() 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 buildfilterparams() 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

  1. Create tool class in prowler_app/tools/ extending BaseTool
  2. Create models in prowler_app/models/ using MinimalSerializerMixin
  3. 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
  • Failures are raised, never returned. A returned error dict is reported

as a success. Raise InvalidArgument for a bad argument, let ProwlerAPIError/ProwlerAPIUnreachable propagate, and raise ToolError without a from clause only for a sentence lib/errors.py cannot know (a resource name, a precondition, the next tool to call)

  • Parameters use Field() with descriptions
  • No hardcoded secrets
  • Tests added under mcp_server/tests/

Resources

  • Full Guide: [docs/developer-guide/mcp-server.mdx](../../docs/developer-guide/mcp-server.mdx)
  • Templates: See [assets/](assets/) for tool and model templates
  • Testing: See [prowler-test-mcp](../prowler-test-mcp/SKILL.md) for fixtures and test patterns