MCP server for semantic document search using ChromaDB vector database and OpenAI embeddings
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output structure. query_document has a reasonable description (89 chars) and schema with two parameters, but lacks output schema documentation. get_collection_info has minimal description (47 chars) and no visible parameters or output schema. Neither tool includes error handling guidance, recovery hints, or structured output documentation. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. Parameter descriptions are present but generic. No pagination support visible despite semantic search returning multiple results. Baseline: 549 production tools average 194 chars for descriptions and 100% have documented return types, this server falls short on both counts.
Get information about the ChromaDB collection
Search for information in the document based on semantic similarity
Output schemas not documented. LLMs cannot plan downstream calls or extract structured data from results. query_document returns search results but no schema visible; get_collection_info returns collection metadata but structure undefined.
get_collection_info lacks meaningful description (47 chars, below 100-char minimum). LLMs cannot determine when to call it or what it reveals. Should explain: 'Returns collection statistics (document count, embedding model, last updated) to help plan search strategies.'
No error handling guidance. If query_document fails (e.g., ChromaDB unavailable, invalid query), no recovery hints provided. Should include: 'If search fails, verify ChromaDB is running and collection is loaded. Try get_collection_info to check status.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
query_document num_results parameter lacks constraints. No min/max bounds specified. Should state: 'Number of results to return (1 - 50, default: 5)' to prevent LLMs from requesting thousands of results.
No tool annotations present. query_document and get_collection_info should be marked with readOnlyHint=true to signal to agents they are safe to call without side effects. Enables agent optimization and safety reasoning.