Neo4j MCP server that mimics a pure vector database for RAG comparison: vector search, fulltext search, no graph traversal
Single tool with good naming (verb-first: get_searchable_content) and comprehensive description (340 chars, within 10-1024 range). Input schema present with type, description, and default. However, output schema is NOT documented in the visible code, the function returns list[ToolResult] but the actual structure of those results is inferred from implementation details (vector_indexes, fulltext_indexes, property_size_warnings). This violates the critical rule that output schemas must be documented for LLMs to plan downstream calls. Tool annotations are present (readOnlyHint, idempotentHint, openWorldHint), which is a positive signal. No error handling guidance visible, if Neo4j queries fail, the ToolError is raised but recovery steps are not documented.
Returns vector and fulltext indexes with searchable node properties and size warnings. **IMPORTANT: Call this tool BEFORE using any search tools (vector_search, fulltext_search).** This tool provides: - Vector & fulltext indexes available for search - Node properties ONLY for labels that have indexes (no relationships, no non-indexed nodes) - Property types and size warnings to help you choose efficient return_properties Property size warnings help you avoid token limits when using search tools. For example, if a property has warning "avg ~100-200KB", avoid returning it unless necessary. You should only provide a `sample_size` value if requested by the user, or tuning performance.
Output schema not documented. Function returns list[ToolResult] but the structure of each result (fields, types) is not declared. LLMs cannot plan downstream tool calls without knowing what fields to extract.
Error handling lacks recovery guidance. Neo4j exceptions (ClientError, Neo4jError) are caught but the error response does not tell the LLM what to do next (retry, check credentials, adjust query, etc.).
No pagination or result limiting documented. Tool description does not state a maximum result count or pagination strategy. If many indexes/properties exist, response could exceed token limits.
sample_size parameter lacks validation constraints. Description does not specify min/max bounds. LLMs could pass absurd values (0, 1000000) that break performance or cause timeouts.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
Tool is discovery-only; no actual search tools visible in provided code. Description promises 'Call this BEFORE using any search tools (vector_search, fulltext_search)' but those tools are not shown. Incomplete tool suite.