Agricultural Weather Alert System MCP Server for Claude Desktop providing weather forecasts, crop calendar management, and alert generation for Bihar farmers
Bihar AgMCP exhibits significant definition quality gaps. Tool naming is inconsistent (duplicate 'get_crop_calendar' and 'generate_weather_alert' across files). Descriptions vary widely in quality, some are adequate (generate_weather_alert: 'Generate comprehensive weather alerts...'), but many lack specificity or are generic. Parameter descriptions are present but often minimal. Critical issue: API keys exposed as parameters (get_accuweather_current_conditions, get_google_weather_current_conditions, generate_weather_alert) violates secret-injection pattern. Output schemas are not documented. Error handling is absent, no recovery guidance or categorization. Tool composition shows poor separation of concerns (generate_weather_alert appears twice with different signatures). No pagination support despite tools returning lists. Baseline: 549 production tools average 194 chars for descriptions; this server's descriptions range 30-150 chars, many at the low end.
Analyzes weather trends for a given location and period
Estimate current crop stage based on planting date and current date
Generate messages for different communication channels (SMS, WhatsApp, USSD, etc.)
Generates a weather alert using an LLM
Generate comprehensive weather alerts for Bihar districts with crop-specific recommendations
Get current weather conditions from AccuWeather API
Get crop calendar information for a region and crop type
API keys exposed as tool parameters (get_accuweather_current_conditions, get_google_weather_current_conditions, generate_weather_alert). Credentials must use server-side secret injection via environment variables, not parameters. Agent traces log all parameters, secrets leak into logs and prompt history.
Duplicate tool definitions: 'get_crop_calendar' defined in both bihar_agmcp_server.py and tools/crop_calendar_tools.py with different signatures. 'generate_weather_alert' defined in both bihar_agmcp_server.py and tools/alert_generation_tools.py with different parameters. LLMs cannot disambiguate, consolidate into single canonical definitions.
No output schemas documented. Tools return data but LLMs cannot plan downstream calls without knowing response structure. Document return types for all 16 tools, specify fields, types, and whether results are paginated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Get detailed crop calendar information including planting and harvesting schedules
Get current weather conditions for specific coordinates
Get crop information for a specific Bihar district including seasonal recommendations
Get current weather conditions from Google Weather API
Get historical weather data for a location and date range
Get prominent crops for a region and season
Get current weather data for specific coordinates in Bihar
Get 7-day weather forecast for a location
Prioritizes a list of alerts based on urgency factors
No error handling or recovery guidance. Tools fail silently or return generic errors. Implement error categorization (retryable vs user-fixable vs fatal) and include actionable recovery hints. E.g., 'District not found. Valid districts: Patna, Gaya, ...'
Parameter 'alert_data' in generate_agent_messages is an untyped object with no schema. LLMs cannot construct valid input. Define explicit required fields (location, crop, weather_data, etc.) with types and descriptions.