MCP server for a personal knowledge notes layer with hybrid search (ILIKE + FTS + vector similarity) backed by PostgreSQL/Supabase
Server has 4 well-named tools with clear descriptions (avg 150 chars, within baseline 194). All tools have input schemas with typed parameters and descriptions. However, output schemas are not documented, LLMs cannot predict return structure. Parameter descriptions lack format constraints (e.g., UUID format, enum values for status/type). Error handling and recovery guidance are absent. No tool annotations (readOnlyHint/destructiveHint). Composition is sound: tools chain logically (search → add → update). Security concern: embedding vectors are exposed as parameters, risking token leakage if logged.
Add a new note to the knowledge base with topic, content, type, status, and project metadata. Optionally include embedding vector.
Search notes with hybrid 3-channel search (ILIKE, FTS, vector similarity) using Reciprocal Rank Fusion. Supports filtering by type, status, and project.
Summarize activity by project, returning topic counts and recent activity
Update the status of an existing note (new, in_progress, done, cancelled)
Output schemas not documented. LLMs cannot predict return structure (fields, types, pagination). Breaks downstream tool chaining and forces agents to guess field names.
Parameter constraints missing. 'status' and 'type' accept free-form strings instead of enums. 'id' lacks UUID format hint. 'match_count' unbounded (no min/max). Invites hallucinated invalid values.
Embedding vectors exposed as tool parameters. If agent calls are logged (standard practice), 1536-dim vectors leak into traces. Should be server-side injected or computed async.
No error handling or recovery guidance. Tools lack descriptions of failure modes, retryability, or next steps. E.g., 'add_note' does not document what happens if embedding generation fails.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
No tool annotations. Destructive tools (add_note, update_status) lack destructiveHint. Read-only tools (get_notes, get_topics) lack readOnlyHint. Agents cannot distinguish safe from unsafe operations.