Google ADK with Qdrant MCP - A RAG (Retrieval Augmented Generation) server that integrates Google ADK with Qdrant vector database via MCP protocol
Single tool with adequate naming and reasonable schema, but descriptions lack depth for LLM-guided tool selection. The tool name 'qdrant-find' follows verb conventions but lacks the clarity of 'search_documents' or similar. Input schema is present with proper types and reasonable defaults, but parameter descriptions are minimal (10-20 chars) and lack context about what results mean or when to use threshold vs limit. No documented output schema, pagination guidance, or error recovery instructions. Descriptions fall short of the 50-200 char baseline for A-grade tools.
Find documents in Qdrant vector database using semantic search
Minimal parameter descriptions lack LLM guidance. 'query_text' lacks context: is this free-form natural language, a structured query, or an embedding vector? What does the threshold 0.5 represent (cosine similarity on [0,1]? confidence 0-100?)? LLM cannot infer how to set limit and threshold without explicit ranges and semantics.
No documented output schema. The tool returns search results from Qdrant but the response structure is not specified. Does it return a list of documents with fields [id, text, score, metadata]? A single document? Count + results? LLM has no way to know what fields to extract or pass downstream.
No error handling guidance or recovery instructions. What if the query is empty? The threshold is invalid (>1.0)? The Qdrant server is unreachable? No documentation tells the LLM what went wrong or what to do next. Violates pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Tool description 'Find documents in Qdrant vector database using semantic search' is generic (45 chars). Does not explain WHEN to call this vs other retrieval tools, what makes it suitable for RAG workflows, or what 'semantic search' means to an LLM unfamiliar with vector databases. Should be 50-200 chars with context.
Parameter 'limit' (max results) lacks guidance on cost/benefit trade-off. Returning 5 results by default is reasonable, but no documentation explains: Can limit exceed 100? What is the cost or latency impact of large limits? This forces LLM to guess or experiment.
No pagination or result-streaming guidance. If a user query matches 1000+ documents, does the tool return all of them? Only the top 5? Is there a way to get the next batch? This is critical for RAG systems that must fetch large candidate sets efficiently.
No documentation of what 'threshold' represents or how it interacts with 'limit'. If threshold=0.5 and top result scores 0.4, are 0 results returned? Or does the tool ignore threshold and return the top-limit results anyway? This ambiguity will cause misuse.