MCP Server for analyzing technical debt across multiple programming languages
Tech Debt MCP demonstrates solid definition quality with well-structured schemas, consistent naming conventions, and comprehensive parameter descriptions. All 16 tools follow verb_noun naming (analyze_*, get_*, list_*, add_*, remove_, etc.). Input schemas are fully defined with proper JSON Schema types, enums where appropriate, and descriptions for all parameters. However, there are gaps in output schema documentation, inconsistent error guidance, and some tools lack explicit recovery instructions. The server shows maturity in parameter validation (e.g., minLength/maxLength on 'code' param in execute_custom_rules, enum constraints on severity/category), but output shapes are not formally documented in the source, requiring LLMs to infer structures. Tool descriptions average ~100-150 chars (within baseline range), and all critical parameters have descriptions. Composition is strong: tools are narrowly scoped (add_custom_rule vs remove_custom_rule vs list_session_custom_rules vs execute_custom_rules), and tool chains appear well-designed (validate_custom_pattern → add_custom_rule). Security is appropriately simple (read-only analysis tools, no credentials in params). Main weakness: output schema documentation is missing from the tool definitions themselves.
Add a custom pattern-based tech debt rule.
Analyze a single file for technical debt issues.
Analyze an entire project for technical debt. Scans all supported files and returns a comprehensive report with issues, metrics, and recommendations.
Analyze project dependencies across multiple package managers.
Execute all custom rules against code or a file.
Get a quick summary of technical debt in a project.
Get all issues of a specific category.
Output schemas are not documented in tool definitions. LLMs cannot plan downstream operations or extract required fields because return types are implicit rather than formal.
Error handling guidance is absent. Tools do not document what errors may occur, error codes, or how the LLM should recover. For example, analyze_project could fail if path is invalid, file permission denied, or unsupported language; no guidance is provided.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get all issues of a specific severity level.
Get prioritized recommendations for addressing technical debt.
Get SQALE technical debt metrics including remediation time, debt ratio, and rating.
Generate an offline dependency report listing all project dependencies for vulnerability review. Note: actual CVE lookups require Phase 2b online integration.
List custom rules registered in this server session via add_custom_rule. Does NOT include customPatterns declared in .techdebtrc.json (those run inside analyze_project via AnalysisEngine but are not surfaced here). Renamed from list_custom_rules (TEC-51) for clarity; the old name is no longer registered.
List all programming languages supported by the analyzer.
Remove a custom rule by ID.
Validate a .techdebtrc.json configuration file for syntax and schema correctness.
Validate a custom pattern before adding it as a rule.
Tool list_session_custom_rules description is overly verbose and technical (mentions RFC/customPatterns/AnalysisEngine/TEC-51), making it harder for LLMs to grasp the core purpose. Should state: 'List custom rules added in this session via add_custom_rule. Returns rule ID, pattern, message, severity, and category.'
No result limits enforced or documented. analyze_project, get_issues_by_severity, and get_issues_by_category could return hundreds of items, bloating the context window. Should cap results at 50 and offer pagination via next_cursor or page parameters.
Parameter maxFiles (analyze_project) is defined with minimum: 1 but no maximum specified. Should include maximum (e.g., 10000) to prevent resource exhaustion or runaway scans.