Model Context Protocol server for Velociraptor DFIR integration, enabling LLM-based interaction with Velociraptor incident response and digital forensics platform
The server demonstrates solid foundational quality with 10 well-named tools, explicit schemas for all parameters, and clear descriptions. Naming convention is strong (verb_noun pattern: AuthenticateTool, GetAgentInfo, RunVQLQueryTool, etc.). All tools have non-empty descriptions (range: 139-359 chars, well within the 10-1024 baseline). All parameters include type definitions and descriptions. However, there are meaningful gaps: (1) Output schemas are not documented, no explicit definition of what these tools return, their field types, or structure. This forces LLMs to infer response shapes. (2) Error handling is not visible in provided code; no recovery guidance, retryability classification, or actionable error messages evident. (3) Parameters like 'parameters' (CollectArtifact) and 'fields' (GetCollectionResults) use free-form strings instead of structured objects or enums, reducing safety. (4) Some tools like ListLinuxArtifactNames and ListWindowsArtifactNames have identical structure (no input params) but lack discovery context, why call one vs the other? (5) Security considerations are not documented (no mention of permissions, audit trails, or scope declarations). The architecture is sound and the naming is exemplary, but LLM usability suffers from missing return-type contracts and error guidance.
Initialize and test connection to Velociraptor server. This tool requires no parameters and will establish a gRPC connection for subsequent API calls using the api.config.yaml file.
Initiate collection of a Velociraptor artifact from a specified client. Returns a Flow ID that can be used to retrieve results later once collection completes.
Get detailed information about a specific Velociraptor artifact including description, parameters, and how to use it.
Retrieve detailed information about a Velociraptor client by hostname or FQDN. This tool searches for a client using the provided hostname and returns comprehensive client details including ID, OS information, agent version, and connection status.
Retrieve results from a completed artifact collection. Polls the Velociraptor server for collection status and returns the results once available.
List all available Linux artifact names from the Velociraptor server without full artifact definitions.
Output schemas are not documented. Tools have Pydantic models for input parameters but no visible return-type definitions or field documentation. LLMs cannot infer what fields to expect from responses, forcing them to guess at response structure and wasting tokens on parsing.
Error handling is absent or not visible. No evidence of recovery guidance ('if client_id not found, try GetAgentInfo first'), error classification (retryable vs user-fixable vs fatal), or actionable error messages. This leaves LLMs unable to self-correct or plan recovery.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 36 | - | v1 |
List all available Linux artifacts with their full definitions, parameters, and descriptions from the Velociraptor server.
List all available Windows artifact names from the Velociraptor server without full artifact definitions.
List all available Windows artifacts with their full definitions, parameters, and descriptions from the Velociraptor server.
Execute a VQL (Velociraptor Query Language) query on the Velociraptor server. This tool allows you to run custom VQL queries to retrieve information about clients, artifacts, hunts, or any other Velociraptor data. Requires 'vql' parameter with the query string.
Free-form string parameters reduce type safety. 'parameters' in CollectArtifact and 'fields' in GetCollectionResults accept arbitrary strings (CSV format) with no enum or validation. Hallucinated parameter names or malformed CSV will silently fail. Use structured objects or validated enums instead.
ListLinuxArtifactNames vs ListLinuxArtifacts and ListWindowsArtifactNames vs ListWindowsArtifacts have identical signatures but complementary purposes. Descriptions do not explain when to call names-only variant vs full-definitions variant. An LLM must guess; add discovery guidance.
No security documentation. Tool descriptions do not declare what permissions they require (e.g., 'read:artifacts', 'write:collections'), whether they are read-only (most are) or can modify state, or what audit trails are in place. Security annotations missing.
Tool naming inconsistency: 'AuthenticateTool' ends with 'Tool' suffix, while all others do not (GetAgentInfo, RunVQLQueryTool inconsistently uses suffix too). Standardize to either all without suffix or all with. Inconsistent naming increases LLM confusion.