A Spring Boot-based MCP server for reading and sending emails via IMAP and SMTP protocols
This server has critically low definition quality. Both tools have Chinese descriptions that are extremely terse (4-6 characters), far below the 10-character minimum and 194-character production baseline. Neither tool has documented output schemas. Tool definitions appear to be automatically inferred from Java annotations rather than explicitly registered with comprehensive metadata. Input schemas ARE present and properly typed, which prevents a complete failure, but the lack of meaningful descriptions, missing output documentation, and absence of error handling guidance make this server unsuitable for production use. The tools expose credentials (username, password, host, port) as parameters, a critical security violation that should use server-side injection instead.
读取邮件
发送邮件
Tool descriptions are non-compliant Chinese text under 20 characters ('读取邮件' = 4 chars, '发送邮件' = 4 chars). Production baseline is 194 chars minimum 34 chars. LLMs cannot determine when or why to select these tools.
No output schemas documented. LLMs cannot plan downstream tool calls or extract the right data from responses. Both tools need explicit return type documentation (e.g., read returns list of email objects with fields; sendEmail returns success status and message ID).
Credentials exposed as tool parameters: username, password, host, port appear in both tools. Per pattern:secret-injection, credentials must NEVER be tool parameters, agent traces log all parameters, leaking secrets into logs. Use server-side environment variable or vault injection instead.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 33 | - | v1 |
No parameter descriptions provided in any tool. LLMs cannot infer meaning from bare names like 'num', 'host', 'useSsl'. Parameter 'num' is ambiguous, is it max emails, offset, or page size? Pattern requires every parameter have a non-empty description.
No error handling guidance. Tools do not indicate what errors are retryable, whether to ask the user, or how to recover. A failed email send returns what? An undeliverable address? Network timeout? LLM gets no actionable next step.
No validation rules or constraints documented. Parameter 'port' accepts any integer, LLM could pass 0, 999999, or negative values. Parameter 'num' for read has no bounds, LLM could request 1M emails. Unbounded numerics break APIs and cause timeouts.
Tool names are ambiguous: 'read' does not clearly indicate 'read_email' or 'fetch_email'. 'sendEmail' uses camelCase instead of snake_case verb_noun convention.
Parameter 'to' in sendEmail accepts a single email string, no clear support for CC/BCC recipients. If a user says 'send to Alice and Bob', does the agent call the tool twice or pass a comma-separated string? Tool should clarify or accept arrays.