A Model Context Protocol server for development workflow management
Cursor Buddy MCP shows mixed quality. All 6 tools have explicit registrations with descriptions and schema definitions visible in cmd/buddy-mcp/main.go. However, there are significant gaps: (1) Parameter descriptions are often generic or missing full context, e.g., 'validate_query' in buddy_get_database_info lacks guidance on what constitutes a valid query or what happens if validation fails. (2) Tool descriptions lack WHEN-to-use guidance and error recovery hints. (3) Output schemas are completely undocumented, no indication of what fields are returned or their types, violating the 'Document the output schema' requirement. (4) No actionable error messages or recovery guidance anywhere. (5) Parameter dependencies and constraints are underspecified (e.g., buddy_history 'add' action requires 'description', 'reasoning', and 'changes' but this is buried in descriptions, not enforced in schema). (6) The 'buddy_manage_todos' tool mixes list/read and update/write in one tool, violating single-responsibility. (7) Input schemas lack minLength, maxLength, pattern, and enum constraints that would prevent invalid LLM input. Overall, the server demonstrates framework competence (proper mark3labs/mcp-go usage) but lacks LLM-optimization and production hardening.
Manage file backups for safe code changes
Get database schema and connection information
Get coding rules and guidelines from the project's buddy system
Track and search implementation history
Manage project todos and track feature implementation progress
Search the project knowledge base for context and documentation
No output schemas documented. Tools register input schemas but do not describe what they return, forcing LLMs to infer field types and names from experience. This violates the 'Document the output schema' requirement and risks silent data extraction failures.
buddy_manage_todos conflates list (read-only), update (stateful), and progress (stateful) into one tool. This violates single-responsibility and makes it ambiguous which calls are idempotent. Should split into buddy_list_todos, buddy_update_todo, buddy_report_todo_progress.
Parameter descriptions lack constraint guidance. E.g., 'priority' enum (critical|recommended|optional) is declared in schema but descriptions do not explain what each priority means or when to use each. 'validate_query' in buddy_get_database_info does not explain what validation entails or what error means. LLMs cannot reason about valid inputs without this context.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 50 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
No error handling guidance. Tools have no documented error cases, recovery steps, or actionable error messages. An LLM receiving 'file not found' has no direction on whether to retry, call a different tool, or ask the user. Pattern recovery-guide is absent.
Parameter dependencies undocumented. buddy_history 'add' action requires 'description', 'reasoning', and 'changes'; 'search' requires 'query'; but these interdependencies are scattered across descriptions. No tool description states 'If action=add, you must provide description, reasoning, changes (no other params required)'. LLMs miss these constraints.
Tool descriptions are generic and lack WHEN-to-use guidance. E.g., 'Get coding rules and guidelines' does not explain: When should the LLM call this vs buddy_search_knowledge? What are rules vs knowledge? Is this for initial context or mid-task validation? This makes tool selection ambiguous.
Input schemas lack granular constraints. No minLength, maxLength, pattern, or additional numeric bounds (e.g., max_age_days should be 1 - 365, not unbounded). LLMs can pass absurd values like max_age_days=999999 or empty strings, causing tool errors.
Tool descriptions do not declare side effects. buddy_manage_todos 'update' and buddy_history 'add' modify state, but descriptions never say 'this modifies state' or 'side effects: marks todo as complete'. Agents need to know which calls are safe to retry.