MCP Server for Research Assistant with Vector Database Management. Allows saving, searching, listing, deleting, and retrieving information about research data organized by topics using ChromaDB and OpenAI embeddings.
The server implements 5 tools with explicit FastMCP registration and visible schemas. However, critical issues prevent a higher score: (1) Parameter descriptions are present but generic and lack actionable constraints (e.g., 'content' is described as 'List of text content to save' with no guidance on format, length, or expected size); (2) Output schemas are undocumented, tools return free-form strings rather than structured objects, forcing LLMs to parse unstructured text; (3) Error handling returns status messages but provides no recovery guidance or error classification; (4) The save_research_data and delete_research_topic tools are destructive but lack confirmation/dry-run patterns; (5) Tool names are verb-prefixed and clear, but descriptions are brief (34 - 92 chars, below the 194-char baseline) and lack 'WHEN to use' context. Per-tool scores average to 52, placing this server firmly in the 'D' range (50 - 59 Poor).
Delete a research topic and all its data.
Get detailed information about a research topic.
List all available research topics (vector databases).
Save research content to vector database for future retrieval.
Search through saved research data using semantic similarity.
No documented output schemas. All tools return free-form strings (e.g., 'Successfully saved...' or 'Error saving...'). LLMs cannot extract structured data for downstream tool calls or plan multi-step workflows. Pattern requires tools to document return types with typed fields.
Parameter descriptions lack actionable constraints. 'content' is described as 'List of text content to save' but does not specify: max items, max text length per item, encoding, or minimum length. 'query' in search_research_data is 'Search query' with no guidance on format or length. Descriptions must state format, range, and constraints directly in the description text.
Destructive operations (save_research_data, delete_research_topic) lack confirmation or dry-run patterns. No recovery guidance if user mistakes a topic name. Pattern 'confirmation-request' recommends a dry-run step or explicit confirmation for irreversible operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Error responses return status messages but provide no recovery guidance. E.g., 'Error saving research data: <str(e)>' or 'No research data found' do not tell the LLM what to do next or whether the error is retryable. Pattern 'recovery-guide' requires errors to indicate: can I retry? Should I ask the user? Available alternatives?
Tool descriptions are too short (34 - 92 chars, below 194-char baseline) and lack 'WHEN to use' guidance. E.g., 'Save research content to vector database for future retrieval.' does not explain: when should the LLM call this vs search? What is a typical use case? When is the DB full? Descriptions should answer WHAT, WHEN, and WHAT IT RETURNS.
search_research_data returns results as a single formatted string (e.g., 'Result 1 (Similarity: 0.850):\n...') rather than a structured array with per-result fields (content, similarity_score, topic, doc_id). LLMs cannot extract individual results for comparison or downstream processing. Pattern 'response-shaper' requires structured objects.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are not declared. 'delete_research_topic' should be marked destructiveHint=true; 'search_research_data' and 'list_research_topics' should be marked readOnlyHint=true. These hints help LLMs reason about tool safety and plan retry strategies.
'topic' parameter is optional with default='default', but the tool description does not explain the implications of omitting it. If a user says 'save this research' without specifying a topic, the tool silently creates a 'default' topic. This is error-prone. Default values should not cause silent behavior changes; document them explicitly.