MCP server exposing the AClimate API v3 for climate and agroclimatic data access
AClimate MCP demonstrates solid definition quality with consistent naming patterns, complete input schemas, and well-structured output models. All 7 tools follow verb_noun naming (search_, get_) and include descriptions. Input parameters are typed with descriptions. However, descriptions are brief (10-30 chars) and lack context about when to use each tool or dependencies between them. Output schemas are documented in code but not exposed in tool definitions. Error handling is present but generic. No tool annotations (readOnlyHint, destructiveHint) despite all tools being read-only.
Get available date ranges for climate data at a location
Get available climate normals (climatology) for a location
Get available indicators for a location
Get climate time series data for a location within a date range
Get climate normals (climatology) for a location by month
Get agroclimatic indicator values for a location within a date range
Search for locations by name pattern
Tool descriptions are too brief (10-30 chars). Baseline is 194 chars. Descriptions lack context about when to use each tool, dependencies, and what data is returned. E.g., 'Get available date ranges for climate data at a location' does not explain why an agent would call this before get_climate_data.
No tool annotations present. All 7 tools are read-only (Risk: READ_ONLY declared), but readOnlyHint is not set in tool definitions. This prevents clients from optimizing caching and retry logic.
Output schemas are defined in code (AvailableDateRange, ClimateSeriesResponse, etc.) but not exposed in tool definitions. LLMs cannot see what fields to expect without reading source. Baseline: 100% of A+ tools have documented return types.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
Error handling is generic (ToolError raised for SDK exceptions). Error messages do not guide recovery. E.g., if location_id is invalid, the agent receives an error but no suggestion to call search_locations_by_name first.
Tool composition lacks discovery guidance. No description explains that search_locations_by_name must be called first to obtain location_id, or that get_available_* tools should precede get_* tools to understand data availability.