MCP server for analyzing, managing, and querying technical debt in repositories using semantic analysis
Tech Debt Master has clear tool naming, decent descriptions, and visible schemas. All 4 tools are properly registered with @McpServerTool and @Description attributes. However, there are significant gaps in error guidance, parameter constraints, and output documentation that prevent a higher score. Tools use domain-specific naming (tdm-* prefix) which is clear but unconventional for verb_noun patterns. Descriptions range from adequate (140-180 chars) to good, but lack actionable error recovery guidance and dependency hints. Parameter schemas are present and typed, but enums and ranges are missing for constrained fields (severity, tags, pagination). Output schemas are not formally documented in the visible code, responses are return-typed classes but field structures are not described in tool metadata.
Get a specific technical debt item by its ID in the format 'filePath:id' and return its markdown description as an MCP resource
Get a list of technical debt issues across all files, with optional filtering by pattern, severity, and tags.
Remove a specific technical debt item by its ID in the format 'filePath:id'. This will delete both the debt item metadata from analysis and its associated content file.
Get comprehensive technical debt statistics including tag distribution, severity distribution, and file analysis counts.
No formal enum constraints on constrained parameters (severity, tags). Descriptions mention valid values as prose ('Low, Medium, High, Critical') rather than JSON Schema enums, forcing LLMs to infer or guess valid options.
Output schemas are not documented in tool metadata. Return types (RemoveDebtResponse, list of debt items, statistics object) exist as C# classes but are not declared as JSON Schema in the tool definition. LLMs cannot infer field names, types, or structure from class definitions alone.
Pagination not fully specified. tdm-list-items accepts page (1-based) and pageSize (default 5) but lacks documented total count, next_cursor, or has_more field in response. LLMs cannot determine if more results exist without explicit pagination metadata.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 57 | <=2025-11-25 | v2 |
| 2026-03-09 | C | 63 | - | v1 |
Error handling lacks recovery guidance. tdm-remove-item catches FileNotFoundException, UnauthorizedAccessException, IOException, and InvalidOperationException but returns generic error messages like 'Failed to remove debt item...'. No actionable next steps provided to agent.
Destructive operation (tdm-remove-item) lacks confirmation or dry-run support. Agents could accidentally delete debt items without user review. No pattern mentioned for prevent accidental deletion.
Regex parameters (includePattern, excludePattern) have no format validation or documentation of regex flavor (C# .NET Regex). Invalid regex inputs could crash or hang the server.
debtId parameter format ('filePath:id') is documented but has no regex pattern or validation rule in schema. LLMs may pass malformed IDs like 'src/MyClass.cs' (missing :id) or ':DEBT001' (missing filePath).
Tool descriptions do not explain when to use one tool vs. another. For example, when should an agent call tdm-list-items with filters vs. tdm-get-item (direct lookup)? Dependency hints and use-case guidance are missing.