MCP server for soccer news with RAG and sentiment analysis
Soccer News MCP has 9 tools with complete input schemas and descriptions, but quality is uneven. Tool names follow verb_noun convention (fetch-feeds, search-news, analyze-sentiment). Descriptions are present but brief (avg ~60 chars, below the 194-char baseline). Parameter descriptions exist but lack detail on constraints, formats, and valid ranges. Output schemas are not documented, LLMs cannot predict response structure. Error handling is basic (generic error messages). No tool annotations (readOnlyHint/destructiveHint). Security: no secrets in params (good), but no permission gates or audit logging visible. Composition is reasonable, tools are single-purpose, but some lack chaining IDs in responses.
Analyze sentiment of articles using ML model
Search famous manager quotes using semantic search
Fetch all active RSS feeds and store articles with embeddings
Get manager quotes filtered by topic
Get a random famous manager quote
Get recent news articles with optional sentiment filtering
List all RSS feed sources
Add, update, or remove RSS feed sources
Search news articles using semantic search with embeddings
Output schemas not documented. LLMs cannot predict response structure (articles, quotes, metadata fields). Forces agents to guess field names and types.
Parameter descriptions lack constraint details. 'limit' has no min/max bounds; 'sentiment' has no enum values listed; 'action' in manage-sources lacks valid options (add|update|remove). LLMs will hallucinate invalid values.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes. fetch-feeds and manage-sources modify state but lack destructiveHint.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
manage-sources combines add/update/remove into one tool with an 'action' enum. This violates single-responsibility. Should split into create-source, update-source, delete-source for clarity and independent error handling.
Error handling is generic. Tool handlers return JSON errors but do not guide recovery. E.g., if sentiment analysis fails, no suggestion to retry or check article IDs. Agents cannot self-correct.