mcpField
P
prowler-mcp

prowler-mcp

github.com/prowler-cloud開発15.1k68 回インストール今日更新
リポジトリ

prowler-mcp について

prowler-mcpは、ProwlerのMCPサーバー開発向けスキルです。ツールの実装やレスポンスモデルの規約に加え、Prowler管理、セキュリティチェックカタログ、ドキュメント検索の各ツールを説明します。

主な機能

  1. 01Prowlerツール実装の規約
  2. 02レスポンスモデルとAPIクライアントの指針
  3. 03ツール自動登録の説明
  4. 04HubとDocsのツールパターン
  5. 05テストと品質確認のチェックリスト

活用シーン

  1. 01Prowler管理ツールの追加
  2. 02セキュリティカタログまたはドキュメントツールの実装
  3. 03MCPツールの変更とテストのレビュー

MCP 対応

このスキルは、Prowler管理ツール、Prowler Hubのセキュリティチェックカタログ、Prowler Docsの検索を提供する、名前空間付きの3つのサブサーバーから成るProwler MCPサーバーを説明します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/prowler-cloud/prowler --skill prowler-mcp

インストール後、Claude Code で/prowler-mcpを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
base_tool.py
models.py
tool_implementation.py

詳細

概要

Prowler MCP サーバーでは、プレフィックス付きの名前空間を使用する 3 つのサブサーバーを利用します。

サブサーバープレフィックス認証目的
Prowlerprowler_*必須Prowler Cloud、Private Cloud、ローカルサーバーの管理ツール
Prowler Hubprowler_hub_*不要セキュリティチェックのカタログ
Prowler Docsprowler_docs_*不要ドキュメント検索

アーキテクチャ、パターン、例について詳しくは、docs/developer-guide/mcp-server.mdx をご覧ください。


重要なルール(Prowler ツールのみ)

ツールの実装
  • 必ず:BaseTool を継承します(tool_loader.py 経由で自動登録され、クラスのパブリックメソッドのみがツールとして公開されます)
  • 禁止:BaseTool のサブクラスを手動で登録すること
  • 禁止:server.py でツールを直接インポートすること
モデル
  • 必ず:レスポンスには MinimalSerializerMixin を使用します
  • 必ず:from_api_response() ファクトリーメソッドを実装します
  • 必ず:2 段階のモデル(リスト用の簡易モデル、単一項目用の詳細モデル)を使用します
  • 禁止:未加工の API レスポンスを返すこと
API クライアント
  • 必ず:self.api_client シングルトンを使用します
  • 必ず:クエリパラメーターには build_filter_params() を使用します
  • 禁止:新しい httpx クライアントを作成すること

Hub/Docs ツール

@mcp.tool() デコレーターを直接使用します。BaseTool やモデルは不要です。


クイックリファレンス:新しい Prowler ツール

  1. prowler_app/tools/ に BaseTool を継承するツールクラスを作成します
  2. prowler_app/models/ に MinimalSerializerMixin を使用したモデルを作成します
  3. ツールは tool_loader.py 経由で自動登録されます

QA チェックリスト(Prowler ツール)

  • ツールの docstring で LLM に関連する動作を説明している
  • モデルが MinimalSerializerMixin を使用している
  • API レスポンスが簡易モデルに変換されている
  • 失敗は必ず送出し、返してはいけません。エラー辞書を返すと成功として報告されます。不正な引数には InvalidArgument を送出し、ProwlerAPIError/ProwlerAPIUnreachable はそのまま伝播させます。また、lib/errors.py では判断できない情報(リソース名、前提条件、次に呼び出すツール)を含む文に限り、from 節なしで ToolError を送出します
  • パラメーターに説明付きの Field() を使用している
  • ハードコードされたシークレットがない
  • mcp_server/tests/ にテストを追加している

リソース

コメント