MCP server that provides sports news and team information from ESPN API, deployed as an Azure Container App with SSE transport and API key authentication
Server has 6 tools with critical definition gaps. Five tools (get_cfb_news, get_nfl_news, get_mlb_news, get_nhl_news, get_nba_news) have empty input schemas {} with no parameters documented, violating the constrained-input pattern. Descriptions are present but generic (10-50 chars), below the 50-200 char baseline for LLM-optimized tools. get_nhl_team_info accepts a 'team' parameter but the implementation ignores it (hardcoded 'toronto'), creating a broken tool contract. No output schemas documented. Error handling returns generic strings without recovery guidance. Tool names follow verb_noun convention (positive), but lack specificity about what data is returned.
Get news articles for college (NCAA) football.
Get news articles for Baseball (MLB).
Get news articles for Basketball (NBA).
Get news articles for the National Football League (NFL).
Get news articles for Hockey (NHL).
Get information about a specific NHL team.
Five tools have empty input schemas ({}). Tools: get_cfb_news, get_nfl_news, get_mlb_news, get_nhl_news, get_nba_news.
get_nhl_team_info parameter 'team' is documented but ignored in implementation (hardcoded URL 'toronto'). Tool contract is broken, LLM passes 'team' but it has no effect.
Descriptions are 10-50 characters, below the 50-200 char baseline for LLM-optimized tools. Descriptions lack WHEN to use, prerequisites, or return value hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
No output schemas documented. LLMs cannot plan downstream calls or extract fields. Responses are formatted strings, not structured objects with typed fields.
Error handling returns generic strings ('Unable to fetch articles or no articles found') without recovery guidance. Per pattern:recovery-guide, errors must tell LLM what to do next.