A multi-server MCP host that aggregates tools from multiple MCP servers (math, jokes, gatherings, vehicle info) and exposes them through a FastAPI interface with LangGraph agent integration
Critical gaps across naming, descriptions, and schemas. Tool names lack consistent verb prefixes (e.g., 'add' vs 'create_gathering'). Most descriptions are under 50 chars and lack context on when/why to use tools. Parameter descriptions are minimal or absent. No output schemas documented. Error handling is absent. Only 2 of 15 tools have adequate naming conventions. This server would not pass code review.
Add two numbers
Add an expense for a member
Add a new member to a gathering
Calculate reimbursements for a gathering
Close a gathering
Create a new gathering
Delete a gathering
List all gatherings
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. All 15 tools lack return type documentation.
Descriptions are critically short (10-35 chars). 'Add two numbers', 'Multiply two numbers', 'Return a joke about a subject' lack context on when/why to use tools. Baseline is 194 chars; these are 10-15% of that.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | <=2025-11-25 | v2 |
Look up vehicle information by license plate number
Multiply two numbers
Record a payment made by a member
Remove a member from a gathering
Rename an unnamed member
Show details of a gathering
Return a joke about a subject
Parameter descriptions are missing or trivial. 'Subject for the joke', 'Number of members' lack format/range constraints. No enum constraints for gathering_id format or member_name validation. LLMs cannot infer valid input ranges.
Destructive operations (delete_gathering, remove_member) lack confirmation/dry-run support and error recovery guidance. No documentation of what happens on failure or how to undo.
lookup_vehicle accepts license_plate as integer but real license plates are strings/alphanumeric. Type mismatch will cause LLM to pass invalid values. Parameter type should be string with format constraint.