prowler-mcp について
prowler-mcpは、ProwlerのMCPサーバー開発向けスキルです。ツールの実装やレスポンスモデルの規約に加え、Prowler管理、セキュリティチェックカタログ、ドキュメント検索の各ツールを説明します。
主な機能
- 01Prowlerツール実装の規約
- 02レスポンスモデルとAPIクライアントの指針
- 03ツール自動登録の説明
- 04HubとDocsのツールパターン
- 05テストと品質確認のチェックリスト
活用シーン
- 01Prowler管理ツールの追加
- 02セキュリティカタログまたはドキュメントツールの実装
- 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.pymodels.pytool_implementation.py詳細
概要
Prowler MCP サーバーでは、プレフィックス付きの名前空間を使用する 3 つのサブサーバーを利用します。
| サブサーバー | プレフィックス | 認証 | 目的 |
|---|---|---|---|
| Prowler | prowler_* | 必須 | Prowler Cloud、Private Cloud、ローカルサーバーの管理ツール |
| Prowler Hub | prowler_hub_* | 不要 | セキュリティチェックのカタログ |
| Prowler Docs | prowler_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 ツール
prowler_app/tools/にBaseToolを継承するツールクラスを作成しますprowler_app/models/にMinimalSerializerMixinを使用したモデルを作成します- ツールは
tool_loader.py経由で自動登録されます
QA チェックリスト(Prowler ツール)
- ツールの docstring で LLM に関連する動作を説明している
- モデルが
MinimalSerializerMixinを使用している - API レスポンスが簡易モデルに変換されている
- 失敗は必ず送出し、返してはいけません。エラー辞書を返すと成功として報告されます。不正な引数には
InvalidArgumentを送出し、ProwlerAPIError/ProwlerAPIUnreachableはそのまま伝播させます。また、lib/errors.pyでは判断できない情報(リソース名、前提条件、次に呼び出すツール)を含む文に限り、from節なしでToolErrorを送出します - パラメーターに説明付きの
Field()を使用している - ハードコードされたシークレットがない
-
mcp_server/tests/にテストを追加している
リソース
- 完全ガイド:docs/developer-guide/mcp-server.mdx
- テンプレート:ツールとモデルのテンプレートについては、assets/ をご覧ください
- テスト:フィクスチャとテストパターンについては、prowler-test-mcp をご覧ください
コメント
Markdown 対応