MCP server for news search, sentiment analysis, and email delivery with attachments
NewsServer has significant definition quality gaps. Tool names are descriptive (search_google_news, analyze_sentiment, send_email_with_attachment), but descriptions are verbose and include implementation details rather than LLM-optimized guidance. Parameter schemas are present with type definitions, but descriptions lack clarity on constraints, formats, and error recovery. No output schemas documented. Error handling is minimal, tools return status strings without actionable guidance for LLM recovery. The analyze_sentiment and send_email_with_attachment tools exhibit poor separation of concerns (sentiment analysis + file writing; email sending + attachment handling). No pagination, no structured output, no tool annotations.
对传入的一段文本内容进行情感分析,并保存为指定名称的 Markdown 文件。 参数: text (str): 新闻描述或文本内容 filename (str): 保存的 Markdown 文件名(不含路径) 返回: str: 完整文件路径(用于邮件发送)
使用 Serper API(Google Search 封装)根据关键词搜索新闻内容,返回前5条标题、描述和链接。 参数: keyword (str): 关键词,如 "小米汽车" 返回: str: JSON 字符串,包含新闻标题、描述、链接
发送带附件的邮件。 参数: to: 收件人邮箱地址 subject: 邮件标题 body: 邮件正文 filename (str): 保存的 Markdown 文件名(不含路径) 返回: 邮件发送状态说明
Descriptions are verbose and implementation-focused rather than LLM-optimized. They include parameter details and return formats inline instead of using structured parameter descriptions. Descriptions exceed 200 chars and bury key intent.
No output schemas documented. LLMs cannot predict return structure or plan downstream calls. search_google_news returns JSON string; analyze_sentiment returns file path; send_email_with_attachment returns status string, all undocumented.
Parameter descriptions lack format constraints and validation rules. 'keyword' has no length limits; 'filename' has no format spec; 'to' has no email validation hint. LLMs cannot self-correct invalid inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Error handling returns status strings without recovery guidance. 'Missing SERPER_API_KEY' tells LLM nothing about next steps. No error categorization (retryable vs fatal). No actionable error messages.
Credentials exposed in environment variables without server-side injection pattern. SMTP_SERVER, EMAIL_USER, EMAIL_PASS, SERPER_API_KEY, DASHSCOPE_API_KEY all read directly in tool code. If agent logs parameters, secrets leak.