Skip to main content
Glama
wagonbomb

Megaraptor MCP

by wagonbomb

list_deployments

Retrieve all Velociraptor deployments with filtering options to view current status and manage forensic investigation workflows.

Instructions

List all managed Velociraptor deployments.

Args: profile_filter: Filter by profile name ('rapid', 'standard', 'enterprise') include_destroyed: Include destroyed deployments

Returns: List of deployments with their current status.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
profile_filterNo
include_destroyedNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • Implementation of the list_deployments MCP tool. It gathers deployments from Docker and Binary deployers and formats the output as JSON within TextContent.
    @mcp.tool()
    async def list_deployments(
        profile_filter: Optional[str] = None,
        include_destroyed: bool = False,
    ) -> list[TextContent]:
        """List all managed Velociraptor deployments.
    
        Args:
            profile_filter: Filter by profile name ('rapid', 'standard', 'enterprise')
            include_destroyed: Include destroyed deployments
    
        Returns:
            List of deployments with their current status.
        """
        try:
            from ..deployment.deployers import DockerDeployer, BinaryDeployer
            from ..deployment.profiles import DeploymentState
    
            all_deployments = []
    
            # Get Docker deployments
            try:
                docker_deployer = DockerDeployer()
                deployments = docker_deployer.list_deployments()
                all_deployments.extend(deployments)
            except Exception:
                pass
    
            # Get binary deployments
            try:
                binary_deployer = BinaryDeployer()
                deployments = binary_deployer.list_deployments()
                all_deployments.extend(deployments)
            except Exception:
                pass
    
            # Filter results
            filtered = []
            for d in all_deployments:
                if profile_filter and d.profile != profile_filter:
                    continue
                if not include_destroyed and d.state == DeploymentState.DESTROYED:
                    continue
                filtered.append(d.to_dict())
    
            return [TextContent(
                type="text",
                text=json.dumps({
                    "count": len(filtered),
                    "deployments": filtered,
                }, indent=2, default=str)
            )]
    
        except ImportError as e:
            return [TextContent(
                type="text",
                text=json.dumps({
                    "error": f"Missing dependency: {str(e)}",
                    "hint": "Install required packages with: pip install megaraptor-mcp[deployment]"
                }, indent=2)
            )]
    
        except Exception:
            # Generic errors - don't expose internals
            return [TextContent(
                type="text",
                text=json.dumps({
                    "error": "Failed to list deployments",
                    "hint": "Check deployment infrastructure is available"
                }, indent=2)
            )]
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that destroyed deployments are excluded by default (via the 'include_destroyed' parameter description) and mentions return values include 'current status'. However, it lacks information about read-only safety, pagination behavior, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description uses a clean Args/Returns structure that efficiently organizes information. It is appropriately sized at three sentences plus parameter specifications, with the purpose statement front-loaded and no redundant filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only 2 optional parameters and an output schema exists (per context signals), the description adequately covers inputs and provides a high-level summary of returns. However, it lacks guidance on filtering behavior and doesn't mention if results are paginated or how to handle large deployment lists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, but the description excellently compensates by documenting both parameters. It specifies that 'profile_filter' accepts specific values ('rapid', 'standard', 'enterprise') not present in the schema's anyOf definition, and clarifies 'include_destroyed' is a boolean toggle for destroyed deployment visibility.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'List[s] all managed Velociraptor deployments' with a specific verb and resource. However, it does not explicitly distinguish from sibling tool 'get_deployment_status' (which retrieves a specific deployment's status rather than listing all).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_deployment_status' or 'validate_deployment'. There are no prerequisites, conditions, or exclusion criteria mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wagonbomb/megaraptor-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server