Unified project build interface for .csproj, .vcxproj, .wixproj, and .sln projects with Windows-to-Linux filesystem path mapping support
The server implements 7 tools with generally clear naming and good schema coverage, but shows gaps in parameter descriptions, error handling guidance, and output documentation. Tool names are verb-first and action-oriented (GetBuildCapabilities, ResolveProjectPath, BuildProject, etc.), which is appropriate. Input schemas are explicitly defined with types for all parameters. However, parameter descriptions in the code are often brief (e.g., 'Build configuration (default: Debug)' lacks detail on allowed values), and there is no visible documentation of output field schemas beyond the C# type definitions. Error handling is present but does not provide recovery guidance, the code validates inputs and returns error flags, but does not tell LLMs what to do next (e.g., 'try with a different path'). The composition is sound: each tool has a single responsibility, and output includes chaining IDs (projectPath, resolvedWindowsProjectPath, etc.). Security is adequate: no secrets appear as parameters, and path validation is performed. Overall, this is a functional but not exceptional definition quality, it meets baseline expectations but lacks the polish of production-grade tools.
Main build entrypoint for .csproj, .vcxproj, .wixproj, and .sln using a unified request shape.
Removes build outputs and artifacts.
Returns MSBuild server capabilities, including configured Windows-to-Linux filesystem mappings used for remote builds.
Publishes the project for deployment.
Cleans and then builds the project in a single operation.
Resolves Linux or Windows project path using configured mappings and reports both Linux and Windows resolved paths.
Runs restore for project dependencies when relevant (.NET/NuGet scenarios).
Parameter descriptions are minimal and do not explain constraints, allowed values, or expected formats. E.g., 'configuration' is described as 'Build configuration (default: Debug)' with no enumeration of allowed values (Debug, Release, etc.) or explanation of what a configuration means in the MSBuild context.
No enums declared for parameters that accept a known set of values. 'buildMode' accepts 'standard' or 'smart', 'restore' accepts 'auto|always|never', and 'target' accepts 'Build|Rebuild|Clean', but these are documented only in the descriptions as strings, not as formal enum constraints. LLMs cannot reliably discover valid options from text alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
Output schemas are not explicitly documented in the source. Tools return C# types (BuildResult, PathResolveResult, BuildCapabilities) with multiple fields (Success, Error, ErrorCode, ExitCode, TimedOut, StandardOutput, StandardError, DurationMs, OutputDirectory, PrimaryOutput, Artifacts, etc.), but there is no visible schema documentation describing what each field means or when LLMs should expect them. This forces LLMs to infer output structure from examples.
Error responses do not provide recovery guidance. When validation fails (e.g., unsupported file extension, missing projectPath), the code returns a PathResolveResult with Success=false and an Error message, but does not suggest what the LLM should do next. E.g., 'Unsupported file extension' does not tell the LLM to try a different project type or check the file name.
The 'target' parameter is not formally declared as an enum in the schema. The description mentions 'Build/Rebuild/Clean, default: Build' as examples, but the schema shows type='string' with no enum constraint. This invites the LLM to pass invalid values like 'compile' or 'package'.
Platform parameter defaults are complex and context-dependent ('Any CPU for .csproj, x64 for .vcxproj/.wixproj/.sln'), but this logic is not exposed in the tool definitions. LLMs cannot predict what platform will be used if they omit the parameter, forcing them to always provide an explicit value or risk unexpected behavior.
No explicit documentation of which parameters are mutually exclusive or dependent. E.g., does 'restore' apply to all project types, or only .csproj? Does 'platform' apply to .sln? These undocumented dependencies can cause silent misuse.