MCP server for analyzing git repository metrics and understanding team health
Server has 12 well-named tools with consistent verb_noun patterns (get_*, all READ_ONLY). All tools have descriptions (avg ~60 chars, baseline 194 chars) and input schemas with typed parameters. However, descriptions are significantly below baseline length and lack context on WHEN to use each tool or dependencies between them. Output schemas are not documented. Error handling is minimal, no recovery guidance, no actionable error messages. Parameter descriptions are present but terse. No tool annotations (readOnlyHint, etc.) despite all being read-only. Missing pagination guidance for tools returning lists.
Get detailed metrics per author
Analyze code ownership and bus factor
Analyze team collaboration patterns
Analyze commit frequency patterns by day and hour
Get commit statistics for a repository
Analyze conventional commit usage and release patterns
Get files with most changes (churn)
Descriptions are 55 - 60 chars, well below baseline 194 chars. Missing WHEN to use each tool, dependencies, and prerequisites. E.g., 'Get commit statistics for a repository' does not explain when to call this vs get_team_summary or get_author_metrics.
Output schemas not documented. Handlers return structured objects (e.g., handleGetCommitStats returns {commits, additions, deletions, filesChanged, netChange}) but LLM has no visibility into return types. Prevents downstream tool chaining and forces LLM to guess field names.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Code quality indicators (commit size, reverts, etc)
Get comprehensive team performance summary
Identify technical debt indicators
Track velocity trends over time
Verify server is operational
No tool annotations despite all tools being read-only. Missing readOnlyHint in tool definitions. Prevents agents from understanding safety profile and optimizing execution strategy.
Error handling is minimal. Handlers call validateRepoPath() and validateDate() but no error messages shown in source. No recovery guidance (e.g., 'Invalid repo path. Ensure path exists and is a git repository'). LLM cannot self-correct on validation failures.
No pagination support documented. Tools like get_file_churn accept 'limit' parameter but no offset/cursor or total_count returned. Large repositories could return thousands of files; no guidance on handling result size.