MCP server providing semantic search and vector database capabilities using Weaviate
Index provides 7 well-structured tools with complete JSON schemas and detailed descriptions. Tool names follow verb_noun convention (search_index, index_new, find_similar_in_index). Descriptions are comprehensive (194 - 500+ chars) and explain WHEN to use each tool. All parameters have type definitions and descriptions. However, several critical gaps reduce the score: (1) descriptions lack actionable error recovery guidance; (2) no tool annotations (readOnlyHint/destructiveHint) despite clear risk levels; (3) output schemas documented in text but not formally in JSON Schema; (4) some parameter descriptions could be more concise per LLM optimization guidelines (50 - 200 chars ideal); (5) no explicit idempotency guarantees for write operations.
Retrieval-Augmented Generation - search your content then generate direct answers using an LLM. Use this tool when you want direct answers to questions, not just search results. Differs from search tools by returning AI-generated answers with source citations instead of raw documents. Args: question: Natural language question to answer using your indexed content maxSources: Maximum number of source documents to retrieve for context (1-10, default: 5) filters: Optional search filters to limit source documents answerLength: Preferred answer length ('short', 'medium', 'detailed', default: 'medium') includeSources: Whether to include full source document citations (default: true) Returns: RagQueryResult object containing: answer: AI-generated answer to the question sources: Array of source documents used with relevance scores and citations question: Original question asked sourceCount: Number of sources used for the answer confidence: Confidence score for the answer quality (0.0-1.0) executionTime: Total execution time including search and generation Raises: Exception: If question is missing, no relevant sources are found, or there is an error during search or answer generation
Bulk index multiple files at once for efficient project indexing. This tool is optimized for indexing many files quickly by: - Reading files directly from disk - Processing multiple files in a single operation - Auto-detecting file metadata (extension, language, etc.) - Providing batch progress reporting Args: filePaths: Array of file paths to index project: Project name for all files repository: Optional repository name branch: Optional git branch name tags: Optional array of tags to apply to all files autoDetect: Whether to auto-detect language and other metadata (default: true) continueOnError: Whether to continue if individual files fail (default: true) Returns: BulkIndexResult object containing: total: Total number of files processed successful: Number of successfully indexed files failed: Number of failed files results: Array of individual file results with IDs or errors Example: { "filePaths": ["src/server.ts", "src/client.ts"], "project": "my-app", "tags": ["backend", "typescript"], "autoDetect": true }
Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools explicitly declare Risk levels (READ_ONLY, WRITE, DESTRUCTIVE) in metadata but do not expose these as MCP tool annotations, preventing clients from applying safety policies.
Output schemas documented in text descriptions but not formally declared in JSON Schema. LLMs cannot parse unstructured text descriptions of return types; formal schemas enable downstream tool chaining and validation.
Error handling descriptions lack actionable recovery guidance. Errors state what failed but do not guide the LLM on next steps (e.g., 'If metadata is invalid, check schema at...' or 'Retry with smaller batch size').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Find content similar to a specific document or code snippet for content discovery. Use this tool to discover related content, find code patterns, or locate similar implementations. Differs from search tools by taking reference content instead of text queries. Args: referenceContent: The content to find similar items for (document text, code snippet, etc.) referenceId: Optional Weaviate document ID to use as reference (alternative to referenceContent) similarityThreshold: Minimum similarity score (0.0-1.0, default: 0.7) filters: Optional search filters object limit: Maximum number of similar items to return (1-50, default: 10) Returns: SimilarContentResult object containing: results: Array of similar content with similarity scores and metadata referenceContent: The content used as reference (truncated for display) referenceId: Document ID if used as reference similarityThreshold: Threshold used for filtering filters: Applied filters executionTime: Search execution time in milliseconds Raises: Exception: If neither referenceContent nor referenceId is provided, or if there is an error finding similar content
Update an existing document in the index with new metadata or content. Args: id: Document ID to update (required) content: Updated document content (optional) metadata: Updated document metadata object (optional) - see metadata schema for available fields image: Base64 encoded image data for visual content (optional) Returns: UpdateDocumentResult object containing: id: Document ID that was updated success: Boolean indicating success or failure message: Status message describing the result Raises: Exception: If id is missing, document not found, or if there is an error updating in Weaviate
Index new content with metadata for semantic search. Args: content: Document content to be indexed (optional if filePath provided) filePath: Path to file to read and index (optional if content provided) metadata: Document metadata object (required) - see metadata schema for available fields image: Base64 encoded image data for visual content (optional) Returns: AddDocumentResult object containing: id: Generated document ID in Weaviate success: Boolean indicating success or failure message: Status message describing the result Raises: Exception: If neither content nor filePath is provided, or if metadata is invalid
Universal search combining semantic (vector) and keyword (BM25) matching for optimal results. When to Use Hybrid Search? Hybrid search queries are ideal for a search system that wants to leverage the power of semantic search capabilities but still rely on exact keyword matches. For example, the example search query "How to catch an Alaskan Pollock" from before would lead to better results with a hybrid search query than with a common keyword search or even a semantic search query. Advantages of Hybrid Search Hybrid search engines bring several advantages that make it a powerful approach for modern search systems, especially when both semantic understanding and exact keyword matching are essential. This dual approach excels in handling diverse user queries, whether they are domain-specific queries requiring exact matches or semantic queries that rely on context and meaning. For instance, in scenarios where users might include ambiguous phrases, domain-specific terms, or misspellings in their queries, hybrid search ensures relevant results by understanding the query's intent while still honoring exact matches for critical keywords. In addition to its flexibility, hybrid search significantly improves the user experience by reducing the need for perfectly phrased queries. Dense vector embeddings capture the semantic meaning behind a search query, making it easier to handle multi-concept or even multilingual queries. Its ability to seamlessly integrate semantic relationships with precise keyword matches ensures more accurate and contextually relevant outcomes. This makes hybrid search engines an ideal choice for applications in e-commerce, customer support, and other search-driven domains. Args: query: Search query string for both semantic and keyword matching alpha: Balance between vector and keyword search (0.0 = pure keyword, 1.0 = pure semantic, 0.7 = balanced, default: 0.7) filters: Optional search filters object limit: Maximum number of results to return (1-100, default: 10) offset: Pagination offset (default: 0) Returns: HybridSearchResult object containing: results: Array of search results with both semantic and keyword relevance scores total: Total number of results found query: Original search query alpha: Alpha value used for search balance filters: Applied filters executionTime: Search execution time in milliseconds Raises: Exception: If there is an error performing the hybrid search or connecting to Weaviate
Remove a document from the index by its ID. Args: id: Document ID to delete (required) Returns: DeleteDocumentResult object containing: id: Document ID that was deleted success: Boolean indicating success or failure message: Status message describing the result Raises: Exception: If id is missing, document not found, or if there is an error deleting from Weaviate
Destructive operations (unindex, bulk_index with continueOnError=false) lack confirmation or dry-run support. Agents can permanently delete indexed content without a safety gate.
Parameter descriptions for 'metadata' object are vague ('Document metadata object (required) - see metadata schema for available fields'). The actual metadata schema is not visible in the provided code, forcing LLMs to guess valid fields.