An MCP server for managing sticky notes with email functionality
Server has 4 tools with basic descriptions and schemas, but significant quality gaps. Tool naming is inconsistent (clear_note vs add_note vs read_notes vs send_mail, mixing verb_noun with noun patterns). Descriptions are present but generic (10-50 chars for most tools, below the 50-200 char LLM-optimized baseline). Parameter descriptions exist but lack constraints, formats, and validation guidance. Critical security issue: send_mail exposes credentials as parameters. No error handling guidance, no output schemas documented, no pagination support. Schemas are minimal, only message param has description; senderMailId, senderPassword, etc. lack type info in visible schema. Overall pattern adherence is poor.
Append a new note to the sticky note file.
Clears all the notes from sticky note file
Read and return all notes from the sticky note file.
Delivers the message from the sender mail to the reciever mail
Credentials exposed as tool parameters (senderMailId, senderPassword in send_mail). Secrets in parameters are logged and leak into traces. Must use server-side secret injection via environment variables.
send_mail lacks input schema documentation. Parameters senderMailId, senderPassword, recieverMailId, subject, body have no visible type constraints or format guidance. Schema score capped at 20 due to missing type info.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract structured data. clear_note and add_note return simple strings, but read_notes and send_mail return unstructured text that requires parsing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Inconsistent tool naming. clear_note (verb_noun), add_note (verb_noun), read_notes (verb_noun), but send_mail (verb_noun). Naming is consistent in pattern but semantically weak, 'clear_note' is ambiguous (clear one note? all notes?). Descriptions do not disambiguate.
No error handling guidance. send_mail catches exceptions and returns error strings, but does not categorize errors (retryable vs user-fixable vs fatal) or provide recovery steps. LLM cannot determine next action on failure.