Universal IMAP/SMTP mail MCP server with special handling for Netease mailboxes (163/126) including RFC2971 ID handshake support. Configured via environment variables.
Server has 5 tools with basic schemas and descriptions, but significant gaps in parameter documentation and output structure. Tool names follow verb_noun convention (list_*, read_*, search_*, send_*), which is good. However, parameter descriptions are minimal or missing entirely. For example, 'folder' and 'limit' parameters lack descriptions in the schema definitions visible in code. Descriptions are present but brief (10-30 chars for most tools), below the 50-200 char baseline for LLM-optimized descriptions. No output schemas documented. Error handling returns plain text without recovery guidance. The 'send_email' tool lacks confirmation/dry-run pattern for an irreversible operation.
列出所有邮箱文件夹。
列出某文件夹最近的邮件(默认 INBOX 收件箱,最近 10 封)。
按 uid 读取一封邮件的完整内容。
在文件夹里按关键词搜索(主题/发件人/正文)。
发送邮件。
Parameter descriptions missing or incomplete in schemas. 'folder', 'limit', 'query' parameters lack descriptions in inputSchema definitions, violating pattern:tool-description requirement that every parameter must have a description explaining what it controls.
Tool descriptions are too brief (10-30 chars). Baseline for LLM-optimized descriptions is 50-200 chars. Current descriptions like '列出某文件夹最近的邮件' lack context on WHEN to use the tool, prerequisites, or what it returns. This forces LLMs to guess at tool selection.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., uid from list_recent_emails to pass to read_email). Pattern:tool requires documenting return types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
send_email lacks confirmation/dry-run pattern for irreversible operation. Agents can accidentally send emails without verification. Pattern:confirmation-request recommends a dry-run or confirmation step for destructive operations.
Error responses are plain text without recovery guidance. Errors like 'uid not found' or 'search failed' do not tell the LLM what to do next (e.g., 'Try list_recent_emails() first'). Pattern:recovery-guide requires actionable error messages.