mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-23 20:42:02 +00:00
cf840588c7
Co-authored-by: Alan Buscaglia <gentlemanprogramming@gmail.com>
65 lines
2.3 KiB
Python
65 lines
2.3 KiB
Python
from fastmcp import FastMCP
|
|
from starlette.responses import JSONResponse
|
|
|
|
from prowler_mcp_server import __version__
|
|
from prowler_mcp_server.lib.logger import logger
|
|
|
|
prowler_mcp_server = FastMCP("prowler-mcp-server")
|
|
|
|
|
|
def setup_main_server():
|
|
"""Set up the main Prowler MCP server with all available integrations."""
|
|
# Mount Prowler Hub tools with prowler_hub_ namespace
|
|
try:
|
|
logger.info("Mounting Prowler Hub server...")
|
|
from prowler_mcp_server.prowler_hub.server import hub_mcp_server
|
|
|
|
prowler_mcp_server.mount(hub_mcp_server, namespace="prowler_hub")
|
|
logger.info("Successfully mounted Prowler Hub server")
|
|
except Exception as e:
|
|
logger.error(f"Failed to mount Prowler Hub server: {e}")
|
|
|
|
# Mount core Prowler tools with prowler_ namespace
|
|
try:
|
|
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")
|
|
logger.info("Successfully mounted Prowler tools server")
|
|
except Exception as e:
|
|
logger.error(f"Failed to mount Prowler tools server: {e}")
|
|
|
|
# Mount Prowler Documentation tools with prowler_docs_ namespace
|
|
try:
|
|
logger.info("Mounting Prowler Documentation server...")
|
|
from prowler_mcp_server.prowler_documentation.server import docs_mcp_server
|
|
|
|
prowler_mcp_server.mount(docs_mcp_server, namespace="prowler_docs")
|
|
logger.info("Successfully mounted Prowler Documentation server")
|
|
except Exception as e:
|
|
logger.error(f"Failed to mount Prowler Documentation server: {e}")
|
|
|
|
|
|
# Response follows the IETF Health Check Response Format
|
|
# (draft-inadarei-api-health-check-06). `version` is the contract version of
|
|
# this endpoint; `releaseId` is the package build version.
|
|
@prowler_mcp_server.custom_route("/health", methods=["GET"])
|
|
async def health_check(_request) -> JSONResponse:
|
|
"""Health check endpoint."""
|
|
return JSONResponse(
|
|
{
|
|
"status": "pass",
|
|
"version": "1",
|
|
"releaseId": __version__,
|
|
"serviceId": "prowler-mcp-server",
|
|
"description": "Prowler MCP Server",
|
|
},
|
|
media_type="application/health+json",
|
|
headers={"Cache-Control": "no-store"},
|
|
)
|
|
|
|
|
|
setup_main_server()
|
|
|
|
app = prowler_mcp_server.http_app()
|