A comprehensive MCP server for Neo4j that provides tools for querying, managing, and analyzing Neo4j graph databases
Neo4j MCP server has 20 tools with consistent naming (verb_noun pattern) and basic schemas. However, descriptions are generic and lack LLM-optimization guidance. Most parameter descriptions are minimal (10-30 chars), falling below the 72-char baseline. Output schemas are undocumented, LLMs cannot infer what fields to expect from responses. Error handling is absent; tool implementations catch exceptions but return generic error text without recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification in the metadata. Security concerns: write/destructive tools lack confirmation patterns or dry-run support.
Create a constraint on a property of a node label
Create an index on a property of a node label
Drop a constraint from the database
Drop an index from the database
Explain a Cypher query execution plan
Find all paths between two nodes
Find nodes in the database by label and properties
Output schemas undocumented. LLMs cannot infer response structure (fields, types, pagination). Responses are returned as TextContent with raw JSON strings, forcing LLMs to parse unstructured text.
Destructive tools (drop_index, drop_constraint) lack confirmation or dry-run patterns. Agents can irreversibly delete indexes/constraints without user approval.
No tool annotations. Tools marked READ_ONLY, WRITE, DESTRUCTIVE in metadata but not exposed via MCP readOnlyHint/destructiveHint. LLMs cannot distinguish safe from risky tools.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
Find paths between nodes in the database
Find relationships in the database by type and properties
Find the shortest path between two nodes
Get all constraints in the database
Get information about the Neo4j database, including version, edition, and address
Get statistics about the Neo4j database, including node and relationship counts
Get all indexes in the database
Get a list of all node types in the graph database, their attributes with name, type, and relationships to other node types
Get the number of nodes for each label in the database
Get the number of relationships for each type in the database
Get sample data from the database
Execute Cypher read queries to read data from the database
Execute updating Cypher queries to modify the database
Generic error handling. Exceptions caught and returned as plain text ('Error: {str(e)}') without recovery guidance, error classification, or actionable next steps.
Parameter descriptions too brief. 'The Cypher query to execute' (28 chars) and 'The node label to search for' (28 chars) lack format/constraint guidance. Baseline is 72 chars.