MCP-сервер, дающий ИИ-агенту доступ к прогнозу погоды
Three tools with complete input schemas and descriptions, but descriptions are in Russian and lack LLM-optimized structure. Tool names follow verb_noun pattern (current_weather, forecast, locate). Schemas properly typed with string/integer. However, descriptions are terse (avg 60 chars) and lack actionable context for LLM selection. Error handling returns user-friendly text but lacks recovery guidance. No output schema documentation. Parameter descriptions are minimal. Security is solid (no secrets exposed, input sanitization present), but composition could be improved, locate() duplicates find_place logic from other tools.
Текущая погода в указанном городе.
Прогноз погоды на несколько дней вперёд.
Проверяет, что населённый пункт существует, и уточняет страну.
Descriptions lack LLM-optimized structure. All three tools have descriptions under 100 chars in Russian, missing WHAT/WHEN/WHY context. 'Текущая погода в указанном городе' (current weather in specified city) does not explain when to call this vs forecast() or locate(), or what the output contains.
Output schemas not documented. Tools return formatted strings (e.g., 'Berlin: ясно, 15 °C...') but LLMs cannot parse structure from free text. No schema definition for what fields are present in the response.
locate() tool name is ambiguous. 'locate' could mean find, search, or pinpoint. Verb_noun pattern suggests 'find_place' or 'search_location'. Current name does not clearly signal it validates existence and returns coordinates.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | 2026-07-28+ | v2 |
Parameter descriptions are minimal. 'days' param in forecast() has a description but lacks explicit range constraint in the description text (only in docstring). LLMs may not parse docstring constraints reliably.
Error handling returns user-friendly text but lacks recovery guidance. WeatherError exceptions are caught and returned as strings (e.g., 'Не удалось получить погоду: ...'), but do not suggest next steps or categorize errors as retryable vs fatal.