From cf840588c7a941108839ea733173f7b00fcf1370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20De=20la=20Torre=20Vico?= Date: Thu, 16 Jul 2026 15:15:55 +0200 Subject: [PATCH] chore(mcp): rebrand prowler_app_* tools to prowler_* and restructure MCP docs (#12017) Co-authored-by: Alan Buscaglia --- .../prowler/.claude-plugin/plugin.json | 2 +- .../framework-compliance-triage/SKILL.md | 20 +-- .../lighthouse-architecture.mdx | 18 ++- docs/developer-guide/mcp-server.mdx | 16 +- docs/docs.json | 4 +- .../basic-usage/prowler-mcp-tools.mdx | 74 ++++----- .../basic-usage/prowler-mcp.mdx | 36 +++-- .../installation/prowler-mcp.mdx | 20 +-- docs/getting-started/products/prowler-mcp.mdx | 146 ++++++++++++------ docs/images/lighthouse-architecture.mmd | 4 +- docs/images/prowler_mcp_schema.mmd | 39 +++-- docs/images/prowler_mcp_schema.png | Bin 380040 -> 0 bytes .../tutorials/prowler-app-attack-paths.mdx | 10 +- mcp_server/.env.template | 2 +- mcp_server/AGENTS.md | 4 +- mcp_server/README.md | 20 +-- .../prowler-tools-namespace.changed.md | 1 + mcp_server/prowler_mcp_server/__init__.py | 2 +- .../prowler_app/models/__init__.py | 2 +- .../prowler_app/models/finding_groups.py | 2 +- .../prowler_app/tools/__init__.py | 2 +- .../prowler_app/tools/attack_paths.py | 30 ++-- .../prowler_app/tools/compliance.py | 28 ++-- .../prowler_app/tools/finding_groups.py | 8 +- .../prowler_app/tools/findings.py | 12 +- .../prowler_app/tools/muting.py | 48 +++--- .../prowler_app/tools/providers.py | 14 +- .../prowler_app/tools/resources.py | 30 ++-- .../prowler_app/tools/scans.py | 62 ++++---- .../prowler_app/utils/api_client.py | 2 +- .../prowler_app/utils/auth.py | 14 +- .../prowler_app/utils/tool_loader.py | 26 +++- mcp_server/prowler_mcp_server/server.py | 10 +- mcp_server/pyproject.toml | 4 +- mcp_server/uv.lock | 2 +- skills/prowler-mcp/SKILL.md | 8 +- .../_components/chat/message-bubble.test.tsx | 2 +- .../lighthouse/_lib/event-reducer.test.ts | 4 +- .../lighthouse/_lib/tool-calls.test.ts | 12 +- .../(prowler)/lighthouse/_lib/tool-calls.ts | 7 +- .../prowler-tools-namespace.changed.md | 1 + ui/lib/lighthouse-v1/allowed-tools.test.ts | 38 +++++ ui/lib/lighthouse-v1/allowed-tools.ts | 67 ++++++++ ui/lib/lighthouse-v1/mcp-client.ts | 14 +- .../definitions/attack-path-custom-query.ts | 4 +- ui/lib/lighthouse-v1/system-prompt.ts | 2 +- ui/lib/lighthouse-v1/tools/meta-tool.ts | 6 +- ui/lib/lighthouse-v1/workflow.ts | 62 +------- 48 files changed, 543 insertions(+), 398 deletions(-) delete mode 100644 docs/images/prowler_mcp_schema.png create mode 100644 mcp_server/changelog.d/prowler-tools-namespace.changed.md create mode 100644 ui/changelog.d/prowler-tools-namespace.changed.md create mode 100644 ui/lib/lighthouse-v1/allowed-tools.test.ts create mode 100644 ui/lib/lighthouse-v1/allowed-tools.ts diff --git a/claude_plugins/prowler/.claude-plugin/plugin.json b/claude_plugins/prowler/.claude-plugin/plugin.json index 7bf822e2e7..c77187c3b0 100644 --- a/claude_plugins/prowler/.claude-plugin/plugin.json +++ b/claude_plugins/prowler/.claude-plugin/plugin.json @@ -22,7 +22,7 @@ "api_key": { "type": "string", "title": "Prowler API key", - "description": "API key token used to authenticate with Prowler Cloud / Prowler App via the Prowler MCP server. Create one at https://cloud.prowler.com.", + "description": "API key token used to authenticate with Prowler (Prowler Cloud, Prowler Private Cloud, or Prowler Local Server) via the Prowler MCP server. Create one at https://cloud.prowler.com.", "sensitive": true, "required": true } diff --git a/claude_plugins/prowler/skills/framework-compliance-triage/SKILL.md b/claude_plugins/prowler/skills/framework-compliance-triage/SKILL.md index 1af29f82b9..f8a9ded0c6 100644 --- a/claude_plugins/prowler/skills/framework-compliance-triage/SKILL.md +++ b/claude_plugins/prowler/skills/framework-compliance-triage/SKILL.md @@ -38,12 +38,12 @@ If the framework is not supported, tell the user, suggest they request it or con ### 1.1 Connect to Prowler Cloud -Verify the Prowler MCP connection by calling `prowler_app_search_providers` — a successful response returns the list of providers. If the call fails, walk the user through troubleshooting: internet connectivity, Prowler Cloud credentials, and permissions on the Prowler Cloud account. +Verify the Prowler MCP connection by calling `prowler_search_providers` — a successful response returns the list of providers. If the call fails, walk the user through troubleshooting: internet connectivity, Prowler Cloud credentials, and permissions on the Prowler Cloud account. For getting accurate information about configurations use `prowler_docs_search` to pull relevant instructions from the Prowler documentation. ### 1.2 Verify the provider is configured (or configure it) -Call `prowler_app_search_providers` to check whether the target provider (AWS account, Azure Subscription, GitHub Account...) exists in the user's Prowler Cloud account. Handle the result based on what's found: +Call `prowler_search_providers` to check whether the target provider (AWS account, Azure Subscription, GitHub Account...) exists in the user's Prowler Cloud account. Handle the result based on what's found: - **Provider not present.** Guide the user through adding and configuring it. Retrieve the relevant connection, credential, and permission instructions with `prowler_docs_search`. - **Provider present but misconfigured** (missing credentials, insufficient permissions, etc.). Walk the user through fixing the configuration, pulling the relevant guidance with `prowler_docs_search`. @@ -57,15 +57,15 @@ Call `prowler_app_search_providers` to check whether the target provider (AWS ac The flow needs at least one completed scan with a compliance report available. -Look for a completed scan first: call `prowler_app_list_scans` with the selected `provider_id` and `state: ["completed"]`, then call `prowler_app_get_compliance_overview` with each `scan_id` to find one whose compliance report is available. If one is found, continue to the next section. +Look for a completed scan first: call `prowler_list_scans` with the selected `provider_id` and `state: ["completed"]`, then call `prowler_get_compliance_overview` with each `scan_id` to find one whose compliance report is available. If one is found, continue to the next section. -If no completed scan has a report, call `prowler_app_list_scans` again with `state: ["available", "executing"]` to detect a scan in progress. +If no completed scan has a report, call `prowler_list_scans` again with `state: ["available", "executing"]` to detect a scan in progress. > **Checkpoint — Scan-in-progress decision** *(conditional: an in-progress scan was detected)* > > Tell the user a scan is already running and ask whether to wait for it to complete or start a fresh one. Wait for the answer. -If no scan is running (or the user chose to start a fresh one), trigger a new scan with `prowler_app_trigger_scan` and the `provider_id`. The link `https://cloud.prowler.com/scans?filter%5Bprovider_uid__in%5D={provider_id}` lets the user monitor progress. +If no scan is running (or the user chose to start a fresh one), trigger a new scan with `prowler_trigger_scan` and the `provider_id`. The link `https://cloud.prowler.com/scans?filter%5Bprovider_uid__in%5D={provider_id}` lets the user monitor progress. When a scan is in progress (either pre-existing and elected to wait, or just triggered), stop the flow and ask the user to return when it's completed — restart this section to re-check the results. @@ -85,7 +85,7 @@ Status taxonomy for failed requirements and their findings: ### Report template -A fresh report is rendered like this (substituting values from the `prowler_app_get_compliance_framework_state_details` Prowler MCP tool response): +A fresh report is rendered like this (substituting values from the `prowler_get_compliance_framework_state_details` Prowler MCP tool response): ````markdown # Compliance report: @@ -120,7 +120,7 @@ A fresh report is rendered like this (substituting values from the `prowler_app_ Resolve the report path for the current `compliance_id` and provider account. -If the file does not exist, call `prowler_app_get_compliance_framework_state_details` for the target scan, render the template above, and write the file with one initialization entry in the activity log. +If the file does not exist, call `prowler_get_compliance_framework_state_details` for the target scan, render the template above, and write the file with one initialization entry in the activity log. If the file exists, read it and compare its `Scan ID` to the target scan from section 1.3. When the scan matches, reuse the file and summarize remaining `[FAIL]` and `[IN PROGRESS]` items in chat. @@ -128,7 +128,7 @@ If the file exists, read it and compare its `Scan ID` to the target scan from se > > Tell the user the report on disk was generated from a different scan and ask whether to refresh it from the new scan. Wait for the answer. -On confirmation, regenerate the failed-requirements section from the new `prowler_app_get_compliance_framework_state_details` response, carry forward the **Global remediation approach** block and the full activity log, and append an activity-log entry noting the scan change. +On confirmation, regenerate the failed-requirements section from the new `prowler_get_compliance_framework_state_details` response, carry forward the **Global remediation approach** block and the full activity log, and append an activity-log entry noting the scan change. Once the file is current, surface the top failing requirements in chat: sort by finding count descending, show the top 5 with their codes and counts, and point to the file path for the full list. @@ -174,7 +174,7 @@ Once approved, the loop proceeds through the batch without further prompts unles Pick the first `[FAIL]` requirement at the top of the failed-requirements section. Move its status and every finding under it to `[IN PROGRESS]`, and add a `**Fix plan**:` sub-bullet describing what will be done. -Call `prowler_app_get_finding_details` for each `finding_id` to retrieve the failing resource and the Prowler Hub's remediation guidance for that check using the tool `prowler_hub_get_check_details` with the `check_id` from the finding details. Summarize the guidance in chat, and append it to the `**Fix plan**` note for each finding. +Call `prowler_get_finding_details` for each `finding_id` to retrieve the failing resource and the Prowler Hub's remediation guidance for that check using the tool `prowler_hub_get_check_details` with the `check_id` from the finding details. Summarize the guidance in chat, and append it to the `**Fix plan**` note for each finding. If a finding does not apply to the target resource (Organization-only check on a User account, paid-tier feature, missing resource type, etc.), set the requirement status to `[SKIPPED]` with the reason, log it in the activity log, and move on without attempting the fix — even if it was missed during §3.2. @@ -194,6 +194,6 @@ Move to the next `[FAIL]` requirement and repeat from section 3.3. > **Checkpoint — Rescan trigger** *(conditional: no `[FAIL]` requirements remain; all are `[FIXED-UNVERIFIED]` or `[SKIPPED]`)* > -> Summarize what was applied, list any `[SKIPPED]` items with reasons, and ask whether to trigger a fresh scan with `prowler_app_trigger_scan` to verify the fixes end-to-end. Wait for the answer. +> Summarize what was applied, list any `[SKIPPED]` items with reasons, and ask whether to trigger a fresh scan with `prowler_trigger_scan` to verify the fixes end-to-end. Wait for the answer. On confirmation, trigger the rescan. When it completes, restart section 2.1 with the carry-forward path — requirements no longer in the new FAIL list move to `[PASS]`, anything still failing reverts to `[FAIL]` with the previous fix attempt visible in the activity log. diff --git a/docs/developer-guide/lighthouse-architecture.mdx b/docs/developer-guide/lighthouse-architecture.mdx index 631e0e7ae4..e12eff9549 100644 --- a/docs/developer-guide/lighthouse-architecture.mdx +++ b/docs/developer-guide/lighthouse-architecture.mdx @@ -132,7 +132,7 @@ The MCP client manages connections to the Prowler MCP Server using a singleton p - **Connection Management**: Retry logic with configurable attempts and delays - **Tool Discovery**: Fetches available tools from MCP server on initialization -- **Authentication Injection**: Automatically adds JWT tokens to `prowler_app_*` tool calls +- **Authentication Injection**: Automatically adds JWT tokens to `prowler_*` tool calls - **Reconnection**: Supports forced reconnection after server restarts Key constants: @@ -141,10 +141,14 @@ Key constants: - `RECONNECT_INTERVAL_MS`: 5 minutes before retry after failure ```typescript -// Authentication injection for prowler_app tools +// Authentication injection for core prowler_ tools (Hub/Docs excluded) private handleBeforeToolCall = ({ name, args }) => { - // Only inject auth for prowler_app_* tools (user-specific data) - if (!name.startsWith("prowler_app_")) { + // Only inject auth for prowler_* tools (user-specific data). + // The legacy prowler_app_ prefix is also accepted for a resilient rollout. + if ( + !name.startsWith("prowler_") && + !name.startsWith("prowler_app_") + ) { return { args }; } @@ -307,7 +311,7 @@ MCP tools are organized into three namespaces based on authentication requiremen | Namespace | Auth Required | Description | |-----------|---------------|-------------| -| `prowler_app_*` | Yes (JWT) | Prowler Cloud and Prowler Local Server tools for findings, providers, scans, resources | +| `prowler_*` | Yes (JWT) | Prowler Cloud, Prowler Private Cloud, and Prowler Local Server tools for findings, providers, scans, resources | | `prowler_hub_*` | No | Security checks catalog, compliance frameworks | | `prowler_docs_*` | No | Documentation search and retrieval | @@ -315,7 +319,7 @@ MCP tools are organized into three namespaces based on authentication requiremen 1. User authenticates with Prowler Local Server, receiving a JWT token 2. Token is stored in session and propagated via `authContextStorage` -3. MCP client injects `Authorization: Bearer ` header for `prowler_app_*` calls +3. MCP client injects `Authorization: Bearer ` header for `prowler_*` calls 4. MCP Server validates token and applies RLS filtering ### Tool Execution Pattern @@ -323,7 +327,7 @@ MCP tools are organized into three namespaces based on authentication requiremen The agent uses meta-tools rather than direct tool registration: ``` -Agent needs data → describe_tool("prowler_app_search_findings") +Agent needs data → describe_tool("prowler_search_findings") → Returns parameter schema → execute_tool with parameters → MCP client adds auth header → MCP Server executes → Results returned to agent → Agent continues reasoning diff --git a/docs/developer-guide/mcp-server.mdx b/docs/developer-guide/mcp-server.mdx index 1b9c49a18b..6d409ccc02 100644 --- a/docs/developer-guide/mcp-server.mdx +++ b/docs/developer-guide/mcp-server.mdx @@ -18,11 +18,15 @@ The Prowler MCP Server brings the entire Prowler ecosystem to AI assistants thro The server follows a modular architecture with three independent sub-servers: -| Sub-Server | Auth Required | Description | -|------------|---------------|-------------| -| `prowler_app` | Yes | Full access to Prowler Cloud and Prowler Local Server features | -| Prowler Hub | No | Security checks catalog with **over 2,000 checks**, fixers, and **70+ compliance frameworks** | -| Prowler Documentation | No | Full-text search and retrieval of official documentation | +| Sub-Server | Tool Prefix | Auth Required | Description | +|------------|-------------|---------------|-------------| +| Prowler | `prowler_` | Yes | Full access to Prowler Cloud, Prowler Private Cloud, and Prowler Local Server features | +| Prowler Hub | `prowler_hub_` | No | Security checks catalog with **over 2,000 checks**, fixers, and **70+ compliance frameworks** | +| Prowler Documentation | `prowler_docs_` | No | Full-text search and retrieval of official documentation | + + +The core Prowler sub-server is served under the `prowler_` tool prefix, while its source lives in the `prowler_app/` module for historical reasons. Tool names use the prefix; import paths use the module. + For a complete list of tools and their descriptions, see the [Tools Reference](/getting-started/basic-usage/prowler-mcp-tools). @@ -413,7 +417,7 @@ uv run prowler-mcp uv run prowler-mcp --transport http --host 0.0.0.0 --port 8000 # Run with environment variables -PROWLER_APP_API_KEY="pk_xxx" uv run prowler-mcp +PROWLER_API_KEY="pk_xxx" uv run prowler-mcp ``` For complete installation and deployment options, see: diff --git a/docs/docs.json b/docs/docs.json index d9ac4c2bd8..b9bc195182 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -72,9 +72,9 @@ "group": "Prowler MCP", "pages": [ "getting-started/products/prowler-mcp", - "getting-started/installation/prowler-mcp", "getting-started/basic-usage/prowler-mcp", - "getting-started/basic-usage/prowler-mcp-tools" + "getting-started/basic-usage/prowler-mcp-tools", + "getting-started/installation/prowler-mcp" ] }, { diff --git a/docs/getting-started/basic-usage/prowler-mcp-tools.mdx b/docs/getting-started/basic-usage/prowler-mcp-tools.mdx index d225617f0e..acb50c9e81 100644 --- a/docs/getting-started/basic-usage/prowler-mcp-tools.mdx +++ b/docs/getting-started/basic-usage/prowler-mcp-tools.mdx @@ -10,7 +10,7 @@ Complete reference guide for all tools available in the Prowler MCP Server. Tool |----------|------------|------------------------| | Prowler Hub | 10 tools | No | | Prowler Documentation | 2 tools | No | -| Prowler Cloud & Prowler Local Server | 32 tools | Yes | +| Prowler Cloud, Private Cloud & Local Server | 32 tools | Yes | ## Tool Naming Convention @@ -18,11 +18,11 @@ All tools follow a consistent naming pattern with prefixes: - `prowler_hub_*` - Prowler Hub catalog and compliance tools - `prowler_docs_*` - Prowler documentation search and retrieval -- `prowler_app_*` - Prowler Cloud and App (Self-Managed) management tools +- `prowler_*` - Prowler Cloud, Prowler Private Cloud & Prowler Local Server management tools -## Prowler Cloud and Prowler Local Server Tools +## Prowler Tools -Manage Prowler Cloud or Prowler Local Server features. **Requires authentication.** +Manage your Prowler deployment — Prowler Cloud, Prowler Private Cloud, or Prowler Local Server. **Requires authentication.** These tools require a valid API key. See the [Configuration Guide](/getting-started/basic-usage/prowler-mcp) for authentication setup. @@ -32,44 +32,44 @@ These tools require a valid API key. See the [Configuration Guide](/getting-star Tools for searching, viewing, and analyzing security findings across all cloud providers. -- **`prowler_app_search_security_findings`** - Search and filter security findings with advanced filtering options (severity, status, provider, region, service, check ID, date range, muted status) -- **`prowler_app_get_finding_details`** - Get comprehensive details about a specific finding including remediation guidance, check metadata, and resource relationships -- **`prowler_app_get_findings_overview`** - Get aggregate statistics and trends about security findings as a markdown report +- **`prowler_search_security_findings`** - Search and filter security findings with advanced filtering options (severity, status, provider, region, service, check ID, date range, muted status) +- **`prowler_get_finding_details`** - Get comprehensive details about a specific finding including remediation guidance, check metadata, and resource relationships +- **`prowler_get_findings_overview`** - Get aggregate statistics and trends about security findings as a markdown report ### Finding Groups Management Tools for listing finding groups aggregated by check ID, viewing complete group counters, and drilling down into affected resources. -- **`prowler_app_list_finding_groups`** - List latest or historical finding groups with filters for provider, region, service, resource, category, check, severity, status, muted state, delta, date range, and sorting -- **`prowler_app_get_finding_group_details`** - Get complete details for a specific finding group including counters, description, timestamps, and impacted providers -- **`prowler_app_list_finding_group_resources`** - List actionable unmuted resources affected by a finding group by default, including nested resource and provider data plus the `finding_id` for remediation details. Set `include_muted` to include suppressed resources +- **`prowler_list_finding_groups`** - List latest or historical finding groups with filters for provider, region, service, resource, category, check, severity, status, muted state, delta, date range, and sorting +- **`prowler_get_finding_group_details`** - Get complete details for a specific finding group including counters, description, timestamps, and impacted providers +- **`prowler_list_finding_group_resources`** - List actionable unmuted resources affected by a finding group by default, including nested resource and provider data plus the `finding_id` for remediation details. Set `include_muted` to include suppressed resources ### Provider Management Tools for managing cloud provider connections in Prowler. -- **`prowler_app_search_providers`** - Search and view configured providers with their connection status -- **`prowler_app_connect_provider`** - Register and connect a provider with credentials for security scanning -- **`prowler_app_delete_provider`** - Permanently remove a provider from Prowler +- **`prowler_search_providers`** - Search and view configured providers with their connection status +- **`prowler_connect_provider`** - Register and connect a provider with credentials for security scanning +- **`prowler_delete_provider`** - Permanently remove a provider from Prowler ### Scan Management Tools for managing and monitoring security scans. -- **`prowler_app_list_scans`** - List and filter security scans across all providers -- **`prowler_app_get_scan`** - Get comprehensive details about a specific scan (progress, duration, resource counts) -- **`prowler_app_trigger_scan`** - Trigger a manual security scan for a provider -- **`prowler_app_schedule_daily_scan`** - Schedule automated daily scans for continuous monitoring -- **`prowler_app_update_scan`** - Update scan name for better organization +- **`prowler_list_scans`** - List and filter security scans across all providers +- **`prowler_get_scan`** - Get comprehensive details about a specific scan (progress, duration, resource counts) +- **`prowler_trigger_scan`** - Trigger a manual security scan for a provider +- **`prowler_schedule_daily_scan`** - Schedule automated daily scans for continuous monitoring +- **`prowler_update_scan`** - Update scan name for better organization ### Resources Management Tools for searching, viewing, and analyzing cloud resources discovered by Prowler. -- **`prowler_app_list_resources`** - List and filter cloud resources with advanced filtering options (provider, region, service, resource type, tags) -- **`prowler_app_get_resource`** - Get comprehensive details about a specific resource including configuration, metadata, and finding relationships -- **`prowler_app_get_resource_events`** - Get the timeline of cloud API actions performed on a resource (AWS CloudTrail). Shows who did what and when, with full request/response payloads -- **`prowler_app_get_resources_overview`** - Get aggregate statistics about cloud resources as a markdown report +- **`prowler_list_resources`** - List and filter cloud resources with advanced filtering options (provider, region, service, resource type, tags) +- **`prowler_get_resource`** - Get comprehensive details about a specific resource including configuration, metadata, and finding relationships +- **`prowler_get_resource_events`** - Get the timeline of cloud API actions performed on a resource (AWS CloudTrail). Shows who did what and when, with full request/response payloads +- **`prowler_get_resources_overview`** - Get aggregate statistics about cloud resources as a markdown report ### Muting Management @@ -77,33 +77,33 @@ Tools for managing finding muting, including pattern-based bulk muting (mutelist #### Mutelist (Pattern-Based Muting) -- **`prowler_app_get_mutelist`** - Retrieve the current mutelist configuration for the tenant -- **`prowler_app_set_mutelist`** - Create or update the mutelist configuration for pattern-based bulk muting -- **`prowler_app_delete_mutelist`** - Remove the mutelist configuration from the tenant +- **`prowler_get_mutelist`** - Retrieve the current mutelist configuration for the tenant +- **`prowler_set_mutelist`** - Create or update the mutelist configuration for pattern-based bulk muting +- **`prowler_delete_mutelist`** - Remove the mutelist configuration from the tenant #### Mute Rules (Finding-Specific Muting) -- **`prowler_app_list_mute_rules`** - Search and filter mute rules with pagination support -- **`prowler_app_get_mute_rule`** - Retrieve comprehensive details about a specific mute rule -- **`prowler_app_create_mute_rule`** - Create a new mute rule to mute specific findings with documentation and audit trail -- **`prowler_app_update_mute_rule`** - Update a mute rule's name, reason, or enabled status -- **`prowler_app_delete_mute_rule`** - Delete a mute rule from the system +- **`prowler_list_mute_rules`** - Search and filter mute rules with pagination support +- **`prowler_get_mute_rule`** - Retrieve comprehensive details about a specific mute rule +- **`prowler_create_mute_rule`** - Create a new mute rule to mute specific findings with documentation and audit trail +- **`prowler_update_mute_rule`** - Update a mute rule's name, reason, or enabled status +- **`prowler_delete_mute_rule`** - Delete a mute rule from the system ### Attack Paths Analysis Tools for analyzing privilege escalation chains and security misconfigurations using graph-based analysis. Attack Paths maps relationships between cloud resources, permissions, and security findings to detect how privileges can be escalated and how misconfigurations can be exploited. -- **`prowler_app_list_attack_paths_scans`** - List Attack Paths scans with filtering by provider, provider type, and scan state (available, scheduled, executing, completed, failed, cancelled) -- **`prowler_app_list_attack_paths_queries`** - Discover available Attack Paths queries for a completed scan, including query names, descriptions, and required parameters -- **`prowler_app_run_attack_paths_query`** - Execute an Attack Paths query against a completed scan and retrieve graph results with nodes (cloud resources, findings, virtual nodes) and relationships (access paths, role assumptions, security group memberships) -- **`prowler_app_get_attack_paths_cartography_schema`** - Retrieve the Cartography graph schema (node labels, relationships, properties) for writing accurate custom openCypher queries +- **`prowler_list_attack_paths_scans`** - List Attack Paths scans with filtering by provider, provider type, and scan state (available, scheduled, executing, completed, failed, cancelled) +- **`prowler_list_attack_paths_queries`** - Discover available Attack Paths queries for a completed scan, including query names, descriptions, and required parameters +- **`prowler_run_attack_paths_query`** - Execute an Attack Paths query against a completed scan and retrieve graph results with nodes (cloud resources, findings, virtual nodes) and relationships (access paths, role assumptions, security group memberships) +- **`prowler_get_attack_paths_cartography_schema`** - Retrieve the Cartography graph schema (node labels, relationships, properties) for writing accurate custom openCypher queries ### Compliance Management Tools for viewing compliance status and framework details across all cloud providers. -- **`prowler_app_get_compliance_overview`** - Get high-level compliance status across all frameworks for a specific scan or provider, including pass/fail statistics per framework -- **`prowler_app_get_compliance_framework_state_details`** - Get detailed requirement-level breakdown for a specific compliance framework, including failed requirements and associated finding IDs +- **`prowler_get_compliance_overview`** - Get high-level compliance status across all frameworks for a specific scan or provider, including pass/fail statistics per framework +- **`prowler_get_compliance_framework_state_details`** - Get detailed requirement-level breakdown for a specific compliance framework, including failed requirements and associated finding IDs ## Prowler Hub Tools @@ -145,7 +145,7 @@ Search and access official Prowler documentation. **No authentication required.* - Use natural language to interact with the tools through your AI assistant - Tools can be combined for complex workflows - Filter options are available on most list tools -- Authentication is only required for Prowler Cloud and Prowler Local Server tools +- Authentication is only required for Prowler tools (Prowler Cloud, Prowler Private Cloud, or Prowler Local Server) ## Additional Resources diff --git a/docs/getting-started/basic-usage/prowler-mcp.mdx b/docs/getting-started/basic-usage/prowler-mcp.mdx index a06f54375e..120e5c038b 100644 --- a/docs/getting-started/basic-usage/prowler-mcp.mdx +++ b/docs/getting-started/basic-usage/prowler-mcp.mdx @@ -7,10 +7,10 @@ Configure your MCP client to connect to Prowler MCP Server. ## Step 1: Get Your API Key -**Authentication is optional**: Prowler Hub and Prowler Documentation features work without authentication. An API key is only required for Prowler Cloud and Prowler Local Server features. +**Authentication is optional**: Prowler Hub and Prowler Documentation features work without authentication. An API key is only required for Prowler tools (Prowler Cloud, Prowler Private Cloud, or Prowler Local Server). -To use Prowler Cloud or Prowler Local Server features. To get the API key, please refer to the [API Keys](/user-guide/tutorials/prowler-app-api-keys) guide. +An API key authenticates the Prowler tools (Prowler Cloud, Prowler Private Cloud, or Prowler Local Server). To get the API key, please refer to the [API Keys](/user-guide/tutorials/prowler-app-api-keys) guide. Keep the API key secure. Never share it publicly or commit it to version control. @@ -18,12 +18,14 @@ Keep the API key secure. Never share it publicly or commit it to version control ## Step 2: Configure Your MCP Host/Client -Choose the configuration based on your deployment: +Most users should use the **Cloud MCP Server** — it needs no installation and is maintained by Prowler. The [Local MCP Server](#local-mcp-server-configuration) configuration is provided afterwards for users who run the server themselves. -- **HTTP Mode**: Prowler Cloud MCP Server or self-hosted Prowler MCP Server. -- **STDIO Mode**: Local installation only (runs as subprocess of your MCP client). +- **Cloud MCP Server (HTTP)**: the managed server at `https://mcp.prowler.com/mcp` (or your own self-hosted HTTP server). +- **Local MCP Server (STDIO)**: local installation only (runs as a subprocess of your MCP client). -### HTTP Mode +## Cloud MCP Server Configuration (Recommended) + +Connect to the **Cloud MCP Server** at `https://mcp.prowler.com/mcp` over HTTP. This is the recommended path — no installation, always up to date. The same configuration works for a self-hosted HTTP server: just swap the URL. @@ -61,10 +63,10 @@ Choose the configuration based on your deployment: "args": [ "https://mcp.prowler.com/mcp", // or your self-hosted Prowler MCP Server URL "--header", - "Authorization: Bearer ${PROWLER_APP_API_KEY}" + "Authorization: Bearer ${PROWLER_API_KEY}" ], "env": { - "PROWLER_APP_API_KEY": "" + "PROWLER_API_KEY": "" } } } @@ -96,10 +98,10 @@ Choose the configuration based on your deployment: "args": [ "https://mcp.prowler.com/mcp", "--header", - "Authorization: Bearer ${PROWLER_APP_API_KEY}" + "Authorization: Bearer ${PROWLER_API_KEY}" ], "env": { - "PROWLER_APP_API_KEY": "" + "PROWLER_API_KEY": "" } } } @@ -110,8 +112,8 @@ Choose the configuration based on your deployment: Run the following command: ```bash - export PROWLER_APP_API_KEY="" - claude mcp add --transport http prowler https://mcp.prowler.com/mcp --header "Authorization: Bearer $PROWLER_APP_API_KEY" --scope user + export PROWLER_API_KEY="" + claude mcp add --transport http prowler https://mcp.prowler.com/mcp --header "Authorization: Bearer $PROWLER_API_KEY" --scope user ``` @@ -137,9 +139,9 @@ Choose the configuration based on your deployment: -### STDIO Mode +## Local MCP Server Configuration -STDIO mode is only available when running the MCP server locally. +STDIO mode is only available when running the **Local MCP Server** on your own machine. See the [Installation guide](/getting-started/installation/prowler-mcp) to set it up first. @@ -152,7 +154,7 @@ STDIO mode is only available when running the MCP server locally. "command": "uvx", "args": ["/absolute/path/to/prowler/mcp_server/"], "env": { - "PROWLER_APP_API_KEY": "", + "PROWLER_API_KEY": "", "API_BASE_URL": "https://api.prowler.com/api/v1" } } @@ -179,7 +181,7 @@ STDIO mode is only available when running the MCP server locally. "--rm", "-i", "--env", - "PROWLER_APP_API_KEY=", + "PROWLER_API_KEY=", "--env", "API_BASE_URL=https://api.prowler.com/api/v1", "prowlercloud/prowler-mcp" @@ -205,7 +207,7 @@ Restart your MCP client and start asking questions: ## Authentication Methods -Prowler MCP Server supports two authentication methods to connect to Prowler Cloud or Prowler Local Server: +Prowler MCP Server supports two authentication methods to connect to Prowler (Prowler Cloud, Prowler Private Cloud, or Prowler Local Server): ### API Key (Recommended) diff --git a/docs/getting-started/installation/prowler-mcp.mdx b/docs/getting-started/installation/prowler-mcp.mdx index 06f204da6a..5be469b5b2 100644 --- a/docs/getting-started/installation/prowler-mcp.mdx +++ b/docs/getting-started/installation/prowler-mcp.mdx @@ -5,12 +5,12 @@ title: "Installation" There are **two ways** to use Prowler MCP Server: - + **No installation required** - Just configuration Use `https://mcp.prowler.com/mcp` - + **Local installation** - Full control Install via Docker, PyPI, or source code @@ -18,8 +18,8 @@ There are **two ways** to use Prowler MCP Server: -For "Option 1: Managed by Prowler", go directly to the [Configuration Guide](/getting-started/basic-usage/prowler-mcp#hosted-server-configuration-recommended) to set up your Claude Desktop, Cursor, or other MCP client. -**This guide is focused on local installation, "Option 2: Run Locally"**. +For the Cloud MCP Server, go directly to the [Configuration Guide](/getting-started/basic-usage/prowler-mcp#cloud-mcp-server-configuration-recommended) to set up your Claude Desktop, Cursor, or other MCP client. +**This guide is focused on local installation, the Local MCP Server**. ## Installation Methods @@ -51,7 +51,7 @@ Choose one of the following installation methods: ```bash docker run --rm -i \ - -e PROWLER_APP_API_KEY="pk_your_api_key" \ + -e PROWLER_API_KEY="pk_your_api_key" \ -e API_BASE_URL="https://api.prowler.com/api/v1" \ prowlercloud/prowler-mcp ``` @@ -143,7 +143,7 @@ Choose one of the following installation methods: ## Updating Prowler MCP Server -When running Prowler MCP Server locally ("Option 2: Run Locally"), upgrade to the latest version using the same method chosen for installation. The hosted server (`https://mcp.prowler.com/mcp`) is always kept up to date by Prowler and requires no action. +When running the Local MCP Server, upgrade to the latest version using the same method chosen for installation. The Cloud MCP Server (`https://mcp.prowler.com/mcp`) is always kept up to date by Prowler and requires no action. @@ -219,19 +219,19 @@ Configure the server using environment variables: | Variable | Description | Required | Default | |----------|-------------|----------|---------| -| `PROWLER_APP_API_KEY` | Prowler API key | Only for STDIO mode | - | +| `PROWLER_API_KEY` | Prowler API key | Only for STDIO mode | - | | `API_BASE_URL` | Custom Prowler API endpoint | No | `https://api.prowler.com/api/v1` | | `PROWLER_MCP_TRANSPORT_MODE` | Default transport mode (overwritten by `--transport` argument) | No | `stdio` | ```bash macOS/Linux -export PROWLER_APP_API_KEY="pk_your_api_key_here" +export PROWLER_API_KEY="pk_your_api_key_here" export API_BASE_URL="https://api.prowler.com/api/v1" export PROWLER_MCP_TRANSPORT_MODE="http" ``` ```bash Windows PowerShell -$env:PROWLER_APP_API_KEY="pk_your_api_key_here" +$env:PROWLER_API_KEY="pk_your_api_key_here" $env:API_BASE_URL="https://api.prowler.com/api/v1" $env:PROWLER_MCP_TRANSPORT_MODE="http" ``` @@ -246,7 +246,7 @@ Never commit your API key to version control. Use environment variables or secur For convenience, create a `.env` file in the `mcp_server` directory: ```bash .env -PROWLER_APP_API_KEY=pk_your_api_key_here +PROWLER_API_KEY=pk_your_api_key_here API_BASE_URL=https://api.prowler.com/api/v1 PROWLER_MCP_TRANSPORT_MODE=stdio ``` diff --git a/docs/getting-started/products/prowler-mcp.mdx b/docs/getting-started/products/prowler-mcp.mdx index b35ac3d611..93159b2e7d 100644 --- a/docs/getting-started/products/prowler-mcp.mdx +++ b/docs/getting-started/products/prowler-mcp.mdx @@ -8,8 +8,29 @@ title: "Overview" **Preview Feature**: This MCP server is currently under active development. Features and functionality may change. We welcome your feedback—please report any issues on [GitHub](https://github.com/prowler-cloud/prowler/issues) or join our [Slack community](https://goto.prowler.com/slack) to discuss and share your thoughts. +## Quickest Way to Connect: Cloud MCP Server + +The fastest way to get started is the **Cloud MCP Server** at `https://mcp.prowler.com/mcp` — no installation, always up to date, and maintained by Prowler. Just point your MCP client at the URL and authenticate with a [Prowler API key](/user-guide/tutorials/prowler-app-api-keys) as a Bearer token: + +```json +{ + "mcpServers": { + "prowler": { + "url": "https://mcp.prowler.com/mcp", + "headers": { + "Authorization": "Bearer " + } + } + } +} +``` + + + Step-by-step setup for Claude Desktop, Claude Code, Cursor, and other clients. + + -Prowler MCP Server can run as a local instance, or as the hosted **Prowler MCP** at `https://mcp.prowler.com/mcp`. The hosted server also provides tools for Prowler Cloud-specific features such as [Alerts](/user-guide/tutorials/prowler-alerts), [Scan Scheduling](/user-guide/tutorials/prowler-scan-scheduling), and [Findings Triage](/user-guide/tutorials/prowler-app-findings-triage). See [Deployment Options](#deployment-options). +Prefer to run it yourself? The **Local MCP Server** runs on your own machine or infrastructure. The Cloud MCP Server additionally provides tools for Prowler Cloud-specific features such as [Alerts](/user-guide/tutorials/prowler-alerts), [Scan Scheduling](/user-guide/tutorials/prowler-scan-scheduling), and [Findings Triage](/user-guide/tutorials/prowler-app-findings-triage). See [Cloud vs Local MCP Server](#cloud-vs-local-mcp-server). ## What is the Model Context Protocol? @@ -20,9 +41,9 @@ The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) is an open s The Prowler MCP Server provides three main integration points: -### 1. Prowler Cloud and Prowler Local Server +### 1. Prowler Cloud, Private Cloud & Local Server -Full access to Prowler Cloud and Prowler Local Server for: +Full access to your Prowler deployment — Prowler Cloud, Prowler Private Cloud, or Prowler Local Server — for: - **Findings Analysis**: Query, filter, and analyze security findings across all your cloud environments - **Provider Management**: Create, configure, and manage your configured Prowler providers (AWS, Azure, GCP, etc.) - **Scan Orchestration**: Trigger on-demand scans and schedule recurring security assessments @@ -48,12 +69,53 @@ Search and retrieve official Prowler documentation: ## MCP Server Architecture -The following diagram illustrates the Prowler MCP Server architecture and its integration points: +The following diagram illustrates the Prowler MCP Server architecture and its integration points. MCP clients connect to either the **Cloud MCP Server** (recommended) or a **Local MCP Server**; both expose the same tools and reach the same Prowler backends: -![Prowler MCP Server Schema](/images/prowler_mcp_schema.png) +```mermaid +flowchart LR + subgraph HOSTS["MCP Clients"] + chat["Chat Interfaces
(Claude Desktop, LobeChat)"] + ide["IDEs and Code Editors
(Claude Code, Cursor)"] + apps["Other AI Applications
(5ire, custom agents)"] + end + + subgraph SERVERS["Prowler MCP Server"] + direction TB + cloud["☁️ Cloud MCP Server (Recommended)
mcp.prowler.com/mcp · HTTP
Managed by Prowler · always up to date
Adds Cloud-only tools (Alerts,
Scan Scheduling, Findings Triage)"] + local["💻 Local MCP Server
Self-run · STDIO or HTTP
Python 3.12+ or Docker
You manage updates"] + end + + subgraph TOOLS["Prowler MCP Tools"] + prowler_tools["prowler_* tools
(API key or JWT auth)
Findings · Providers · Scans
Resources · Muting · Compliance
Attack Paths"] + hub_tools["prowler_hub_* tools
(no auth)
Checks Catalog · Check Code
Fixers · Compliance Frameworks"] + docs_tools["prowler_docs_* tools
(no auth)
Search · Document Retrieval"] + end + + api["Prowler API (REST)
Cloud · Private Cloud · Local Server"] + hub["hub.prowler.com
(REST)"] + docs["docs.prowler.com
(Mintlify)"] + + chat -->|HTTP| cloud + ide -->|HTTP| cloud + apps -->|HTTP| cloud + chat -->|STDIO or HTTP| local + ide -->|STDIO or HTTP| local + apps -->|STDIO or HTTP| local + + cloud --> prowler_tools + cloud --> hub_tools + cloud --> docs_tools + local --> prowler_tools + local --> hub_tools + local --> docs_tools + + prowler_tools -->|REST| api + hub_tools -->|REST| hub + docs_tools -->|REST| docs +``` The architecture shows how AI assistants connect through the MCP protocol to access Prowler's three main components: -- Prowler Cloud and Prowler Local Server for security operations +- Prowler Cloud, Prowler Private Cloud, or Prowler Local Server for security operations - Prowler Hub for security knowledge - Prowler Documentation for guidance and reference. @@ -92,8 +154,8 @@ REQUIREMENTS: DATA TO FETCH: Use these MCP tools in this order: -1. Prowler app list providers - To get all available configured provider in the account -2. Prowler app get latest findings - To get findings information, if there are so many you can use the filter_fields to get less information, or pagination to get in different batches +1. Prowler list providers - To get all available configured provider in the account +2. Prowler get latest findings - To get findings information, if there are so many you can use the filter_fields to get less information, or pagination to get in different batches 3. For most critical findings you can get more context and remediation with Prowler Hub to get remediations for example DESIGN REQUIREMENTS: @@ -130,66 +192,48 @@ Generate the complete HTML file and display it > -## Deployment Options +## Cloud vs Local MCP Server -Prowler MCP Server can be used in three ways: +There are two ways to run the Prowler MCP Server. For almost everyone, the **Cloud MCP Server** is the right choice — it needs no installation and is maintained by Prowler. The **Local MCP Server** exists for users who need to run it on their own machine or infrastructure. -### 1. Prowler Cloud MCP Server +| | ☁️ **Cloud MCP Server** (Recommended) | 💻 **Local MCP Server** | +|---|---|---| +| **Endpoint** | `https://mcp.prowler.com/mcp` | Runs on your machine or infrastructure | +| **Setup** | Just configure your MCP client | Install via Docker, or source | +| **Transport** | HTTP | STDIO (subprocess) or self-hosted HTTP | +| **Maintenance** | Managed by Prowler, always up to date | You manage updates | +| **Requirements** | None (just an MCP client) | Python 3.12+ or Docker | +| **Cloud-only tools** | ✅ Alerts, Scan Scheduling, Findings Triage | ❌ Not available | +| **Authentication** | API key or JWT token | API key/JWT (HTTP) or env vars (STDIO) | -**Use Prowler's managed MCP server at `https://mcp.prowler.com/mcp`** +### ☁️ Cloud MCP Server (Recommended) -- No installation required. -- Managed and maintained by Prowler team. -- Authentication to Prowler Cloud or Prowler Local Server via API key or JWT token. -- Includes tools for Prowler Cloud-specific features such as Alerts, Scan Scheduling, and Findings Triage. +Prowler's managed MCP server at `https://mcp.prowler.com/mcp`. No installation, always up to date, and it includes tools for Prowler Cloud-specific features such as Alerts, Scan Scheduling, and Findings Triage. This is the path we recommend for nearly all users — go straight to the [Configuration guide](/getting-started/basic-usage/prowler-mcp#cloud-mcp-server-configuration-recommended). -### 2. Local STDIO Mode +### 💻 Local MCP Server -**Run the server locally on your machine** +Run the server yourself when you need full control over the deployment. It connects to Prowler Cloud, Prowler Private Cloud, or Prowler Local Server and can run in two modes: -- Runs as a subprocess of the MCP client. -- Possibility to connect to Prowler Local Server. -- Authentication to Prowler Cloud or Prowler Local Server via environment variables. -- Requires Python 3.12+ or Docker. +- **STDIO mode** — the server runs as a subprocess of your MCP client. Authentication via environment variables. +- **Self-hosted HTTP mode** — deploy your own remote HTTP server. Authentication via API key or JWT token. -### 3. Self-Hosted HTTP Mode - -**Deploy your own remote MCP server** - -- Full control over deployment. -- Possibility to connect to Prowler Local Server. -- Authentication to Prowler Local Server via API key or JWT token. -- Requires Python 3.12+ or Docker. - -## Requirements - -Requirements vary based on deployment option: - -**For Prowler Cloud MCP Server:** -- Prowler Cloud account and API key (only for Prowler Cloud and Prowler Local Server features) - -**For self-hosted STDIO/HTTP Mode:** -- Python 3.12+ or Docker -- Network access to: - - `https://hub.prowler.com` (for Prowler Hub) - - `https://docs.prowler.com` (for Prowler Documentation) - - Prowler Cloud API or Prowler Local Server API (for Prowler Cloud and Prowler Local Server features) +Both require Python 3.12+ or Docker, plus network access to `https://hub.prowler.com` (Prowler Hub), `https://docs.prowler.com` (Prowler Documentation), and the Prowler API or Prowler Local Server API (Prowler features). See the [Installation guide](/getting-started/installation/prowler-mcp) to get started. -**No Authentication Required**: Prowler Hub and Prowler Documentation features work without authentication in both deployment options. A Prowler API key is only required to access Prowler Cloud or Prowler Local Server features. +**No Authentication Required**: Prowler Hub and Prowler Documentation features work without authentication on both the Cloud and Local MCP Server. A Prowler API key is only required to access Prowler features (Prowler Cloud, Prowler Private Cloud, or Prowler Local Server). ## Next Steps - - Install the Prowler MCP Server using uv or Docker - - Configure your MCP client to connect to the server + Connect your MCP client to the Cloud MCP Server + + + Explore all available tools and capabilities - - Explore all available tools and capabilities + + Run the Local MCP Server yourself using Docker, source, or uvx diff --git a/docs/images/lighthouse-architecture.mmd b/docs/images/lighthouse-architecture.mmd index 47407544e9..6798801fb8 100644 --- a/docs/images/lighthouse-architecture.mmd +++ b/docs/images/lighthouse-architecture.mmd @@ -15,7 +15,7 @@ flowchart TB llm["LLM Provider
(OpenAI / Bedrock / OpenAI-compatible)"] subgraph MCP["Prowler MCP Server"] - app_tools["prowler_app_* tools
(auth required)"] + app_tools["prowler_* tools
(auth required)"] hub_tools["prowler_hub_* tools
(no auth)"] docs_tools["prowler_docs_* tools
(no auth)"] end @@ -29,7 +29,7 @@ flowchart TB agent <-->|LLM API| llm agent --> metatools metatools --> mcpclient - mcpclient -->|MCP HTTP · Bearer token
for prowler_app_* only| app_tools + mcpclient -->|MCP HTTP · Bearer token
for prowler_* only| app_tools mcpclient -->|MCP HTTP| hub_tools mcpclient -->|MCP HTTP| docs_tools app_tools -->|REST| api diff --git a/docs/images/prowler_mcp_schema.mmd b/docs/images/prowler_mcp_schema.mmd index 96973546f6..2b8508cd18 100644 --- a/docs/images/prowler_mcp_schema.mmd +++ b/docs/images/prowler_mcp_schema.mmd @@ -1,29 +1,40 @@ flowchart LR - subgraph HOSTS["MCP Hosts"] + subgraph HOSTS["MCP Clients"] chat["Chat Interfaces
(Claude Desktop, LobeChat)"] ide["IDEs and Code Editors
(Claude Code, Cursor)"] apps["Other AI Applications
(5ire, custom agents)"] end - subgraph MCP["Prowler MCP Server"] - app_tools["prowler_app_* tools
(JWT or API key auth)
Findings · Providers · Scans
Resources · Muting · Compliance
Attack Paths"] + subgraph SERVERS["Prowler MCP Server"] + direction TB + cloud["☁️ Cloud MCP Server (Recommended)
mcp.prowler.com/mcp · HTTP
Managed by Prowler · always up to date
Adds Cloud-only tools (Alerts,
Scan Scheduling, Findings Triage)"] + local["💻 Local MCP Server
Self-run · STDIO or HTTP
Python 3.12+ or Docker
You manage updates"] + end + + subgraph TOOLS["Prowler MCP Tools"] + prowler_tools["prowler_* tools
(API key or JWT auth)
Findings · Providers · Scans
Resources · Muting · Compliance
Attack Paths"] hub_tools["prowler_hub_* tools
(no auth)
Checks Catalog · Check Code
Fixers · Compliance Frameworks"] docs_tools["prowler_docs_* tools
(no auth)
Search · Document Retrieval"] end - api["Prowler API
(REST)"] + api["Prowler API (REST)
Cloud · Private Cloud · Local Server"] hub["hub.prowler.com
(REST)"] docs["docs.prowler.com
(Mintlify)"] - chat -->|STDIO or HTTP| app_tools - chat -->|STDIO or HTTP| hub_tools - chat -->|STDIO or HTTP| docs_tools - ide -->|STDIO or HTTP| app_tools - ide -->|STDIO or HTTP| hub_tools - ide -->|STDIO or HTTP| docs_tools - apps -->|STDIO or HTTP| app_tools - apps -->|STDIO or HTTP| hub_tools - apps -->|STDIO or HTTP| docs_tools - app_tools -->|REST| api + chat -->|HTTP| cloud + ide -->|HTTP| cloud + apps -->|HTTP| cloud + chat -->|STDIO or HTTP| local + ide -->|STDIO or HTTP| local + apps -->|STDIO or HTTP| local + + cloud --> prowler_tools + cloud --> hub_tools + cloud --> docs_tools + local --> prowler_tools + local --> hub_tools + local --> docs_tools + + prowler_tools -->|REST| api hub_tools -->|REST| hub docs_tools -->|REST| docs diff --git a/docs/images/prowler_mcp_schema.png b/docs/images/prowler_mcp_schema.png deleted file mode 100644 index 8a8884fa5e0e0a4c181ac3be373df8e7c6cfe6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380040 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 m5SF$+@ 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

I_8>G3EM2W|*|{NE$!XH7{NGoOds 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�sLL@lW_}@yIt!um$LsMjiePvO>2j%UFG+Z1+!t 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 diff --git a/docs/user-guide/tutorials/prowler-app-attack-paths.mdx b/docs/user-guide/tutorials/prowler-app-attack-paths.mdx index 32df3c50ba..22e56e5634 100644 --- a/docs/user-guide/tutorials/prowler-app-attack-paths.mdx +++ b/docs/user-guide/tutorials/prowler-app-attack-paths.mdx @@ -283,7 +283,7 @@ In addition to the upstream schema, Prowler enriches the graph with: AI assistants connected through Prowler MCP Server can fetch the exact Cartography schema for the active scan via the - `prowler_app_get_attack_paths_cartography_schema` tool. This guarantees that + `prowler_get_attack_paths_cartography_schema` tool. This guarantees that generated queries match the schema version pinned by the running Prowler release. @@ -427,10 +427,10 @@ Attack Paths capabilities are also available through the [Prowler MCP Server](/g The following MCP tools are available for Attack Paths: -- **`prowler_app_list_attack_paths_scans`** - List and filter Attack Paths scans. -- **`prowler_app_list_attack_paths_queries`** - Discover available queries for a completed scan. -- **`prowler_app_run_attack_paths_query`** - Execute a query and retrieve graph results with nodes and relationships. -- **`prowler_app_get_attack_paths_cartography_schema`** - Retrieve the Cartography graph schema for custom openCypher queries. +- **`prowler_list_attack_paths_scans`** - List and filter Attack Paths scans. +- **`prowler_list_attack_paths_queries`** - Discover available queries for a completed scan. +- **`prowler_run_attack_paths_query`** - Execute a query and retrieve graph results with nodes and relationships. +- **`prowler_get_attack_paths_cartography_schema`** - Retrieve the Cartography graph schema for custom openCypher queries. ### Example Questions diff --git a/mcp_server/.env.template b/mcp_server/.env.template index 11b8caa724..10aabd84cf 100644 --- a/mcp_server/.env.template +++ b/mcp_server/.env.template @@ -1,3 +1,3 @@ -PROWLER_APP_API_KEY="pk_your_api_key_here" +PROWLER_API_KEY="pk_your_api_key_here" API_BASE_URL="https://api.prowler.com/api/v1" PROWLER_MCP_TRANSPORT_MODE="stdio" diff --git a/mcp_server/AGENTS.md b/mcp_server/AGENTS.md index a82cc42e33..1d3d808e6a 100644 --- a/mcp_server/AGENTS.md +++ b/mcp_server/AGENTS.md @@ -25,7 +25,7 @@ The Prowler MCP Server provides AI agents access to the Prowler ecosystem throug ## CRITICAL RULES ### Tool Implementation -- ALWAYS: Extend `BaseTool` ABC for Prowler App tools (auto-registration) +- ALWAYS: Extend `BaseTool` ABC for Prowler tools (auto-registration) - ALWAYS: Use `@mcp.tool()` decorator for Hub/Docs tools - NEVER: Manually register BaseTool subclasses - NEVER: Import tools directly in server.py @@ -56,7 +56,7 @@ await prowler_mcp_server.import_server(docs_mcp_server, prefix="prowler_docs") ### Tool Naming - `prowler_hub_*` - Catalog and compliance (no auth) - `prowler_docs_*` - Documentation search (no auth) -- `prowler_app_*` - Cloud/App management (auth required) +- `prowler_*` - Prowler Cloud, Private Cloud & Local Server management (auth required) --- diff --git a/mcp_server/README.md b/mcp_server/README.md index e990f0f363..c0e4fdb0fe 100644 --- a/mcp_server/README.md +++ b/mcp_server/README.md @@ -6,9 +6,9 @@ ## Key Capabilities -### Prowler Cloud and Prowler App (Self-Managed) +### Prowler Cloud, Prowler Private Cloud & Prowler Local Server -Full access to Prowler Cloud platform and self-managed Prowler App for: +Full access to your Prowler data (Prowler Cloud, Prowler Private Cloud, or Prowler Local Server) for: - **Findings Analysis**: Query, filter, and analyze security findings across all your cloud environments - **Finding Groups Analysis**: Triage findings grouped by check ID and drill down into affected resources - **Provider Management**: Create, configure, and manage your configured Prowler providers (AWS, Azure, GCP, etc.) @@ -49,7 +49,7 @@ For comprehensive guides and tutorials, see the official documentation: Prowler MCP Server can be used in three ways: -### 1. Prowler Cloud MCP Server (Recommended) +### 1. Hosted Prowler MCP (Recommended) **Use Prowler's managed MCP server at `https://mcp.prowler.com/mcp`** @@ -126,7 +126,7 @@ For complete tool descriptions and parameters, see the [Tools Reference](https:/ ### Tool Naming Convention All tools follow a consistent naming pattern with prefixes: -- `prowler_app_*` - Prowler Cloud and App (Self-Managed) management tools +- `prowler_*` - Prowler Cloud, Prowler Private Cloud & Prowler Local Server management tools - `prowler_hub_*` - Prowler Hub catalog and compliance tools - `prowler_docs_*` - Prowler documentation search and retrieval @@ -146,7 +146,7 @@ prowler_mcp_server/ **Key Features:** - **Modular Design**: Three independent sub-servers with prefixed namespacing -- **Auto-Discovery**: Prowler App tools are automatically discovered and registered +- **Auto-Discovery**: Prowler tools are automatically discovered and registered - **LLM Optimization**: Response models minimize token usage by excluding empty values - **Dual Transport**: Supports both STDIO (local) and HTTP (remote) modes @@ -174,17 +174,17 @@ The Prowler MCP Server enables powerful workflows through AI assistants: ## Requirements -**For Prowler Cloud MCP Server:** -- Prowler Cloud account and API key (only for Prowler Cloud/App features) +**For the hosted Prowler MCP:** +- Prowler Cloud account and API key (only for Prowler features) **For self-hosted STDIO/HTTP Mode:** - Python 3.12+ or Docker - Network access to: - `https://hub.prowler.com` (for Prowler Hub) - `https://docs.prowler.com` (for Prowler Documentation) - - Prowler Cloud API or self-hosted Prowler App API (for Prowler Cloud/App features) + - Prowler Cloud API or Prowler Local Server API (for Prowler features) -> **No Authentication Required**: Prowler Hub and Prowler Documentation features work without authentication. A Prowler API key is only required to access Prowler Cloud or Prowler App (Self-Managed) features. +> **No Authentication Required**: Prowler Hub and Prowler Documentation features work without authentication. A Prowler API key is only required to access Prowler features (Prowler Cloud, Prowler Private Cloud, or Prowler Local Server). ## Configuring MCP Hosts @@ -200,7 +200,7 @@ For developers looking to extend the MCP server with new tools or features: ## Related Products - **[Prowler Hub](https://hub.prowler.com)**: Browse security checks and compliance frameworks -- **[Prowler Cloud](https://cloud.prowler.com)**: Managed Prowler platform +- **[Prowler Cloud](https://cloud.prowler.com)**: Fully managed Prowler in the cloud - **[Lighthouse AI](https://docs.prowler.com/getting-started/products/prowler-lighthouse-ai)**: AI security analyst ## License diff --git a/mcp_server/changelog.d/prowler-tools-namespace.changed.md b/mcp_server/changelog.d/prowler-tools-namespace.changed.md new file mode 100644 index 0000000000..0ca03d15ca --- /dev/null +++ b/mcp_server/changelog.d/prowler-tools-namespace.changed.md @@ -0,0 +1 @@ +Core Prowler tool namespace from the `prowler_app_*` prefix to `prowler_*` diff --git a/mcp_server/prowler_mcp_server/__init__.py b/mcp_server/prowler_mcp_server/__init__.py index fe7af2dcea..1956a6ec41 100644 --- a/mcp_server/prowler_mcp_server/__init__.py +++ b/mcp_server/prowler_mcp_server/__init__.py @@ -5,7 +5,7 @@ This package provides MCP tools for accessing: - Prowler Hub: All security artifacts (detections, remediations and frameworks) supported by Prowler """ -__version__ = "0.5.0" +__version__ = "0.8.0" __author__ = "Prowler Team" __email__ = "engineering@prowler.com" diff --git a/mcp_server/prowler_mcp_server/prowler_app/models/__init__.py b/mcp_server/prowler_mcp_server/prowler_app/models/__init__.py index 899ab4e866..1b15e35ac9 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/models/__init__.py +++ b/mcp_server/prowler_mcp_server/prowler_app/models/__init__.py @@ -1,4 +1,4 @@ -"""Pydantic models for Prowler App MCP Server.""" +"""Pydantic models for Prowler MCP Server.""" from prowler_mcp_server.prowler_app.models.base import MinimalSerializerMixin from prowler_mcp_server.prowler_app.models.findings import ( diff --git a/mcp_server/prowler_mcp_server/prowler_app/models/finding_groups.py b/mcp_server/prowler_mcp_server/prowler_app/models/finding_groups.py index ae8431ba63..c2429012c3 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/models/finding_groups.py +++ b/mcp_server/prowler_mcp_server/prowler_app/models/finding_groups.py @@ -228,7 +228,7 @@ class FindingGroupResource(MinimalSerializerMixin): resource: FindingGroupResourceInfo = Field(description="Affected resource") provider: FindingGroupProviderInfo = Field(description="Affected provider") finding_id: str = Field( - description="Finding UUID to use with prowler_app_get_finding_details" + description="Finding UUID to use with prowler_get_finding_details" ) status: FindingStatus = Field(description="Finding status for this resource") severity: FindingSeverity = Field(description="Finding severity") diff --git a/mcp_server/prowler_mcp_server/prowler_app/tools/__init__.py b/mcp_server/prowler_mcp_server/prowler_app/tools/__init__.py index 4d740b6efe..8b5be76076 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/tools/__init__.py +++ b/mcp_server/prowler_mcp_server/prowler_app/tools/__init__.py @@ -1,4 +1,4 @@ -"""Domain-specific tools for Prowler App MCP Server. +"""Domain-specific tools for Prowler MCP Server. Each module in this package contains a BaseTool subclass that registers and implements tools for a specific domain (findings, providers, scans, etc.). diff --git a/mcp_server/prowler_mcp_server/prowler_app/tools/attack_paths.py b/mcp_server/prowler_mcp_server/prowler_app/tools/attack_paths.py index b08bbfe01f..5bd66760fa 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/tools/attack_paths.py +++ b/mcp_server/prowler_mcp_server/prowler_app/tools/attack_paths.py @@ -1,4 +1,4 @@ -"""Attack Paths tools for Prowler App MCP Server. +"""Attack Paths tools for Prowler MCP Server. This module provides tools for analyzing Attack Paths data from Neo4j graph database. Attack Paths help identify security risks by tracing potential attack vectors @@ -22,16 +22,16 @@ class AttackPathsTools(BaseTool): """Tools for Attack Paths analysis. Provides tools for: - - prowler_app_list_attack_paths_scans: Find completed scans ready for analysis - - prowler_app_list_attack_paths_queries: Discover available queries for a scan - - prowler_app_run_attack_paths_query: Execute query and analyze attack paths + - prowler_list_attack_paths_scans: Find completed scans ready for analysis + - prowler_list_attack_paths_queries: Discover available queries for a scan + - prowler_run_attack_paths_query: Execute query and analyze attack paths """ async def list_attack_paths_scans( self, provider_id: list[str] = Field( default=[], - description="Filter by Prowler's internal UUID(s) (v4) for specific provider(s). Use `prowler_app_search_providers` tool to find provider IDs", + description="Filter by Prowler's internal UUID(s) (v4) for specific provider(s). Use `prowler_search_providers` tool to find provider IDs", ), provider_type: list[str] = Field( default=[], @@ -73,8 +73,8 @@ class AttackPathsTools(BaseTool): Workflow: 1. Use this tool to find completed attack paths scans - 2. Use prowler_app_list_attack_paths_queries to see available queries for a scan - 3. Use prowler_app_run_attack_paths_query to execute analysis + 2. Use prowler_list_attack_paths_queries to see available queries for a scan + 3. Use prowler_run_attack_paths_query to execute analysis """ try: # Validate pagination @@ -113,7 +113,7 @@ class AttackPathsTools(BaseTool): async def list_attack_paths_queries( self, scan_id: str = Field( - description="UUID of a COMPLETED attack paths scan. Use `prowler_app_list_attack_paths_scans` with state=['completed'] to find scan IDs" + description="UUID of a COMPLETED attack paths scan. Use `prowler_list_attack_paths_scans` with state=['completed'] to find scan IDs" ), ) -> list[dict[str, Any]]: """Discover available Attack Paths queries for a completed scan. @@ -133,9 +133,9 @@ class AttackPathsTools(BaseTool): - aws-ec2-instances-internet-exposed: Find internet-exposed EC2 instances Workflow: - 1. Use prowler_app_list_attack_paths_scans to find a completed scan + 1. Use prowler_list_attack_paths_scans to find a completed scan 2. Use this tool to discover available queries - 3. Use prowler_app_run_attack_paths_query with query_id and any required parameters + 3. Use prowler_run_attack_paths_query with query_id and any required parameters """ try: api_response = await self.api_client.get( @@ -158,7 +158,7 @@ class AttackPathsTools(BaseTool): description="UUID of a COMPLETED attack paths scan. The scan must be in 'completed' state" ), query_id: str = Field( - description="Query ID to execute (e.g., 'aws-internet-exposed-ec2-sensitive-s3-access'). Use `prowler_app_list_attack_paths_queries` to discover available queries" + description="Query ID to execute (e.g., 'aws-internet-exposed-ec2-sensitive-s3-access'). Use `prowler_list_attack_paths_queries` to discover available queries" ), parameters: dict[str, str] = Field( default_factory=dict, @@ -194,7 +194,7 @@ class AttackPathsTools(BaseTool): Workflow: 1. Ensure scan is completed - 2. List available queries (use prowler_app_list_attack_paths_queries) + 2. List available queries (use prowler_list_attack_paths_queries) 3. Execute this tool with appropriate parameters 4. Analyze the returned graph for security insights """ @@ -231,7 +231,7 @@ class AttackPathsTools(BaseTool): async def get_attack_paths_cartography_schema( self, scan_id: str = Field( - description="UUID of a COMPLETED attack paths scan. Use `prowler_app_list_attack_paths_scans` with state=['completed'] to find scan IDs" + description="UUID of a COMPLETED attack paths scan. Use `prowler_list_attack_paths_scans` with state=['completed'] to find scan IDs" ), ) -> dict[str, Any]: """Retrieve the Cartography graph schema for a completed attack paths scan. @@ -253,10 +253,10 @@ class AttackPathsTools(BaseTool): - schema_content: Full Cartography schema markdown with node/relationship definitions Workflow: - 1. Use prowler_app_list_attack_paths_scans to find a completed scan + 1. Use prowler_list_attack_paths_scans to find a completed scan 2. Use this tool to get the schema for the scan's provider 3. Use the schema to craft custom openCypher queries - 4. Execute queries with prowler_app_run_attack_paths_query + 4. Execute queries with prowler_run_attack_paths_query """ try: api_response = await self.api_client.get( diff --git a/mcp_server/prowler_mcp_server/prowler_app/tools/compliance.py b/mcp_server/prowler_mcp_server/prowler_app/tools/compliance.py index 360dd5510d..33cdd22a69 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/tools/compliance.py +++ b/mcp_server/prowler_mcp_server/prowler_app/tools/compliance.py @@ -1,4 +1,4 @@ -"""Compliance framework tools for Prowler App MCP Server. +"""Compliance framework tools for Prowler MCP Server. This module provides tools for viewing compliance status and requirement details across all cloud providers. @@ -50,7 +50,7 @@ class ComplianceTools(BaseTool): if not scans_data: raise ValueError( f"No completed scans found for provider {provider_id}. " - "Run a scan first using prowler_app_trigger_scan." + "Run a scan first using prowler_trigger_scan." ) scan_id = scans_data[0]["id"] @@ -60,11 +60,11 @@ class ComplianceTools(BaseTool): self, scan_id: str | None = Field( default=None, - description="UUID of a specific scan to get compliance data for. Required if provider_id is not specified. Use `prowler_app_list_scans` to find scan IDs.", + description="UUID of a specific scan to get compliance data for. Required if provider_id is not specified. Use `prowler_list_scans` to find scan IDs.", ), provider_id: str | None = Field( default=None, - description="Prowler's internal UUID (v4) for a specific provider. If provided without scan_id, the tool will automatically find the latest completed scan for this provider. Use `prowler_app_search_providers` tool to find provider IDs.", + description="Prowler's internal UUID (v4) for a specific provider. If provided without scan_id, the tool will automatically find the latest completed scan for this provider. Use `prowler_search_providers` tool to find provider IDs.", ), ) -> dict[str, Any]: """Get high-level compliance overview across all frameworks for a specific scan. @@ -90,11 +90,11 @@ class ComplianceTools(BaseTool): Workflow: 1. Use this tool to get an overview of all compliance frameworks - 2. Use prowler_app_get_compliance_framework_state_details with a specific compliance_id to see which requirements failed + 2. Use prowler_get_compliance_framework_state_details with a specific compliance_id to see which requirements failed """ if not scan_id and not provider_id: return { - "error": "Either scan_id or provider_id must be provided. Use prowler_app_search_providers to find provider IDs or prowler_app_list_scans to find scan IDs." + "error": "Either scan_id or provider_id must be provided. Use prowler_search_providers to find provider IDs or prowler_list_scans to find scan IDs." } elif scan_id and provider_id: return { @@ -254,7 +254,7 @@ class ComplianceTools(BaseTool): async def get_compliance_framework_state_details( self, compliance_id: str = Field( - description="Compliance framework ID to get details for (e.g., 'cis_1.5_aws', 'pci_dss_v4.0_aws'). You can get compliance IDs from prowler_app_get_compliance_overview or consulting Prowler Hub/Prowler Documentation that you can also find in form of tools in this MCP Server", + description="Compliance framework ID to get details for (e.g., 'cis_1.5_aws', 'pci_dss_v4.0_aws'). You can get compliance IDs from prowler_get_compliance_overview or consulting Prowler Hub/Prowler Documentation that you can also find in form of tools in this MCP Server", ), scan_id: str | None = Field( default=None, @@ -262,14 +262,14 @@ class ComplianceTools(BaseTool): ), provider_id: str | None = Field( default=None, - description="Prowler's internal UUID (v4) for a specific provider. If provided without scan_id, the tool will automatically find the latest completed scan for this provider. Use `prowler_app_search_providers` tool to find provider IDs.", + description="Prowler's internal UUID (v4) for a specific provider. If provided without scan_id, the tool will automatically find the latest completed scan for this provider. Use `prowler_search_providers` tool to find provider IDs.", ), ) -> dict[str, Any]: """Get detailed requirement-level breakdown for a specific compliance framework. IMPORTANT: This tool returns DETAILED requirement information for a single compliance framework, focusing on FAILED requirements and their associated FAILED finding IDs. - Use this after prowler_app_get_compliance_overview to drill down into specific frameworks. + Use this after prowler_get_compliance_overview to drill down into specific frameworks. The markdown report includes: @@ -280,7 +280,7 @@ class ComplianceTools(BaseTool): 2. Failed Requirements Breakdown: - Each failed requirement's ID and description - Associated failed finding IDs for each failed requirement - - Use prowler_app_get_finding_details with these finding IDs for more details and remediation guidance + - Use prowler_get_finding_details with these finding IDs for more details and remediation guidance Default behavior: - Requires either scan_id OR provider_id @@ -289,14 +289,14 @@ class ComplianceTools(BaseTool): - Only shows failed requirements with their associated failed finding IDs Workflow: - 1. Use prowler_app_get_compliance_overview to identify frameworks with failures + 1. Use prowler_get_compliance_overview to identify frameworks with failures 2. Use this tool with the compliance_id to see failed requirements and their finding IDs - 3. Use prowler_app_get_finding_details with the finding IDs to get remediation guidance + 3. Use prowler_get_finding_details with the finding IDs to get remediation guidance """ # Validate that either scan_id or provider_id is provided if not scan_id and not provider_id: return { - "error": "Either scan_id or provider_id must be provided. Use prowler_app_search_providers to find provider IDs or prowler_app_list_scans to find scan IDs." + "error": "Either scan_id or provider_id must be provided. Use prowler_search_providers to find provider IDs or prowler_list_scans to find scan IDs." } # Resolve provider_id to latest scan_id if needed @@ -395,7 +395,7 @@ class ComplianceTools(BaseTool): report_lines.append("**Failed Finding IDs**: None found") report_lines.append("") report_lines.append( - "*Use `prowler_app_get_finding_details` with these finding IDs to get remediation guidance.*" + "*Use `prowler_get_finding_details` with these finding IDs to get remediation guidance.*" ) report_lines.append("") diff --git a/mcp_server/prowler_mcp_server/prowler_app/tools/finding_groups.py b/mcp_server/prowler_mcp_server/prowler_app/tools/finding_groups.py index 905a352740..05adf8db2b 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/tools/finding_groups.py +++ b/mcp_server/prowler_mcp_server/prowler_app/tools/finding_groups.py @@ -1,4 +1,4 @@ -"""Finding Groups tools for Prowler App MCP Server. +"""Finding Groups tools for Prowler MCP Server. This module provides read-only tools for finding group triage and drill-downs. """ @@ -233,8 +233,8 @@ class FindingGroupsTools(BaseTool): `date_to`, this uses `/finding-groups` with a maximum 2-day date window. Use this tool to find noisy or high-impact checks, then call - prowler_app_get_finding_group_details for complete counters or - prowler_app_list_finding_group_resources to drill into affected resources. + prowler_get_finding_group_details for complete counters or + prowler_list_finding_group_resources to drill into affected resources. """ try: self.api_client.validate_page_size(page_size) @@ -423,7 +423,7 @@ class FindingGroupsTools(BaseTool): Default behavior returns FAIL, unmuted resources so the result is actionable. Set `include_muted=True` to include accepted/suppressed resources too. Each row includes nested resource and provider data plus - `finding_id`. Use `prowler_app_get_finding_details(finding_id)` to + `finding_id`. Use `prowler_get_finding_details(finding_id)` to retrieve complete remediation guidance for a specific resource finding. """ try: diff --git a/mcp_server/prowler_mcp_server/prowler_app/tools/findings.py b/mcp_server/prowler_mcp_server/prowler_app/tools/findings.py index ec492c6a43..b556101cab 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/tools/findings.py +++ b/mcp_server/prowler_mcp_server/prowler_app/tools/findings.py @@ -1,4 +1,4 @@ -"""Security Findings tools for Prowler App MCP Server. +"""Security Findings tools for Prowler MCP Server. This module provides tools for searching, viewing, and analyzing security findings across all cloud providers. @@ -92,7 +92,7 @@ class FindingsTools(BaseTool): """Search and filter security findings across all cloud providers with rich filtering capabilities. IMPORTANT: This tool returns LIGHTWEIGHT findings. Use this for fast searching and filtering across many findings. - For complete details use prowler_app_get_finding_details on specific findings. + For complete details use prowler_get_finding_details on specific findings. Default behavior: - Returns latest findings from most recent scans (no date parameters needed) @@ -111,7 +111,7 @@ class FindingsTools(BaseTool): Workflow: 1. Use this tool to search and filter findings by severity, status, provider, service, region, etc. - 2. Use prowler_app_get_finding_details with the finding 'id' to get complete information about the finding + 2. Use prowler_get_finding_details with the finding 'id' to get complete information about the finding """ # Validate page_size parameter self.api_client.validate_page_size(page_size) @@ -187,9 +187,9 @@ class FindingsTools(BaseTool): """Retrieve comprehensive details about a specific security finding by its ID. IMPORTANT: This tool returns COMPLETE finding details. - Use this after finding a specific finding via prowler_app_search_security_findings + Use this after finding a specific finding via prowler_search_security_findings - This tool provides ALL information that prowler_app_search_security_findings returns PLUS: + This tool provides ALL information that prowler_search_security_findings returns PLUS: 1. Check Metadata (information about the check script that generated the finding): - title: Human-readable phrase used to summarize the check @@ -217,7 +217,7 @@ class FindingsTools(BaseTool): - resource_ids: List of UUIDs for cloud resources associated with this finding Workflow: - 1. Use prowler_app_search_security_findings to browse and filter findings + 1. Use prowler_search_security_findings to browse and filter findings 2. Use this tool with the finding 'id' to get remediation guidance and complete context """ params = { diff --git a/mcp_server/prowler_mcp_server/prowler_app/tools/muting.py b/mcp_server/prowler_mcp_server/prowler_app/tools/muting.py index 639f1ec3b7..37e1504165 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/tools/muting.py +++ b/mcp_server/prowler_mcp_server/prowler_app/tools/muting.py @@ -1,4 +1,4 @@ -"""Muting tools for Prowler App MCP Server. +"""Muting tools for Prowler MCP Server. This module provides tools for managing finding muting in Prowler, including: - Mutelist management (pattern-based bulk muting) @@ -43,7 +43,7 @@ class MutingTools(BaseTool): Workflow: 1. Use this tool to check if a mutelist is configured 2. Examine current muting patterns before making updates - 3. Use prowler_app_set_mutelist to create or update the configuration + 3. Use prowler_set_mutelist to create or update the configuration """ self.logger.info("Retrieving mutelist configuration...") @@ -61,7 +61,7 @@ class MutingTools(BaseTool): if len(data) == 0: return { "error": "No mutelist found", - "message": "No mutelist configuration exists for this tenant. Use prowler_app_set_mutelist to create one.", + "message": "No mutelist configuration exists for this tenant. Use prowler_set_mutelist to create one.", } # Return the first (and only) mutelist @@ -116,10 +116,10 @@ Structure: - Exceptions: Accounts, Regions, Resources to exclude from muting Workflow: - 1. Use prowler_app_get_mutelist to check existing configuration + 1. Use prowler_get_mutelist to check existing configuration 2. Build configuration object following Prowler mutelist format 3. Use this tool to create or update the mutelist - 4. Verify with prowler_app_get_mutelist + 4. Verify with prowler_get_mutelist """ self.logger.info("Setting mutelist configuration...") @@ -171,12 +171,12 @@ Structure: """Remove the mutelist configuration from the tenant. WARNING: This is a destructive operation that cannot be undone. - - The mutelist will need to be re-created with prowler_app_set_mutelist + - The mutelist will need to be re-created with prowler_set_mutelist - New findings from future scans will NOT be muted by the deleted mutelist - Previously muted findings remain muted (deletion doesn't un-mute them) Workflow: - 1. Use prowler_app_get_mutelist to confirm what will be deleted + 1. Use prowler_get_mutelist to confirm what will be deleted 2. Use this tool to permanently remove the mutelist 3. New scans will no longer apply mutelist-based muting """ @@ -229,7 +229,7 @@ Structure: """Search and filter mute rules with pagination support. IMPORTANT: This tool returns LIGHTWEIGHT mute rules without the full list of finding UIDs. - Use prowler_app_get_mute_rule to get complete details including all finding UIDs and creator information. + Use prowler_get_mute_rule to get complete details including all finding UIDs and creator information. Default behavior: - Returns all mute rules (both enabled and disabled) @@ -237,15 +237,15 @@ Structure: - Includes basic rule information without full finding UID lists Each mute rule includes: - - Core identification: id (UUID for prowler_app_get_mute_rule), name + - Core identification: id (UUID for prowler_get_mute_rule), name - Contextual information: reason, enabled status - State tracking: finding_count (number of findings currently muted) - Temporal data: inserted_at, updated_at timestamps Workflow: 1. Use this tool to search and filter mute rules by name, enabled status, or keywords - 2. Use prowler_app_get_mute_rule with the mute rule 'id' to get complete details including all finding UIDs - 3. Use prowler_app_update_mute_rule or prowler_app_delete_mute_rule to modify rules + 2. Use prowler_get_mute_rule with the mute rule 'id' to get complete details including all finding UIDs + 3. Use prowler_update_mute_rule or prowler_delete_mute_rule to modify rules """ self.logger.info("Listing mute rules...") self.api_client.validate_page_size(page_size) @@ -289,17 +289,17 @@ Structure: """Retrieve comprehensive details about a specific mute rule by its ID. IMPORTANT: This tool returns COMPLETE mute rule details including the full list of finding UIDs. - Use this after finding a rule via prowler_app_list_mute_rules. + Use this after finding a rule via prowler_list_mute_rules. - This tool provides ALL information that prowler_app_list_mute_rules returns PLUS: + This tool provides ALL information that prowler_list_mute_rules returns PLUS: - finding_uids: Complete list of finding UIDs that are muted by this rule - user_creator_id: UUID of the user who created the rule (audit trail) Workflow: - 1. Use prowler_app_list_mute_rules to find rules by name or filter criteria + 1. Use prowler_list_mute_rules to find rules by name or filter criteria 2. Use this tool with the rule 'id' to get complete details 3. Examine finding_uids list to understand which findings are muted - 4. Use prowler_app_update_mute_rule or prowler_app_delete_mute_rule to modify if needed + 4. Use prowler_update_mute_rule or prowler_delete_mute_rule to modify if needed """ self.logger.info(f"Retrieving mute rule {rule_id}...") @@ -323,7 +323,7 @@ Structure: description="Reason for muting these findings. Document why this security issue is acceptable or intentional (e.g., 'Development environment with controlled access', 'Legacy application requires IMDSv1')." ), finding_ids: list[str] = Field( - description="List of finding IDs (UUIDs) to mute. Get these from the prowler_app_search_security_findings tool. Must provide at least 1 finding ID." + description="List of finding IDs (UUIDs) to mute. Get these from the prowler_search_security_findings tool. Must provide at least 1 finding ID." ), ) -> dict[str, Any]: """Create a new mute rule to mute specific findings with documentation and audit trail. @@ -337,15 +337,15 @@ Structure: - Records creator for audit trail The mute rule includes: - - Core identification: id (UUID for prowler_app_get_mute_rule), name, reason + - Core identification: id (UUID for prowler_get_mute_rule), name, reason - Configuration: enabled status, finding_uids list - Audit trail: user_creator_id (UUID of the Prowler user from the tenant that created the rule), timestamps when the rule was created and last modified Workflow: - 1. Use prowler_app_search_security_findings to identify findings to mute + 1. Use prowler_search_security_findings to identify findings to mute 2. Use this tool with finding IDs, descriptive name, and documented reason - 3. Verify with prowler_app_get_mute_rule to confirm rule creation - 4. Check findings are muted with prowler_app_search_security_findings (filter by muted=true) + 3. Verify with prowler_get_mute_rule to confirm rule creation + 4. Check findings are muted with prowler_search_security_findings (filter by muted=true) """ self.logger.info(f"Creating mute rule '{name}'...") @@ -399,9 +399,9 @@ Structure: - enabled: Toggle rule active status (doesn't affect already-muted findings) Workflow: - 1. Use prowler_app_get_mute_rule to see current rule state + 1. Use prowler_get_mute_rule to see current rule state 2. Use this tool to update name, reason, or enabled status - 3. Verify changes with prowler_app_get_mute_rule + 3. Verify changes with prowler_get_mute_rule """ self.logger.info(f"Updating mute rule {rule_id}...") @@ -451,9 +451,9 @@ Structure: - Cannot be undone - rule must be recreated to restore Workflow: - 1. Use prowler_app_get_mute_rule to review what will be deleted + 1. Use prowler_get_mute_rule to review what will be deleted 2. Use this tool to permanently remove the rule - 3. Verify deletion with prowler_app_list_mute_rules (rule should no longer appear) + 3. Verify deletion with prowler_list_mute_rules (rule should no longer appear) """ self.logger.info(f"Deleting mute rule {rule_id}...") diff --git a/mcp_server/prowler_mcp_server/prowler_app/tools/providers.py b/mcp_server/prowler_mcp_server/prowler_app/tools/providers.py index b22d57d7b9..3ba417d677 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/tools/providers.py +++ b/mcp_server/prowler_mcp_server/prowler_app/tools/providers.py @@ -1,4 +1,4 @@ -"""Provider Management tools for Prowler App MCP Server. +"""Provider Management tools for Prowler MCP Server. This module provides tools for managing provider connections, including searching, connecting, and deleting providers. @@ -19,9 +19,9 @@ class ProvidersTools(BaseTool): """Tools for provider management operations Provides tools for: - - prowler_app_search_providers: Search and view configured providers with their connection status - - prowler_app_connect_provider: Connect or register a provider for security scanning in Prowler - - prowler_app_delete_provider: Permanently remove a provider from Prowler + - prowler_search_providers: Search and view configured providers with their connection status + - prowler_connect_provider: Connect or register a provider for security scanning in Prowler + - prowler_delete_provider: Permanently remove a provider from Prowler """ async def search_providers( @@ -145,7 +145,7 @@ class ProvidersTools(BaseTool): ) -> dict[str, Any]: """Register a provider to be scanned with Prowler. - This tool will register a provider in Prowler App, even if the UID is wrong. + This tool will register a provider in Prowler, even if the UID is wrong. If the provider is already registered, it will be updated with the new provided alias or credentials if provided. If credentials are provided, they will be added to the indicated provider, if the provider does not exist, it will be created and the credentials will be added to it. If the connection test is successful, the provider will be connected. @@ -292,13 +292,13 @@ class ProvidersTools(BaseTool): async def delete_provider( self, provider_id: str = Field( - description="Prowler's internal UUID (v4) for the provider to permanently remove, generated when the provider was registered in the system. Use `prowler_app_search_providers` tool to find the provider_id if you only know the alias or the provider's own identifier (provider_uid)" + description="Prowler's internal UUID (v4) for the provider to permanently remove, generated when the provider was registered in the system. Use `prowler_search_providers` tool to find the provider_id if you only know the alias or the provider's own identifier (provider_uid)" ), ) -> dict[str, Any]: """Permanently remove a registered provider from Prowler. WARNING: This is a destructive operation that cannot be undone. The provider will need to be - re-added with prowler_app_connect_provider if you want to scan it again. + re-added with prowler_connect_provider if you want to scan it again. The tool always returns the deletion status and message. """ diff --git a/mcp_server/prowler_mcp_server/prowler_app/tools/resources.py b/mcp_server/prowler_mcp_server/prowler_app/tools/resources.py index 011e013b91..88fcca25ae 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/tools/resources.py +++ b/mcp_server/prowler_mcp_server/prowler_app/tools/resources.py @@ -1,4 +1,4 @@ -"""Cloud Resources tools for Prowler App MCP Server. +"""Cloud Resources tools for Prowler MCP Server. This module provides tools for searching, viewing, and analyzing cloud resources across all providers. @@ -86,7 +86,7 @@ class ResourcesTools(BaseTool): IMPORTANT: This tool returns LIGHTWEIGHT resource information. Use this for fast searching and filtering across many resources. For complete configuration details, metadata, and finding - relationships, use prowler_app_get_resource on specific resources of interest. + relationships, use prowler_get_resource on specific resources of interest. This is the primary tool for browsing resources with rich filtering capabilities. Returns current state by default (latest scan per provider). Specify dates to query @@ -102,16 +102,16 @@ class ResourcesTools(BaseTool): - With dates: queries historical resource state (2-day maximum range between date_from and date_to) Each resource includes: - - Core identification: id (UUID for prowler_app_get_resource), uid, name + - Core identification: id (UUID for prowler_get_resource), uid, name - Location context: region, service, type - Security context: failed_findings_count (number of active security issues) - Tags: tags associated with the resource Useful Workflow: 1. Use this tool to search and filter resources by provider, region, service, tags, etc. - 2. Use prowler_app_get_resource with the resource 'id' to get complete configuration and metadata - 3. Use prowler_app_search_security_findings to find security issues for specific resources - 4. Use prowler_app_get_finding_details to get details about the security issues for specific resources + 2. Use prowler_get_resource with the resource 'id' to get complete configuration and metadata + 3. Use prowler_search_security_findings to find security issues for specific resources + 4. Use prowler_get_finding_details to get details about the security issues for specific resources """ # Validate page_size parameter self.api_client.validate_page_size(page_size) @@ -177,15 +177,15 @@ class ResourcesTools(BaseTool): async def get_resource( self, resource_id: str = Field( - description="Prowler's internal UUID (v4) for the resource to retrieve, generated when the resource was discovered in the system. Use `prowler_app_list_resources` tool to find the right ID" + description="Prowler's internal UUID (v4) for the resource to retrieve, generated when the resource was discovered in the system. Use `prowler_list_resources` tool to find the right ID" ), ) -> dict[str, Any]: """Retrieve comprehensive details about a specific resource by its ID. IMPORTANT: This tool provides COMPLETE resource details with all available information. - Use this after finding a specific resource via prowler_app_list_resources. + Use this after finding a specific resource via prowler_list_resources. - This tool provides ALL information that prowler_app_list_resources returns PLUS: + This tool provides ALL information that prowler_list_resources returns PLUS: 1. Configuration Details: - metadata: Provider-specific configuration (tags, policies, encryption settings, network rules) @@ -197,12 +197,12 @@ class ResourcesTools(BaseTool): 3. Security Relationships: - finding_ids: Prowler's internal UUIDs (v4) of all security findings associated with this resource - - Use prowler_app_get_finding_details on these IDs to get remediation guidance + - Use prowler_get_finding_details on these IDs to get remediation guidance Useful Workflow: - 1. Use prowler_app_list_resources to browse and filter across many resources + 1. Use prowler_list_resources to browse and filter across many resources 2. Use this tool to drill down into specific resources of interest - 3. Use prowler_app_get_finding_details to get details about the security issues for specific resources + 3. Use prowler_get_finding_details to get details about the security issues for specific resources """ params = {} @@ -348,7 +348,7 @@ class ResourcesTools(BaseTool): async def get_resource_events( self, resource_id: str = Field( - description="Prowler's internal UUID (v4) for the resource. Use `prowler_app_list_resources` to find the right ID, or get it from a finding's resource relationship via `prowler_app_get_finding_details`." + description="Prowler's internal UUID (v4) for the resource. Use `prowler_list_resources` to find the right ID, or get it from a finding's resource relationship via `prowler_get_finding_details`." ), lookback_days: int = Field( default=90, @@ -386,8 +386,8 @@ class ResourcesTools(BaseTool): - Identifying unauthorized or unexpected modifications Workflows: - 1. Resource browsing: prowler_app_list_resources → find resource → this tool for event history - 2. Incident investigation: prowler_app_get_finding_details → get resource ID from finding → this tool to identify who caused the issue, what they changed, and when + 1. Resource browsing: prowler_list_resources → find resource → this tool for event history + 2. Incident investigation: prowler_get_finding_details → get resource ID from finding → this tool to identify who caused the issue, what they changed, and when """ params = { "lookback_days": lookback_days, diff --git a/mcp_server/prowler_mcp_server/prowler_app/tools/scans.py b/mcp_server/prowler_mcp_server/prowler_app/tools/scans.py index 1df636ffc0..21d1431b71 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/tools/scans.py +++ b/mcp_server/prowler_mcp_server/prowler_app/tools/scans.py @@ -1,4 +1,4 @@ -"""Security Scans tools for Prowler App MCP Server. +"""Security Scans tools for Prowler MCP Server. This module provides tools for managing and monitoring Prowler security scans. """ @@ -20,18 +20,18 @@ class ScansTools(BaseTool): """Tools for security scan operations. Provides tools for: - - prowler_app_list_scans: Search and filter scans with rich filtering capabilities - - prowler_app_get_scan: Get comprehensive details about a specific scan - - prowler_app_trigger_scan: Trigger manual security scans for providers - - prowler_app_schedule_daily_scan: Schedule automated daily scans for continuous monitoring - - prowler_app_update_scan: Update scan names for better organization + - prowler_list_scans: Search and filter scans with rich filtering capabilities + - prowler_get_scan: Get comprehensive details about a specific scan + - prowler_trigger_scan: Trigger manual security scans for providers + - prowler_schedule_daily_scan: Schedule automated daily scans for continuous monitoring + - prowler_update_scan: Update scan names for better organization """ async def list_scans( self, provider_id: list[str] = Field( default=[], - description="Filter by Prowler's internal UUID(s) (v4) for specific provider(s), generated when the provider was registered. Use `prowler_app_search_providers` tool to find provider IDs", + description="Filter by Prowler's internal UUID(s) (v4) for specific provider(s), generated when the provider was registered. Use `prowler_search_providers` tool to find provider IDs", ), provider_type: list[str] = Field( default=[], @@ -56,7 +56,7 @@ class ScansTools(BaseTool): ), trigger: Literal["manual", "scheduled"] | None = Field( default=None, - description="Filter by how the scan was initiated. Options: 'manual' (user-initiated via prowler_app_trigger_scan), 'scheduled' (automated via prowler_app_schedule_daily_scan)", + description="Filter by how the scan was initiated. Options: 'manual' (user-initiated via prowler_trigger_scan), 'scheduled' (automated via prowler_schedule_daily_scan)", ), name: str | None = Field( default=None, @@ -75,7 +75,7 @@ class ScansTools(BaseTool): IMPORTANT: This tool returns LIGHTWEIGHT scan information. Use this for fast searching and filtering across many scans. For complete scan details including progress, duration, and resource counts, - use prowler_app_get_scan on specific scans of interest. + use prowler_get_scan on specific scans of interest. Default behavior: - Returns all scans @@ -83,15 +83,15 @@ class ScansTools(BaseTool): - Includes all scan states (available, scheduled, executing, completed, failed, cancelled) Each scan includes: - - Core identification: id (UUID for prowler_app_get_scan), name + - Core identification: id (UUID for prowler_get_scan), name - Execution context: state, trigger (manual/scheduled) - Temporal data: started_at, completed_at - Provider relationship: provider_id Workflow: 1. Use this tool to search and filter scans by provider, state, or date range - 2. Use prowler_app_get_scan with the scan 'id' to get progress, duration, and resource counts - 3. Use prowler_app_search_security_findings filtered by scan dates to analyze scan results + 2. Use prowler_get_scan with the scan 'id' to get progress, duration, and resource counts + 3. Use prowler_search_security_findings filtered by scan dates to analyze scan results """ # Validate pagination self.api_client.validate_page_size(page_size) @@ -128,15 +128,15 @@ class ScansTools(BaseTool): async def get_scan( self, scan_id: str = Field( - description="Prowler's internal UUID (v4) for the scan to retrieve, generated when the scan was created (e.g., '123e4567-e89b-12d3-a456-426614174000'). Use `prowler_app_list_scans` tool to find scan IDs" + description="Prowler's internal UUID (v4) for the scan to retrieve, generated when the scan was created (e.g., '123e4567-e89b-12d3-a456-426614174000'). Use `prowler_list_scans` tool to find scan IDs" ), ) -> dict[str, Any]: """Retrieve comprehensive details about a specific scan by its ID. IMPORTANT: This tool returns COMPLETE scan details. - Use this after finding a specific scan via prowler_app_list_scans. + Use this after finding a specific scan via prowler_list_scans. - This tool provides ALL information that prowler_app_list_scans returns PLUS: + This tool provides ALL information that prowler_list_scans returns PLUS: 1. Execution Details: - progress: Scan completion progress as percentage (0-100%) @@ -155,9 +155,9 @@ class ScansTools(BaseTool): - Understanding scan scheduling patterns Workflow: - 1. Use prowler_app_list_scans to browse and filter scans + 1. Use prowler_list_scans to browse and filter scans 2. Use this tool with the scan 'id' to monitor progress or view detailed results - 3. For completed scans, use prowler_app_search_security_findings filtered by date to analyze findings + 3. For completed scans, use prowler_search_security_findings filtered by date to analyze findings """ # Fetch scan with all fields params = { @@ -172,7 +172,7 @@ class ScansTools(BaseTool): async def trigger_scan( self, provider_id: str = Field( - description="Prowler's internal UUID (v4) for the provider to scan, generated when the provider was registered in the system (e.g., '4d0e2614-6385-4fa7-bf0b-c2e2f75c6877'). Use `prowler_app_search_providers` tool to find the provider ID" + description="Prowler's internal UUID (v4) for the provider to scan, generated when the provider was registered in the system (e.g., '4d0e2614-6385-4fa7-bf0b-c2e2f75c6877'). Use `prowler_search_providers` tool to find the provider ID" ), name: str | None = Field( default=None, @@ -182,14 +182,14 @@ class ScansTools(BaseTool): """Trigger a manual security scan for a provider. IMPORTANT: This tool returns immediately once the scan is created. - The scan will continue running in the background. Use `prowler_app_get_scan` + The scan will continue running in the background. Use `prowler_get_scan` with the returned scan ID to monitor progress and check when it completes. Example Useful Workflow: - 1. Use `prowler_app_search_providers` to find the provider_id you want to scan + 1. Use `prowler_search_providers` to find the provider_id you want to scan 2. Use this tool to trigger the scan - 3. Use `prowler_app_get_scan` with the returned scan 'id' to monitor progress - 4. Once completed, use `prowler_app_search_security_findings` to analyze results + 3. Use `prowler_get_scan` with the returned scan 'id' to monitor progress + 4. Once completed, use `prowler_search_security_findings` to analyze results """ try: # Build request data @@ -231,7 +231,7 @@ class ScansTools(BaseTool): return ScanCreationResult( scan=scan_info, status="success", - message=f"Scan {scan_id} created successfully. The scan may take some time to complete. Use prowler_app_get_scan tool with this ID to monitor progress.", + message=f"Scan {scan_id} created successfully. The scan may take some time to complete. Use prowler_get_scan tool with this ID to monitor progress.", ).model_dump() except Exception as e: @@ -245,7 +245,7 @@ class ScansTools(BaseTool): async def schedule_daily_scan( self, provider_id: str = Field( - description="Prowler's internal UUID (v4) for the provider to scan, generated when the provider was registered in the system (e.g., '4d0e2614-6385-4fa7-bf0b-c2e2f75c6877'). Use `prowler_app_search_providers` tool to find the provider ID" + description="Prowler's internal UUID (v4) for the provider to scan, generated when the provider was registered in the system (e.g., '4d0e2614-6385-4fa7-bf0b-c2e2f75c6877'). Use `prowler_search_providers` tool to find the provider ID" ), ) -> dict[str, Any]: """Schedule automated daily scans for a provider for continuous security monitoring. @@ -256,17 +256,17 @@ class ScansTools(BaseTool): you're not actively using the system. IMPORTANT: This tool returns immediately once the daily schedule is created. - The schedule will be set up in the background. Use `prowler_app_list_scans` + The schedule will be set up in the background. Use `prowler_list_scans` filtered by provider_id and trigger='scheduled' to view scheduled scans. IMPORTANT: This creates a PERSISTENT schedule. The provider will be scanned automatically every 24 hours until the provider is deleted. Example Useful Workflow: - 1. Use `prowler_app_search_providers` to find the provider_id you want to monitor + 1. Use `prowler_search_providers` to find the provider_id you want to monitor 2. Use this tool to create the daily schedule - 3. Use `prowler_app_list_scans` filtered by provider_id to view scheduled and completed scans - 4. Monitor findings over time with `prowler_app_search_security_findings` + 3. Use `prowler_list_scans` filtered by provider_id to view scheduled and completed scans + 4. Monitor findings over time with `prowler_search_security_findings` """ self.logger.info(f"Creating daily schedule for provider {provider_id}") task_response = await self.api_client.post( @@ -285,7 +285,7 @@ class ScansTools(BaseTool): ) if task_state == "available": - return_message = "Daily schedule created successfully. The schedule is being set up in the background. Use prowler_app_list_scans with provider_id filter to view scheduled scans." + return_message = "Daily schedule created successfully. The schedule is being set up in the background. Use prowler_list_scans with provider_id filter to view scheduled scans." else: return_message = "Daily schedule creation failed. Please try again later." @@ -297,7 +297,7 @@ class ScansTools(BaseTool): async def update_scan( self, scan_id: str = Field( - description="Prowler's internal UUID (v4) for the scan to update, generated when the scan was created (e.g., '123e4567-e89b-12d3-a456-426614174000'). Use `prowler_app_list_scans` tool to find the scan ID if you only know the provider or scan name. Returns an error if the scan ID is invalid or not found." + description="Prowler's internal UUID (v4) for the scan to update, generated when the scan was created (e.g., '123e4567-e89b-12d3-a456-426614174000'). Use `prowler_list_scans` tool to find the scan ID if you only know the provider or scan name. Returns an error if the scan ID is invalid or not found." ), name: str = Field( description="New human-friendly name for the scan (3-100 characters). Use descriptive names to improve organization and tracking, e.g., 'Production Security Audit - Q4 2025', 'Post-Deployment Compliance Check'. IMPORTANT: Only the scan name can be updated - other attributes (state, progress, duration) are read-only and managed by the system." @@ -309,7 +309,7 @@ class ScansTools(BaseTool): (state, progress, duration, etc.) are read-only and managed by the system. Example Useful Workflow: - 1. Use `prowler_app_list_scans` to find the scan you want to rename + 1. Use `prowler_list_scans` to find the scan you want to rename 2. Use this tool with the scan 'id' and new name """ api_response = await self.api_client.patch( diff --git a/mcp_server/prowler_mcp_server/prowler_app/utils/api_client.py b/mcp_server/prowler_mcp_server/prowler_app/utils/api_client.py index a6aacc3ce1..187364bee1 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/utils/api_client.py +++ b/mcp_server/prowler_mcp_server/prowler_app/utils/api_client.py @@ -1,4 +1,4 @@ -"""Shared API client utilities for Prowler App tools.""" +"""Shared API client utilities for Prowler tools.""" import asyncio from datetime import datetime, timedelta diff --git a/mcp_server/prowler_mcp_server/prowler_app/utils/auth.py b/mcp_server/prowler_mcp_server/prowler_app/utils/auth.py index 72c06000df..eff5d3a117 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/utils/auth.py +++ b/mcp_server/prowler_mcp_server/prowler_app/utils/auth.py @@ -10,7 +10,7 @@ from prowler_mcp_server.lib.logger import logger class ProwlerAppAuth: - """Handles authentication for Prowler App API using API keys or JWT tokens.""" + """Handles authentication for Prowler API using API keys or JWT tokens.""" def __init__( self, @@ -18,19 +18,23 @@ class ProwlerAppAuth: base_url: str = os.getenv("API_BASE_URL", "https://api.prowler.com/api/v1"), ): self.base_url = base_url.rstrip("/") - logger.info(f"Using Prowler App API base URL: {self.base_url}") + logger.info(f"Using Prowler API base URL: {self.base_url}") self.mode = mode self.access_token: str | None = None self.api_key: str | None = None if mode == "stdio": # STDIO mode - self.api_key = os.getenv("PROWLER_APP_API_KEY") + # PROWLER_API_KEY is the current variable; PROWLER_APP_API_KEY is kept + # as a backward-compatible fallback so existing setups keep working. + self.api_key = os.getenv("PROWLER_API_KEY") or os.getenv( + "PROWLER_APP_API_KEY" + ) if not self.api_key: - raise ValueError("PROWLER_APP_API_KEY environment variable is required") + raise ValueError("PROWLER_API_KEY environment variable is required") if not self.api_key.startswith("pk_"): - raise ValueError("Prowler App API key format is incorrect") + raise ValueError("Prowler API key format is incorrect") def _parse_jwt(self, token: str) -> dict | None: """Parse JWT token and return payload diff --git a/mcp_server/prowler_mcp_server/prowler_app/utils/tool_loader.py b/mcp_server/prowler_mcp_server/prowler_app/utils/tool_loader.py index b85c13af35..3a00474b5f 100644 --- a/mcp_server/prowler_mcp_server/prowler_app/utils/tool_loader.py +++ b/mcp_server/prowler_mcp_server/prowler_app/utils/tool_loader.py @@ -13,18 +13,27 @@ from prowler_mcp_server.lib.logger import logger from prowler_mcp_server.prowler_app.tools.base import BaseTool -def load_all_tools(mcp: FastMCP) -> None: - """Auto-discover and load all BaseTool subclasses from the tools package. +def load_all_tools( + mcp: FastMCP, + tools_package: str = "prowler_mcp_server.prowler_app.tools", +) -> None: + """Auto-discover and load all BaseTool subclasses from a tools package. This function: - 1. Dynamically imports all Python modules in the tools package - 2. Discovers all concrete BaseTool subclasses + 1. Dynamically imports all Python modules in the given tools package + 2. Discovers all concrete BaseTool subclasses defined in that package 3. Instantiates each tool class 4. Registers all tools with the provided FastMCP instance + ``BaseTool.__subclasses__()`` returns every subclass in the process, so the + discovered classes are filtered by ``__module__`` prefix. This keeps sibling + sub-servers (e.g. ``prowler_app`` and ``prowler_cloud``) from cross-registering + each other's tools, regardless of import order. + Args: mcp: The FastMCP instance to register tools with - TOOLS_PACKAGE: The package path containing tool modules (default: prowler_mcp_server.prowler_app.tools) + tools_package: The package path containing tool modules + (default: prowler_mcp_server.prowler_app.tools) Example: from fastmcp import FastMCP @@ -33,7 +42,7 @@ def load_all_tools(mcp: FastMCP) -> None: app = FastMCP("prowler-app") load_all_tools(app) """ - TOOLS_PACKAGE = "prowler_mcp_server.prowler_app.tools" + TOOLS_PACKAGE = tools_package logger.info(f"Auto-discovering tools from package: {TOOLS_PACKAGE}") # Import the tools package @@ -59,11 +68,14 @@ def load_all_tools(mcp: FastMCP) -> None: except Exception as e: logger.error(f"Failed to import module {module_name}: {e}") - # Discover all concrete BaseTool subclasses + # Discover all concrete BaseTool subclasses defined in this package only. + # __subclasses__() is process-wide, so filter by module to avoid sibling + # sub-servers cross-registering each other's tools. concrete_tools = [ tool_class for tool_class in BaseTool.__subclasses__() if not getattr(tool_class, "__abstractmethods__", None) + and tool_class.__module__.startswith(TOOLS_PACKAGE) ] logger.info(f"Discovered {len(concrete_tools)} tool classes") diff --git a/mcp_server/prowler_mcp_server/server.py b/mcp_server/prowler_mcp_server/server.py index 7c85641dee..a46ca12672 100644 --- a/mcp_server/prowler_mcp_server/server.py +++ b/mcp_server/prowler_mcp_server/server.py @@ -19,15 +19,15 @@ def setup_main_server(): except Exception as e: logger.error(f"Failed to mount Prowler Hub server: {e}") - # Mount Prowler App tools with prowler_app_ namespace + # Mount core Prowler tools with prowler_ namespace try: - logger.info("Mounting Prowler App server...") + logger.info("Mounting Prowler tools server...") from prowler_mcp_server.prowler_app.server import app_mcp_server - prowler_mcp_server.mount(app_mcp_server, namespace="prowler_app") - logger.info("Successfully mounted Prowler App server") + prowler_mcp_server.mount(app_mcp_server, namespace="prowler") + logger.info("Successfully mounted Prowler tools server") except Exception as e: - logger.error(f"Failed to mount Prowler App server: {e}") + logger.error(f"Failed to mount Prowler tools server: {e}") # Mount Prowler Documentation tools with prowler_docs_ namespace try: diff --git a/mcp_server/pyproject.toml b/mcp_server/pyproject.toml index 63aefdf931..f27e08b743 100644 --- a/mcp_server/pyproject.toml +++ b/mcp_server/pyproject.toml @@ -19,11 +19,13 @@ description = "MCP server for Prowler ecosystem" name = "prowler-mcp" readme = "README.md" requires-python = ">=3.12" -version = "0.5.0" +version = "0.8.0" [project.scripts] prowler-mcp = "prowler_mcp_server.main:main" +[tool.pytest] + [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/mcp_server/uv.lock b/mcp_server/uv.lock index 3258767442..a9afbeafd7 100644 --- a/mcp_server/uv.lock +++ b/mcp_server/uv.lock @@ -676,7 +676,7 @@ wheels = [ [[package]] name = "prowler-mcp" -version = "0.5.0" +version = "0.8.0" source = { editable = "." } dependencies = [ { name = "fastmcp" }, diff --git a/skills/prowler-mcp/SKILL.md b/skills/prowler-mcp/SKILL.md index af3c597771..704acf8553 100644 --- a/skills/prowler-mcp/SKILL.md +++ b/skills/prowler-mcp/SKILL.md @@ -19,7 +19,7 @@ The Prowler MCP Server uses three sub-servers with prefixed namespacing: | Sub-Server | Prefix | Auth | Purpose | |------------|--------|------|---------| -| Prowler App | `prowler_app_*` | Required | Cloud management tools | +| 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 | @@ -27,7 +27,7 @@ For complete architecture, patterns, and examples, see [docs/developer-guide/mcp --- -## Critical Rules (Prowler App Only) +## Critical Rules (Prowler Tools Only) ### Tool Implementation @@ -56,7 +56,7 @@ Use `@mcp.tool()` decorator directly—no BaseTool or models required. --- -## Quick Reference: New Prowler App Tool +## Quick Reference: New Prowler Tool 1. Create tool class in `prowler_app/tools/` extending `BaseTool` 2. Create models in `prowler_app/models/` using `MinimalSerializerMixin` @@ -64,7 +64,7 @@ Use `@mcp.tool()` decorator directly—no BaseTool or models required. --- -## QA Checklist (Prowler App) +## QA Checklist (Prowler Tools) - [ ] Tool docstrings describe LLM-relevant behavior - [ ] Models use `MinimalSerializerMixin` diff --git a/ui/app/(prowler)/lighthouse/_components/chat/message-bubble.test.tsx b/ui/app/(prowler)/lighthouse/_components/chat/message-bubble.test.tsx index 8b6855392f..ab11429774 100644 --- a/ui/app/(prowler)/lighthouse/_components/chat/message-bubble.test.tsx +++ b/ui/app/(prowler)/lighthouse/_components/chat/message-bubble.test.tsx @@ -51,7 +51,7 @@ describe("MessageBubble", () => { // Given const orderedMessage = buildAssistantMessage([ textPart("part-1", "Voy a buscar los findings por severidad"), - toolCallPart("part-2", "prowler_app_search_security_findings"), + toolCallPart("part-2", "prowler_search_security_findings"), textPart("part-3", "Ahora voy a buscar en los criticos"), ]); diff --git a/ui/app/(prowler)/lighthouse/_lib/event-reducer.test.ts b/ui/app/(prowler)/lighthouse/_lib/event-reducer.test.ts index 4f284a5656..89c62ef8bc 100644 --- a/ui/app/(prowler)/lighthouse/_lib/event-reducer.test.ts +++ b/ui/app/(prowler)/lighthouse/_lib/event-reducer.test.ts @@ -62,7 +62,7 @@ describe("event-reducer", () => { state = reduceLighthouseV2Event(state, { type: "tool_call.start", toolCallId: "tool-1", - toolName: "prowler_app_search_security_findings", + toolName: "prowler_search_security_findings", }); state = reduceLighthouseV2Event(state, { type: "tool_call.end", @@ -84,7 +84,7 @@ describe("event-reducer", () => { { id: "tool-1", type: "tool_call", - name: "prowler_app_search_security_findings", + name: "prowler_search_security_findings", status: "completed", outcome: "success", }, diff --git a/ui/app/(prowler)/lighthouse/_lib/tool-calls.test.ts b/ui/app/(prowler)/lighthouse/_lib/tool-calls.test.ts index 570e7cc597..5ccc2b4129 100644 --- a/ui/app/(prowler)/lighthouse/_lib/tool-calls.test.ts +++ b/ui/app/(prowler)/lighthouse/_lib/tool-calls.test.ts @@ -11,7 +11,7 @@ describe("getToolCallContent", () => { // Given const content = { tool_call_id: "call_1", - tool_name: "prowler_app_search_security_findings", + tool_name: "prowler_search_security_findings", arguments: { severity: "high" }, result: { count: 3 }, outcome: "success", @@ -23,7 +23,7 @@ describe("getToolCallContent", () => { // Then expect(parsed).toEqual({ toolCallId: "call_1", - toolName: "prowler_app_search_security_findings", + toolName: "prowler_search_security_findings", arguments: { severity: "high" }, result: { count: 3 }, outcome: "success", @@ -53,12 +53,18 @@ describe("getToolCallContent", () => { describe("formatToolName", () => { it("should strip the prowler prefix and title-case", () => { - expect(formatToolName("prowler_app_search_security_findings")).toBe( + expect(formatToolName("prowler_search_security_findings")).toBe( "Search security findings", ); expect(formatToolName("prowler_hub_list_checks")).toBe("List checks"); }); + it("should still strip the legacy prowler_app_ prefix", () => { + expect(formatToolName("prowler_app_search_security_findings")).toBe( + "Search security findings", + ); + }); + it("should humanize prefix-less tools", () => { expect(formatToolName("search_tools")).toBe("Search tools"); }); diff --git a/ui/app/(prowler)/lighthouse/_lib/tool-calls.ts b/ui/app/(prowler)/lighthouse/_lib/tool-calls.ts index 46034102d5..88e478089b 100644 --- a/ui/app/(prowler)/lighthouse/_lib/tool-calls.ts +++ b/ui/app/(prowler)/lighthouse/_lib/tool-calls.ts @@ -1,11 +1,14 @@ import type { LighthouseV2ToolCallContent } from "@/app/(prowler)/lighthouse/_types"; // Prefixes shared by the MCP-sourced tools; stripped for display so a name like -// `prowler_app_search_security_findings` reads as "Search security findings". +// `prowler_search_security_findings` reads as "Search security findings". The +// specific prefixes are listed before the bare `prowler_` catch-all so Hub, Docs, +// and legacy `prowler_app_` records match first and render cleanly. const TOOL_NAME_PREFIXES = [ - "prowler_app_", "prowler_hub_", "prowler_docs_", + "prowler_app_", + "prowler_", ] as const; // Reads the snake_case TOOL_CALL blob the backend persists and normalizes it to diff --git a/ui/changelog.d/prowler-tools-namespace.changed.md b/ui/changelog.d/prowler-tools-namespace.changed.md new file mode 100644 index 0000000000..f1affd1715 --- /dev/null +++ b/ui/changelog.d/prowler-tools-namespace.changed.md @@ -0,0 +1 @@ +Core Prowler tools in Lighthouse use the `prowler_*` namespace while preserving legacy `prowler_app_*` compatibility diff --git a/ui/lib/lighthouse-v1/allowed-tools.test.ts b/ui/lib/lighthouse-v1/allowed-tools.test.ts new file mode 100644 index 0000000000..7812a72282 --- /dev/null +++ b/ui/lib/lighthouse-v1/allowed-tools.test.ts @@ -0,0 +1,38 @@ +import { describe, expect, it } from "vitest"; + +import { isAllowedTool } from "./allowed-tools"; + +describe("isAllowedTool", () => { + it("should accept a whitelisted tool using the current namespace", () => { + // Given + const toolName = "prowler_search_security_findings"; + + // When + const result = isAllowedTool(toolName); + + // Then + expect(result).toBe(true); + }); + + it("should accept a whitelisted tool using the legacy namespace", () => { + // Given + const toolName = "prowler_app_search_security_findings"; + + // When + const result = isAllowedTool(toolName); + + // Then + expect(result).toBe(true); + }); + + it("should reject a non-whitelisted tool after normalizing the legacy namespace", () => { + // Given + const toolName = "prowler_app_delete_provider"; + + // When + const result = isAllowedTool(toolName); + + // Then + expect(result).toBe(false); + }); +}); diff --git a/ui/lib/lighthouse-v1/allowed-tools.ts b/ui/lib/lighthouse-v1/allowed-tools.ts new file mode 100644 index 0000000000..ebce1e40a4 --- /dev/null +++ b/ui/lib/lighthouse-v1/allowed-tools.ts @@ -0,0 +1,67 @@ +/** + * Tools explicitly allowed for the LLM to list and execute. + * Follows the principle of least privilege - only these tools are accessible. + * All other tools are blocked by default. + */ +const ALLOWED_TOOLS = new Set([ + // === Prowler Hub Tools - read-only === + "prowler_hub_list_checks", + "prowler_hub_semantic_search_checks", + "prowler_hub_get_check_details", + "prowler_hub_get_check_code", + "prowler_hub_get_check_fixer", + "prowler_hub_list_compliances", + "prowler_hub_semantic_search_compliances", + "prowler_hub_get_compliance_details", + "prowler_hub_list_providers", + "prowler_hub_get_provider_services", + // === Prowler Docs Tools - read-only === + "prowler_docs_search", + "prowler_docs_get_document", + // === Prowler platform Tools - read-only === + // Findings + "prowler_search_security_findings", + "prowler_get_finding_details", + "prowler_get_findings_overview", + // Finding Groups + "prowler_list_finding_groups", + "prowler_get_finding_group_details", + "prowler_list_finding_group_resources", + // Providers + "prowler_search_providers", + // Scans + "prowler_list_scans", + "prowler_get_scan", + // Muting + "prowler_get_mutelist", + "prowler_list_mute_rules", + "prowler_get_mute_rule", + // Compliance + "prowler_get_compliance_overview", + "prowler_get_compliance_framework_state_details", + // Resources + "prowler_list_resources", + "prowler_get_resource", + "prowler_get_resource_events", + "prowler_get_resources_overview", + // Attack Paths + "prowler_list_attack_paths_queries", + "prowler_list_attack_paths_scans", + "prowler_run_attack_paths_query", + "prowler_get_attack_paths_cartography_schema", +]); + +/** + * Check if a tool is allowed for LLM access. + * Returns true only if the tool is explicitly in the whitelist. + * + * The Prowler platform tools were renamed from the `prowler_app_` prefix to + * `prowler_`. The legacy prefix is normalized here so tools served by + * an older MCP server (or a mismatched rollout) still resolve. + */ +export function isAllowedTool(toolName: string): boolean { + const normalized = toolName.startsWith("prowler_app_") + ? toolName.replace(/^prowler_app_/, "prowler_") + : toolName; + return ALLOWED_TOOLS.has(normalized); +} diff --git a/ui/lib/lighthouse-v1/mcp-client.ts b/ui/lib/lighthouse-v1/mcp-client.ts index cbce9351a4..588ff24ac8 100644 --- a/ui/lib/lighthouse-v1/mcp-client.ts +++ b/ui/lib/lighthouse-v1/mcp-client.ts @@ -77,7 +77,7 @@ class MCPClientManager { } /** - * Injects auth headers for Prowler App tools + * Injects auth headers for the core Prowler tools */ private handleBeforeToolCall = ({ name, @@ -87,9 +87,15 @@ class MCPClientManager { name: string; args?: unknown; }) => { - // Only inject auth for Prowler App tools (user-specific data) - // Prowler Hub and Prowler Docs tools don't require authentication - if (!name.startsWith("prowler_app_")) { + // Only inject auth for the core Prowler tools (user-specific data), served + // under the bare `prowler_` prefix. Prowler Hub (`prowler_hub_`) and Prowler + // Docs (`prowler_docs_`) tools are public and need no authentication. The + // legacy `prowler_app_` prefix also starts with `prowler_`, so it is covered. + const needsAuth = + name.startsWith("prowler_") && + !name.startsWith("prowler_hub_") && + !name.startsWith("prowler_docs_"); + if (!needsAuth) { return { args }; } diff --git a/ui/lib/lighthouse-v1/skills/definitions/attack-path-custom-query.ts b/ui/lib/lighthouse-v1/skills/definitions/attack-path-custom-query.ts index 7bb2ed08a1..15a298fd2c 100644 --- a/ui/lib/lighthouse-v1/skills/definitions/attack-path-custom-query.ts +++ b/ui/lib/lighthouse-v1/skills/definitions/attack-path-custom-query.ts @@ -15,9 +15,9 @@ This skill provides openCypher syntax guidance and Cartography schema knowledge Follow these steps when the user asks you to write a custom openCypher query: -1. **Find a completed scan**: Use \`prowler_app_list_attack_paths_scans\` (filter by \`state=['completed']\`) to find a scan for the user's provider. You need the \`scan_id\` for the next step. +1. **Find a completed scan**: Use \`prowler_list_attack_paths_scans\` (filter by \`state=['completed']\`) to find a scan for the user's provider. You need the \`scan_id\` for the next step. -2. **Fetch the Cartography schema**: Use \`prowler_app_get_attack_paths_cartography_schema\` with the \`scan_id\`. This returns the full schema markdown with all node labels, relationships, and properties for the scan's provider and Cartography version. If this tool fails, use the Cartography Schema Reference section below as a fallback (AWS only). +2. **Fetch the Cartography schema**: Use \`prowler_get_attack_paths_cartography_schema\` with the \`scan_id\`. This returns the full schema markdown with all node labels, relationships, and properties for the scan's provider and Cartography version. If this tool fails, use the Cartography Schema Reference section below as a fallback (AWS only). 3. **Analyze the schema**: From \`schema_content\`, identify the node labels, properties, and relationships relevant to the user's request. Cross-reference with the Common openCypher Patterns section below. diff --git a/ui/lib/lighthouse-v1/system-prompt.ts b/ui/lib/lighthouse-v1/system-prompt.ts index c508e42ddd..317aabf7ef 100644 --- a/ui/lib/lighthouse-v1/system-prompt.ts +++ b/ui/lib/lighthouse-v1/system-prompt.ts @@ -59,7 +59,7 @@ You have access to THREE meta-tools to interact with the available tools and ski - Use empty object {} for tools with no parameters - You must always provide the toolName and toolInput keys in the JSON object - Example: execute_tool({ "toolName": "prowler_hub_list_providers", "toolInput": {} }) - - Example: execute_tool({ "toolName": "prowler_app_search_security_findings", "toolInput": { "severity": ["critical", "high"], "status": ["FAIL"] } }) + - Example: execute_tool({ "toolName": "prowler_search_security_findings", "toolInput": { "severity": ["critical", "high"], "status": ["FAIL"] } }) 3. **load_skill** - Load specialized instructions for a complex task - Use when you identify a matching skill from the skill catalog below diff --git a/ui/lib/lighthouse-v1/tools/meta-tool.ts b/ui/lib/lighthouse-v1/tools/meta-tool.ts index 4ea4e39e74..f5c2cf7f75 100644 --- a/ui/lib/lighthouse-v1/tools/meta-tool.ts +++ b/ui/lib/lighthouse-v1/tools/meta-tool.ts @@ -5,8 +5,8 @@ import { tool } from "@langchain/core/tools"; import { addBreadcrumb, captureException } from "@sentry/nextjs"; import { z } from "zod"; +import { isAllowedTool } from "@/lib/lighthouse-v1/allowed-tools"; import { getMCPTools, isMCPAvailable } from "@/lib/lighthouse-v1/mcp-client"; -import { isAllowedTool } from "@/lib/lighthouse-v1/workflow"; /** Input type for describe_tool */ interface DescribeToolInput { @@ -95,7 +95,7 @@ Use this to understand what parameters a tool requires before executing it. Tool names are listed in your system prompt - use the exact name. You must always provide the toolName key in the JSON object. -Example: describe_tool({ "toolName": "prowler_app_search_security_findings" }) +Example: describe_tool({ "toolName": "prowler_search_security_findings" }) Returns: - Full parameter schema with types and descriptions @@ -203,7 +203,7 @@ export const executeTool = tool( Provide the exact tool name and its input parameters as specified in the tool's schema. You must always provide the toolName and toolInput keys in the JSON object. -Example: execute_tool({ "toolName": "prowler_app_search_security_findings", "toolInput": {} }) +Example: execute_tool({ "toolName": "prowler_search_security_findings", "toolInput": {} }) All input to the tool must be provided in the toolInput key as a JSON object. Example: execute_tool({ "toolName": "prowler_hub_list_compliances", "toolInput": { "provider": ["aws"] } }) diff --git a/ui/lib/lighthouse-v1/workflow.ts b/ui/lib/lighthouse-v1/workflow.ts index 1c31b7f58d..77a6f4ad76 100644 --- a/ui/lib/lighthouse-v1/workflow.ts +++ b/ui/lib/lighthouse-v1/workflow.ts @@ -4,6 +4,7 @@ import { getProviderCredentials, getTenantConfig, } from "@/actions/lighthouse-v1/lighthouse"; +import { isAllowedTool } from "@/lib/lighthouse-v1/allowed-tools"; import { TOOLS_UNAVAILABLE_MESSAGE } from "@/lib/lighthouse-v1/constants"; import type { ProviderType } from "@/lib/lighthouse-v1/llm-factory"; import { createLLM } from "@/lib/lighthouse-v1/llm-factory"; @@ -42,67 +43,6 @@ function truncateDescription(desc: string | undefined, maxLen: number): string { return cleaned.substring(0, maxLen) + "..."; } -/** - * Tools explicitly allowed for the LLM to list and execute. - * Follows the principle of least privilege - only these tools are accessible. - * All other tools are blocked by default. - */ -const ALLOWED_TOOLS = new Set([ - // === Prowler Hub Tools - read-only === - "prowler_hub_list_checks", - "prowler_hub_semantic_search_checks", - "prowler_hub_get_check_details", - "prowler_hub_get_check_code", - "prowler_hub_get_check_fixer", - "prowler_hub_list_compliances", - "prowler_hub_semantic_search_compliances", - "prowler_hub_get_compliance_details", - "prowler_hub_list_providers", - "prowler_hub_get_provider_services", - // === Prowler Docs Tools - read-only === - "prowler_docs_search", - "prowler_docs_get_document", - // === Prowler App Tools - read-only === - // Findings - "prowler_app_search_security_findings", - "prowler_app_get_finding_details", - "prowler_app_get_findings_overview", - // Finding Groups - "prowler_app_list_finding_groups", - "prowler_app_get_finding_group_details", - "prowler_app_list_finding_group_resources", - // Providers - "prowler_app_search_providers", - // Scans - "prowler_app_list_scans", - "prowler_app_get_scan", - // Muting - "prowler_app_get_mutelist", - "prowler_app_list_mute_rules", - "prowler_app_get_mute_rule", - // Compliance - "prowler_app_get_compliance_overview", - "prowler_app_get_compliance_framework_state_details", - // Resources - "prowler_app_list_resources", - "prowler_app_get_resource", - "prowler_app_get_resource_events", - "prowler_app_get_resources_overview", - // Attack Paths - "prowler_app_list_attack_paths_queries", - "prowler_app_list_attack_paths_scans", - "prowler_app_run_attack_paths_query", - "prowler_app_get_attack_paths_cartography_schema", -]); - -/** - * Check if a tool is allowed for LLM access. - * Returns true only if the tool is explicitly in the whitelist. - */ -export function isAllowedTool(toolName: string): boolean { - return ALLOWED_TOOLS.has(toolName); -} - /** * Generate dynamic tool listing from MCP tools. * Only includes tools that are explicitly whitelisted.