An MCP server that exposes a Notes API built with oRPC, Hono, and OpenTelemetry. Provides CRUD operations and search functionality for notes through MCP tools.
This server demonstrates solid quality with well-structured tool definitions, proper JSON Schema validation, and clear naming conventions. All 6 tools are explicitly registered with descriptions and input schemas (except health, which is read-only). Descriptions are concise and action-oriented. However, parameter descriptions are sparse or missing, most input objects lack field-level documentation beyond type information. Output schemas are inferred from Zod but not explicitly documented in the tool definitions. Error handling is present but minimal (only NOT_FOUND documented for 2 tools). No tool annotations present. Missing descriptions for most input parameters is the primary quality gap.
Health check endpoint
Create a new note
Get a note by UUID
List all notes
Remove a note by UUID
Search notes by query
Input parameter descriptions are missing or minimal. The createNote tool has 'title' and 'content' parameters, but their descriptions (e.g., purpose, constraints, when required) are not visible in tool metadata. Only 'query' in searchNote has a description.
No tool annotations present (readOnlyHint, destructiveHint, idempotentHint). While risk levels are declared in the evaluation metadata (READ_ONLY, WRITE, DESTRUCTIVE), they are not exposed to the LLM via MCP tool annotations. This prevents the agent from making informed decisions about side effects and retry safety.
Output schemas are not explicitly documented in tool definitions. While Zod schemas exist in the codebase (noteSchema, createNoteSchema), the MCP tool definitions do not include explicit output schema documentation. LLMs cannot see what fields to expect in responses.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2025-06-18+ | v2 |
Minimal error handling guidance. Only notes_getNote and notes_removeNote document NOT_FOUND errors. The descriptions do not guide the LLM on what to do next (e.g., 'Try search_notes() to find a matching note'). Most tools have no error recovery hints.
No pagination support documented. notes_listNotes will return all notes without limit. If the notes collection grows, response size could exhaust context windows. No limit, offset, or cursor parameters present.