MCP server for managing Choreo projects, components, and environments
Three tools with minimal descriptions (10-40 chars, well below 50-200 char baseline for LLM optimization). All tools lack input parameter descriptions entirely, critical gap per pattern:tool-description. No output schemas documented. Error handling returns raw fmt.Errorf with no recovery guidance. Tool names are verb-based (get_*) but descriptions are bare and non-actionable. No enums, constraints, or parameter validation visible. Responses use fmt.Sprintf("%v", data), unstructured text, not JSON. No pagination, no field documentation, no chaining IDs. Security: TOKEN injected via environment but passed through function calls; no audit trail.
Get components from Choreo project
Get environments from Choreo organization
Get projects from Choreo organization
No input parameter descriptions. get_components accepts projectId but provides no guidance on format, origin, or how to obtain it. LLMs cannot infer parameter meaning from names alone.
Tool descriptions are 10-40 characters, far below 50-200 char baseline. 'Get projects from Choreo organization' lacks WHEN to use, WHAT it returns, and any prerequisites. Non-actionable for LLM selection.
No output schemas documented. Responses are unstructured text (fmt.Sprintf("%v", projects)). LLMs cannot parse fields, extract IDs for chaining, or plan downstream calls. Violates pattern:response-shaper.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | <=2025-11-25 | v2 |
Error handling returns raw fmt.Errorf with no recovery guidance. 'failed to get projects: %w' tells LLM nothing about retry eligibility, user-fixable issues, or next steps. Violates pattern:recovery-guide.
No pagination support. If Choreo returns 100+ projects/components, response will be truncated or blow context window. No limit parameter, no cursor, no total count. Violates pattern:paginated-result.