Multi-server MCP architecture demonstrating patterns for connecting Google ADK agents to multiple MCP servers (PostgreSQL and Weather APIs)
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output structure. query_data lacks input validation guidance and error recovery hints. get_current_weather has minimal description (89 chars, below 194-char baseline). Neither tool documents output schema or pagination. No tool annotations (readOnlyHint, idempotentHint). Parameter descriptions are present but sparse. Error handling is not visible in tool definitions. Overall structure is minimal for production use.
Gets the current weather for a specified location. It first finds the latitude and longitude for the location, then fetches the current weather conditions.
Executes a read-only (SELECT) SQL query against the database and returns the results as a string (currently CSV-formatted).
Output schemas not documented. Neither tool specifies what fields/structure the LLM should expect in responses. LLMs cannot plan downstream calls or extract data reliably without knowing response shape.
get_current_weather description is 89 characters (below 194-char baseline). Lacks WHEN to use it, WHAT it returns, and any prerequisites. Does not explain the two-step process (geocode → fetch weather) or error cases.
query_data parameter 'sql' lacks format/constraint guidance. No mention of allowed query types, result limits, timeout, or what happens on syntax errors. Description should state 'SELECT only, read-only transaction enforced' and 'Results capped at N rows'.
No tool annotations (readOnlyHint, idempotentHint, destructiveHint). Both tools are read-only and idempotent, but this is not declared in the tool definition. LLMs cannot infer safety properties without explicit hints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | <=2025-11-25 | v2 |
Error handling not visible in tool definitions. No guidance on recovery (e.g., 'If query fails, check syntax' or 'If location not found, try a broader search'). Agents cannot self-correct without actionable error messages.